From 67ae9faa27eb0607d5694842caeab2d842577046 Mon Sep 17 00:00:00 2001 From: Brad Jones Date: Wed, 15 Mar 2017 14:17:07 +1100 Subject: [PATCH] Tests are now done functionaly instead of invoking robo again. --- robo | 103 -------------------------------- tests/AssetTest.php | 139 ++++++++++++++++++++++++-------------------- 2 files changed, 77 insertions(+), 165 deletions(-) diff --git a/robo b/robo index 420922d..b3d4af1 100755 --- a/robo +++ b/robo @@ -33,109 +33,6 @@ class RoboFile extends \Robo\Tasks ->run()->getExitCode() ); } - - /* - * The following tasks are about testing the functionality of Gears\Asset. - * Some of the compiled assets that these create will not actually work - * inside a browser. - */ - - public function testSingleJsAsset() - { - $this->taskBuildAsset('./tests/output/single.js') - ->source('./vendor/bower/jquery/dist/jquery.js') - ->run(); - } - - public function testFolderJsAsset() - { - $this->taskBuildAsset('./tests/output/folder.js') - ->source('./vendor/bower/bootstrap/js') - ->run(); - } - - public function testSingleCssAsset() - { - $this->taskBuildAsset('./tests/output/single.css') - ->source('./vendor/bower/bootstrap/dist/css/bootstrap.css') - ->run(); - } - - public function testFolderCssAsset() - { - $this->taskBuildAsset('./tests/output/folder.css') - ->source('./vendor/bower/pure') - ->run(); - } - - public function testLessAsset() - { - $this->taskBuildAsset('./tests/output/less.css') - ->source('./vendor/bower/bootstrap/less/bootstrap.less') - ->run(); - } - - public function testScssAsset() - { - $this->taskBuildAsset('./tests/output/scss.css') - ->source('./vendor/bower/bootstrap-sass/assets/stylesheets/_bootstrap.scss') - ->run(); - } - - public function testManyAssets() - { - $this->taskBuildAsset('./tests/output/many.css') - ->source - ([ - './vendor/bower/pure', - './vendor/bower/bootstrap/less/bootstrap.less', - './vendor/bower/bootstrap-sass/assets/stylesheets/_bootstrap.scss' - ]) - ->run(); - } - - public function testFinderAsset() - { - $finder = new Symfony\Component\Finder\Finder(); - $finder->files()->in('./vendor/bower/pure')->name('*.css')->sortByName(); - $this->taskBuildAsset('./tests/output/finder.css')->source($finder)->run(); - } - - public function testTemplate() - { - $this->taskWriteToFile('./tests/output/template.html') - ->line('') - ->run(); - - $this->taskBuildAsset('./tests/output/template.js') - ->source('./vendor/bower/jquery/dist/jquery.js') - ->template('./tests/output/template.html') - ->run(); - } - - public function testGz() - { - $this->taskBuildAsset('./tests/output/gzipped.js') - ->source('./vendor/bower/jquery/dist/jquery.js') - ->gz(true) - ->run(); - } - - public function testDebug() - { - $this->taskBuildAsset('./tests/output/debug.js') - ->source('./vendor/bower/jquery/dist/jquery.js') - ->debug(true) - ->run(); - } - - public function testCssPathReplacement() - { - $this->taskBuildAsset('./tests/output/css-path-replacement.css') - ->source('./tests/input/css-path-replacement.css') - ->debug(true) - ->run(); - } } exit(\Robo\Robo::run($_SERVER['argv'], RoboFile::class)); diff --git a/tests/AssetTest.php b/tests/AssetTest.php index b4039a1..a771bed 100644 --- a/tests/AssetTest.php +++ b/tests/AssetTest.php @@ -13,15 +13,43 @@ namespace Gears\Tests; +use Robo; +use Gears\Asset; +use League\Container; +use Symfony\Component\Console; use PHPUnit\Framework\TestCase; -class AssetTest extends TestCase +class AssetTest extends TestCase implements Container\ContainerAwareInterface { - public function testSingleJsAsset() + use Asset\loadTasks; + use Robo\TaskAccessor; + use Robo\Task\File\loadTasks; + use Container\ContainerAwareTrait; + + public function setUp() { - $results = $this->callRoboTask('test:single-js-asset'); + $this->setContainer + ( + Robo\Robo::createDefaultContainer + ( + null, new Console\Output\NullOutput + ) + ); + } - $this->assertEmpty($results['stderr']); + public function collectionBuilder() + { + $tasks = new \Robo\Tasks(); + $builder = $this->getContainer()->get('collectionBuilder', [$tasks]); + $tasks->setBuilder($builder); + return $builder; + } + + public function testSingleJsAsset() + { + $this->taskBuildAsset('./tests/output/single.js') + ->source('./vendor/bower/jquery/dist/jquery.js') + ->run(); $this->assertFileExists('./tests/output/single.js'); @@ -34,9 +62,9 @@ public function testSingleJsAsset() public function testFolderJsAsset() { - $results = $this->callRoboTask('test:folder-js-asset'); - - $this->assertEmpty($results['stderr']); + $this->taskBuildAsset('./tests/output/folder.js') + ->source('./vendor/bower/bootstrap/js') + ->run(); $this->assertFileExists('./tests/output/folder.js'); @@ -49,9 +77,9 @@ public function testFolderJsAsset() public function testSingleCssAsset() { - $results = $this->callRoboTask('test:single-css-asset'); - - $this->assertEmpty($results['stderr']); + $this->taskBuildAsset('./tests/output/single.css') + ->source('./vendor/bower/bootstrap/dist/css/bootstrap.css') + ->run(); $this->assertFileExists('./tests/output/single.css'); @@ -64,9 +92,9 @@ public function testSingleCssAsset() public function testFolderCssAsset() { - $results = $this->callRoboTask('test:folder-css-asset'); - - $this->assertEmpty($results['stderr']); + $this->taskBuildAsset('./tests/output/folder.css') + ->source('./vendor/bower/pure') + ->run(); $this->assertFileExists('./tests/output/folder.css'); @@ -79,9 +107,9 @@ public function testFolderCssAsset() public function testLessAsset() { - $results = $this->callRoboTask('test:less-asset'); - - $this->assertEmpty($results['stderr']); + $this->taskBuildAsset('./tests/output/less.css') + ->source('./vendor/bower/bootstrap/less/bootstrap.less') + ->run(); $this->assertFileExists('./tests/output/less.css'); @@ -94,9 +122,9 @@ public function testLessAsset() public function testScssAsset() { - $results = $this->callRoboTask('test:scss-asset'); - - $this->assertEmpty($results['stderr']); + $this->taskBuildAsset('./tests/output/scss.css') + ->source('./vendor/bower/bootstrap-sass/assets/stylesheets/_bootstrap.scss') + ->run(); $this->assertFileExists('./tests/output/scss.css'); @@ -109,9 +137,14 @@ public function testScssAsset() public function testManyAssets() { - $results = $this->callRoboTask('test:many-assets'); - - $this->assertEmpty($results['stderr']); + $this->taskBuildAsset('./tests/output/many.css') + ->source + ([ + './vendor/bower/pure', + './vendor/bower/bootstrap/less/bootstrap.less', + './vendor/bower/bootstrap-sass/assets/stylesheets/_bootstrap.scss' + ]) + ->run(); $this->assertFileExists('./tests/output/many.css'); @@ -124,9 +157,9 @@ public function testManyAssets() public function testFinderAsset() { - $results = $this->callRoboTask('test:finder-asset'); - - $this->assertEmpty($results['stderr']); + $finder = new \Symfony\Component\Finder\Finder(); + $finder->files()->in('./vendor/bower/pure')->name('*.css')->sortByName(); + $this->taskBuildAsset('./tests/output/finder.css')->source($finder)->run(); $this->assertFileExists('./tests/output/finder.css'); @@ -139,9 +172,14 @@ public function testFinderAsset() public function testTemplate() { - $results = $this->callRoboTask('test:template'); + $this->taskWriteToFile('./tests/output/template.html') + ->line('') + ->run(); - $this->assertEmpty($results['stderr']); + $this->taskBuildAsset('./tests/output/template.js') + ->source('./vendor/bower/jquery/dist/jquery.js') + ->template('./tests/output/template.html') + ->run(); $this->assertFileExists('./tests/output/template.html'); @@ -159,9 +197,10 @@ public function testTemplate() public function testGz() { - $results = $this->callRoboTask('test:gz'); - - $this->assertEmpty($results['stderr']); + $this->taskBuildAsset('./tests/output/gzipped.js') + ->source('./vendor/bower/jquery/dist/jquery.js') + ->gz(true) + ->run(); $this->assertFileExists('./tests/output/gzipped.js'); $this->assertFileExists('./tests/output/gzipped.js.gz'); @@ -175,9 +214,10 @@ public function testGz() public function testDebug() { - $results = $this->callRoboTask('test:debug'); - - $this->assertEmpty($results['stderr']); + $this->taskBuildAsset('./tests/output/debug.js') + ->source('./vendor/bower/jquery/dist/jquery.js') + ->debug(true) + ->run(); $this->assertFileExists('./tests/output/debug.js'); @@ -190,9 +230,10 @@ public function testDebug() public function testCssPathReplacement() { - $results = $this->callRoboTask('test:css-path-replacement'); - - $this->assertEmpty($results['stderr']); + $this->taskBuildAsset('./tests/output/css-path-replacement.css') + ->source('./tests/input/css-path-replacement.css') + ->debug(true) + ->run(); $this->assertFileExists('./tests/output/css-path-replacement.css'); @@ -202,30 +243,4 @@ public function testCssPathReplacement() './tests/output/css-path-replacement.css' ); } - - private function callRoboTask($task) - { - $cmd = './robo '.$task; - $descriptorspec = [1 => ["pipe", "w"], 2 => ["pipe", "w"]]; - $process = proc_open($cmd, $descriptorspec, $pipes); - - if (is_resource($process)) - { - $output = []; - - $output['stdout'] = stream_get_contents($pipes[2]); - fclose($pipes[2]); - - $output['stderr'] = stream_get_contents($pipes[1]); - fclose($pipes[1]); - - proc_close($process); - - return $output; - } - else - { - throw new \Exception('Failed to start process.'); - } - } }