xref: /PHP-8.0/ext/phar/tests/phar_decompress.phpt (revision a555cc0b)
1--TEST--
2Phar::decompress()
3--SKIPIF--
4<?php if (!extension_loaded("phar")) die("skip"); ?>
5<?php if (!extension_loaded("zlib")) die("skip zlib not present"); ?>
6--INI--
7phar.require_hash=0
8phar.readonly=0
9--FILE--
10<?php
11$fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.php';
12$fname2 = __DIR__ . '/' . basename(__FILE__, '.php') . '2.phar.gz';
13$pname = 'phar://' . $fname;
14$file = '<?php __HALT_COMPILER(); ?>';
15
16$files = array();
17$files['a'] = 'a';
18$files['b'] = 'b';
19$files['c'] = 'c';
20
21include 'files/phar_test.inc';
22
23$phar = new Phar($fname);
24
25$gz = $phar->compress(Phar::GZ);
26copy($gz->getPath(), $fname2);
27$a = new Phar($fname2);
28var_dump($a->isCompressed());
29$unc = $a->compress(Phar::NONE);
30echo $unc->getPath() . "\n";
31$unc2 = $gz->decompress();
32echo $unc2->getPath() . "\n";
33$unc3 = $gz->decompress('hooba.phar');
34echo $unc3->getPath() . "\n";
35$zip = $phar->convertToData(Phar::ZIP);
36ini_set('phar.readonly', 1);
37try {
38    $gz->decompress();
39} catch (Exception $e) {
40    echo $e->getMessage() . "\n";
41}
42try {
43    $zip->decompress();
44} catch (Exception $e) {
45    echo $e->getMessage() . "\n";
46}
47?>
48--CLEAN--
49<?php
50unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php');
51unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.zip');
52unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.hooba.phar');
53unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar');
54unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.gz');
55unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '2.phar.gz');
56unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '2.phar');
57?>
58--EXPECTF--
59int(4096)
60%sphar_decompress2.phar
61%sphar_decompress.phar
62%sphar_decompress.hooba.phar
63Cannot decompress phar archive, phar is read-only
64Cannot decompress zip-based archives with whole-archive compression
65