Skip to content

Commit b38bbe6

Browse files
milodg
authored andcommitted
tests: added test for loading from Phar [Closes #4]
1 parent 9bb897a commit b38bbe6

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
/**
4+
* Test: Nette\Loaders\RobotLoader loading from PHAR.
5+
*
6+
* @phpIni phar.readonly=0
7+
*/
8+
9+
use Nette\Loaders\RobotLoader,
10+
Nette\Caching\Storages\DevNullStorage,
11+
Tester\Assert;
12+
13+
14+
require __DIR__ . '/../bootstrap.php';
15+
16+
17+
$pharFile = TEMP_DIR . '/test.phar';
18+
19+
$phar = new Phar($pharFile);
20+
$phar['class.A.php'] = '<?php class A {}';
21+
$phar['class.B.php'] = '<?php class B {}';
22+
$phar['class.C.php'] = '<?php class C {}';
23+
$phar['sub/class.D.php'] = '<?php class D {}';
24+
$phar->setStub('<?php __HALT_COMPILER();');
25+
unset($phar);
26+
27+
Assert::true( is_file($pharFile) );
28+
Phar::loadPhar($pharFile, 'test.phar');
29+
30+
31+
$loader = new RobotLoader;
32+
$loader->setCacheStorage(new DevNullStorage);
33+
$loader->addDirectory("phar://$pharFile/sub");
34+
$loader->addDirectory("PHAR://$pharFile/class.B.php");
35+
$loader->addDirectory("phar://test.phar/class.C.php");
36+
$loader->register();
37+
38+
Assert::false( class_exists('A') );
39+
Assert::true( class_exists('B') );
40+
Assert::true( class_exists('C') );
41+
Assert::true( class_exists('D') );
42+
43+
44+
$loader = new RobotLoader;
45+
$loader->setCacheStorage(new DevNullStorage);
46+
$loader->addDirectory("phar://$pharFile/non-dir");
47+
Assert::exception(function() use ($loader, $pharFile) {
48+
$loader->register();
49+
}, 'Nette\IOException', "File or directory 'phar://$pharFile/non-dir' not found.");
50+
51+
52+
$loader = new RobotLoader;
53+
$loader->setCacheStorage(new DevNullStorage);
54+
$loader->addDirectory("phar://$pharFile/non-file.php");
55+
Assert::exception(function() use ($loader, $pharFile) {
56+
$loader->register();
57+
}, 'Nette\IOException', "File or directory 'phar://$pharFile/non-file.php' not found.");

0 commit comments

Comments
 (0)