cb1137786124ade2f9ad7e1c94de69e43a05fb97
[pharext/pharext] / tests / src / pharext / TaskTest.php
1 <?php
2
3 namespace pharext;
4
5 require_once __DIR__."/../../autoload.php";
6
7 use pharext\Task;
8
9 class TaskTest extends \PHPUnit_Framework_TestCase
10 {
11 function testGitClone() {
12 $cmd = new Task\GitClone("https://git.php.net/repository/pecl/http/apfd.git");
13 $dir = $cmd->run();
14
15 $this->assertTrue(is_dir("$dir/.git"), "is_dir($dir/.git)");
16
17 (new Task\Cleanup($dir))->run();
18 $this->assertFalse(is_dir($dir), "is_dir($dir)");
19 }
20
21 function testPecl() {
22 $cmd = new Task\StreamFetch("http://pecl.php.net/get/pecl_http", function($pct) use(&$log) {
23 $log[] = $pct;
24 });
25 $tmp = $cmd->run();
26
27 $this->assertTrue(is_file($tmp), "is_file($tmp)");
28 $this->assertGreaterThan(1, count($log), "1 < count(\$log)");
29 $this->assertContains(0, $log, "in_array(0, \$log)");
30 $this->assertContains(1, $log, "in_array(1, \$log)");
31
32 $cmd = new Task\Extract($tmp);
33 $dir = $cmd->run();
34
35 $this->assertTrue(is_dir($dir), "is_dir($dir)");
36 $this->assertTrue(is_file("$dir/package.xml"), "is_file($dir/package.xml");
37
38 $cmd = new Task\PeclFixup($dir);
39 $new = $cmd->run();
40
41 $this->assertTrue(is_dir($new), "is_dir($new)");
42 $this->assertFalse(is_file("$dir/package.xml"), "is_file($dir/package.xml");
43 $this->assertTrue(is_file("$new/package.xml"), "is_file($new/package.xml");
44
45 (new Task\Cleanup($dir))->run();
46 $this->assertFalse(is_dir($dir), "is_dir($dir)");
47 $this->assertFalse(is_dir($new), "is_dir($new)");
48 }
49
50 function testPackage() {
51 $tmp = (new Task\StreamFetch("http://pecl.php.net/get/json_post/1.0.0", function(){}))->run();
52 $dir = (new Task\Extract($tmp))->run();
53 $new = (new Task\PeclFixup($dir))->run();
54 $src = new SourceDir\Pecl($new);
55 $inf = [
56 "date" => date("Y-m-d"),
57 "name" => "json_post",
58 "release" => "1.0.0",
59 "license" => file_get_contents($src->getBaseDir()."/LICENSE"),
60 "stub" => "pharext_installer.php",
61 "type" => "extension",
62 ];
63 $pkg = (new Task\PharBuild($src, $inf))->run();
64 $gzp = (new Task\PharCompress($pkg, \Phar::GZ))->run();
65 $pkg = (new Task\PharRename($pkg, ".", "json_post-1.0.0"))->run();
66 $gzp = (new Task\PharRename($gzp, ".", "json_post-1.0.0"))->run();
67
68 $this->assertTrue(is_file($pkg), "is_file($pkg)");
69 $this->assertTrue(is_file($gzp), "is_file($gzp)");
70 }
71 }