1--TEST--
2Phar: PharFileInfo compression-related methods
3--SKIPIF--
4<?php if (!extension_loaded("phar")) die("skip"); ?>
5<?php if (!extension_loaded("zlib")) die("skip no zlib"); ?>
6<?php if (!extension_loaded("bz2")) die("skip no bz2"); ?>
7--INI--
8phar.readonly=0
9--FILE--
10<?php
11$fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar';
12$pname = 'phar://' . $fname;
13
14$phar = new Phar($fname);
15
16$phar['a/b'] = 'hi there';
17
18$b = $phar['a/b'];
19
20try {
21$b->isCompressed(25);
22} catch (Exception $e) {
23echo $e->getMessage() . "\n";
24}
25try {
26$b->compress(25);
27} catch (Exception $e) {
28echo $e->getMessage() . "\n";
29}
30$tar = $phar->convertToData(Phar::TAR);
31
32$c = $tar['a/b'];
33try {
34$c->compress(Phar::GZ);
35} catch (Exception $e) {
36echo $e->getMessage() . "\n";
37}
38try {
39$phar['a']->compress(Phar::GZ);
40} catch (Exception $e) {
41echo $e->getMessage() . "\n";
42}
43ini_set('phar.readonly', 1);
44try {
45$b->compress(Phar::GZ);
46} catch (Exception $e) {
47echo $e->getMessage() . "\n";
48}
49ini_set('phar.readonly', 0);
50var_dump($b->compress(Phar::GZ));
51var_dump($b->compress(Phar::GZ));
52var_dump($b->compress(Phar::BZ2));
53var_dump($b->compress(Phar::BZ2));
54
55echo "decompress\n";
56
57ini_set('phar.readonly', 1);
58try {
59$phar['a/b']->decompress();
60} catch (Exception $e) {
61echo $e->getMessage() . "\n";
62}
63ini_set('phar.readonly', 0);
64try {
65$phar['a']->decompress();
66} catch (Exception $e) {
67echo $e->getMessage() . "\n";
68}
69var_dump($b->decompress());
70var_dump($b->decompress());
71
72?>
73--CLEAN--
74<?php unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar'); ?>
75<?php unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.tar'); ?>
76--EXPECT--
77Unknown compression type specified
78Unknown compression type specified
79Cannot compress with Gzip compression, not possible with tar-based phar archives
80Phar entry is a directory, cannot set compression
81Phar is readonly, cannot change compression
82bool(true)
83bool(true)
84bool(true)
85bool(true)
86decompress
87Phar is readonly, cannot decompress
88Phar entry is a directory, cannot set compression
89bool(true)
90bool(true)
91