diff options
Diffstat (limited to 'tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php')
-rw-r--r-- | tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php b/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php new file mode 100644 index 0000000000..eb2805397e --- /dev/null +++ b/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php @@ -0,0 +1,56 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Tests\Framework\TestCase; + +use Piwik\Config; +use Piwik\Console; +use Symfony\Component\Console\Tester\ApplicationTester; + +/** + * Base class for test cases that test Piwik console commands. Derives from SystemTestCase + * so the entire Piwik environment is set up. + * + * This will create an ApplicationTester instance (provided by Symfony) which should be used to + * test commands like this: + * + * public function testThisAndThat() + * { + * $result = $this->applicationTester->run(array( + * 'command' => 'my-command', + * 'arg1' => 'value1', + * 'arg2' => 'value2', + * '--option' => true, + * '--another-option' => 'value3' + * )); + * $this->assertEquals(0, $result, $this->getCommandDisplayOutputErrorMessage()); + * + * // other checks + * } + */ +class ConsoleCommandTestCase extends SystemTestCase +{ + protected $applicationTester = null; + + public function setUp() + { + parent::setUp(); + + $application = new Console(); + $application->setAutoExit(false); + + $this->applicationTester = new ApplicationTester($application); + + Config::unsetInstance(); + } + + protected function getCommandDisplayOutputErrorMessage() + { + return "Command did not behave as expected. Command output: " . $this->applicationTester->getDisplay(); + } +}
\ No newline at end of file |