/** */ public static function main($exit = TRUE) { $arguments = self::handleArguments(); $runner = new PHPUnit_TextUI_TestRunner(); if (is_object($arguments['test']) && $arguments['test'] instanceof PHPUnit_Framework_Test) { $suite = $arguments['test']; } else { $suite = $runner->getTest($arguments['test'], $arguments['testFile'], $arguments['syntaxCheck']); } if ($suite->testAt(0) instanceof PHPUnit_Framework_Warning && strpos($suite->testAt(0)->getMessage(), 'No tests found in class') !== FALSE) { $message = $suite->testAt(0)->getMessage(); $start = strpos($message, '"') + 1; $end = strpos($message, '"', $start); $className = substr($message, $start, $end - $start); require_once 'PHPUnit/Util/Skeleton/Test.php'; $skeleton = new PHPUnit_Util_Skeleton_Test($className, $arguments['testFile']); $result = $skeleton->generate(TRUE); if (!$result['incomplete']) { eval(str_replace(array('<?php', '?>'), '', $result['code'])); $suite = new PHPUnit_Framework_TestSuite($arguments['test'] . 'Test'); } } if ($arguments['listGroups']) { PHPUnit_TextUI_TestRunner::printVersionString(); print "Available test group(s):\n"; $groups = $suite->getGroups(); sort($groups); foreach ($groups as $group) { print " - {$group}\n"; } exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } try { $result = $runner->doRun($suite, $arguments); } catch (Exception $e) { throw new RuntimeException('Could not create and run test suite: ' . $e->getMessage()); } if ($exit) { if ($result->wasSuccessful()) { exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } else { if ($result->errorCount() > 0) { exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT); } else { exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT); } } } }
/** * Ugly hack to get around PHPUnit having a hard coded classname for the Runner. :( * * @param array $argv * @param boolean $exit */ public function run(array $argv, $exit = true) { $this->handleArguments($argv); $runner = $this->getRunner($this->arguments['loader']); if (is_object($this->arguments['test']) && $this->arguments['test'] instanceof PHPUnit_Framework_Test) { $suite = $this->arguments['test']; } else { $suite = $runner->getTest($this->arguments['test'], $this->arguments['testFile'], $this->arguments['syntaxCheck']); } if (count($suite) == 0) { $skeleton = new PHPUnit_Util_Skeleton_Test($suite->getName(), $this->arguments['testFile']); $result = $skeleton->generate(true); if (!$result['incomplete']) { eval(str_replace(array('<?php', '?>'), '', $result['code'])); $suite = new PHPUnit_Framework_TestSuite($this->arguments['test'] . 'Test'); } } if ($this->arguments['listGroups']) { PHPUnit_TextUI_TestRunner::printVersionString(); print "Available test group(s):\n"; $groups = $suite->getGroups(); sort($groups); foreach ($groups as $group) { print " - {$group}\n"; } exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } unset($this->arguments['test']); unset($this->arguments['testFile']); try { $result = $runner->doRun($suite, $this->arguments); } catch (PHPUnit_Framework_Exception $e) { print $e->getMessage() . "\n"; } if ($exit) { if (isset($result) && $result->wasSuccessful()) { exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } else { if (!isset($result) || $result->errorCount() > 0) { exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT); } else { exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT); } } } }
/** * @param array $argv * @param boolean $exit */ public function run(array $argv, $exit = TRUE) { $this->handleArguments($argv); // *** BEGIN ezp custom code BEGIN *** if( isset($this->arguments['list-tests']) ) { $this->listTests( $this->suite ); exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } // *** END ezp custom code END*** $runner = new PHPUnit_TextUI_TestRunner($this->arguments['loader']); // *** BEGIN ezp custom code BEGIN *** // **Following code is removed compared to the original implementation /*if (is_object($this->arguments['test']) && $this->arguments['test'] instanceof PHPUnit_Framework_Test) { $suite = $this->arguments['test']; } else { $suite = $runner->getTest( $this->arguments['test'], $this->arguments['testFile'], $this->arguments['syntaxCheck'] ); }*/ // **And this line is added $suite = $this->suite; // *** END ezp custom code END *** if (count($suite) == 0) { $skeleton = new PHPUnit_Util_Skeleton_Test( $suite->getName(), $this->arguments['testFile'] ); $result = $skeleton->generate(TRUE); if (!$result['incomplete']) { eval(str_replace(array('<?php', '?>'), '', $result['code'])); $suite = new PHPUnit_Framework_TestSuite( $this->arguments['test'] . 'Test' ); } } if ($this->arguments['listGroups']) { PHPUnit_TextUI_TestRunner::printVersionString(); print "Available test group(s):\n"; $groups = $suite->getGroups(); sort($groups); foreach ($groups as $group) { print " - $group\n"; } exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } unset($this->arguments['test']); unset($this->arguments['testFile']); try { $result = $runner->doRun($suite, $this->arguments); } catch (PHPUnit_Framework_Exception $e) { print $e->getMessage() . "\n"; } if ($exit) { if (isset($result) && $result->wasSuccessful()) { exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } else if (!isset($result) || $result->errorCount() > 0) { exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT); } else { exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT); } } }
public function execute($config_group = 'default') { ini_set('memory_limit', '512M'); $this->_get_phpunit_options($config_group); require_once Kohana::find_file('vendor', 'PHPUnit/Util/Filter'); require_once Kohana::find_file('vendor', 'PHPUnit/Framework/TestSuite'); require_once Kohana::find_file('vendor', 'PHPUnit/TextUI/TestRunner'); $this->_whitelist(); $this->_blacklist(); // We want all warnings so PHPUnit can take care of them. error_reporting(E_ALL | E_STRICT); // Hand control of errors and exceptions to PHPUnit restore_exception_handler(); restore_error_handler(); // Turn off the output biffer. ob_end_flush(); //define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main'); $this->_get_test_suite(); $arguments = $this->_phpunit_options; $runner = new PHPUnit_TextUI_TestRunner(); if (is_object($arguments['test']) and $arguments['test'] instanceof PHPUnit_Framework_Test) { $suite = $arguments['test']; } else { $suite = $runner->getTest($arguments['test'], $arguments['testFile'], $arguments['syntaxCheck']); } if ($suite->testAt(0) instanceof PHPUnit_Framework_Warning and strpos($suite->testAt(0)->getMessage(), 'No tests found in class') !== FALSE) { $message = $suite->testAt(0)->getMessage(); $start = strpos($message, '"') + 1; $end = strpos($message, '"', $start); $className = substr($message, $start, $end - $start); require Kohana::find_file('vendor', 'PHPUnit/Util/Skeleton/Test'); $skeleton = new PHPUnit_Util_Skeleton_Test($className, $arguments['testFile']); $result = $skeleton->generate(TRUE); if (!$result['incomplete']) { eval(str_replace(array('<?php', '?>'), '', $result['code'])); $suite = new PHPUnit_Framework_TestSuite($arguments['test'] . 'Test'); } } if ($arguments['listGroups']) { PHPUnit_TextUI_TestRunner::printVersionString(); print "Available test group(s):\n"; $groups = $suite->getGroups(); sort($groups); foreach ($groups as $group) { print " - {$group}\n"; } exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } try { $result = $runner->doRun($suite, $arguments); } catch (Exception $e) { throw new RuntimeException('Could not create and run test suite: ' . $e->getMessage()); } if ($result->wasSuccessful()) { exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } else { if ($result->errorCount() > 0) { exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT); } else { exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT); } } }
/** * @param array $argv * @param boolean $exit */ public function run(array $argv, $exit = TRUE) { $this->handleArguments($argv); $runner = new PHPUnit_TextUI_TestRunner($this->arguments['loader']); if (is_object($this->arguments['test']) && $this->arguments['test'] instanceof PHPUnit_Framework_Test) { $suite = $this->arguments['test']; } else { $suite = $runner->getTest($this->arguments['test'], $this->arguments['testFile']); } if ($suite->testAt(0) instanceof PHPUnit_Framework_Warning && strpos($suite->testAt(0)->getMessage(), 'No tests found in class') !== FALSE) { $message = $suite->testAt(0)->getMessage(); $start = strpos($message, '"') + 1; $end = strpos($message, '"', $start); $className = substr($message, $start, $end - $start); $skeleton = new PHPUnit_Util_Skeleton_Test($className, $this->arguments['testFile']); $result = $skeleton->generate(TRUE); if (!$result['incomplete']) { eval(str_replace(array('<?php', '?>'), '', $result['code'])); $suite = new PHPUnit_Framework_TestSuite($this->arguments['test'] . 'Test'); } } if ($this->arguments['listGroups']) { PHPUnit_TextUI_TestRunner::printVersionString(); print "Available test group(s):\n"; $groups = $suite->getGroups(); sort($groups); foreach ($groups as $group) { print " - {$group}\n"; } exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } unset($this->arguments['test']); unset($this->arguments['testFile']); try { $result = $runner->doRun($suite, $this->arguments); } catch (PHPUnit_Framework_Exception $e) { print $e->getMessage() . "\n"; } if ($exit) { if (isset($result) && $result->wasSuccessful()) { exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } else { if (!isset($result) || $result->errorCount() > 0) { exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT); } else { exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT); } } } }