public function run(array $argv, $exit = true)
{
$this->handleArguments($argv);
$runner = $this->createRunner();
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['testSuffixes']);
}
if ($this->arguments['listGroups']) {
$this->printVersionString();
print "Available test group(s):\n";
$groups = $suite->getGroups();
sort($groups);
foreach ($groups as $group) {
print " - {$group}\n";
}
if ($exit) {
exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
} else {
return PHPUnit_TextUI_TestRunner::SUCCESS_EXIT;
}
}
if ($this->arguments['listSuites']) {
$this->printVersionString();
print "Available test suite(s):\n";
$configuration = PHPUnit_Util_Configuration::getInstance($this->arguments['configuration']);
$suiteNames = $configuration->getTestSuiteNames();
foreach ($suiteNames as $suiteName) {
print " - {$suiteName}\n";
}
if ($exit) {
exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
} else {
return PHPUnit_TextUI_TestRunner::SUCCESS_EXIT;
}
}
unset($this->arguments['test']);
unset($this->arguments['testFile']);
try {
$result = $runner->doRun($suite, $this->arguments, $exit);
} catch (PHPUnit_Framework_Exception $e) {
print $e->getMessage() . "\n";
}
$return = PHPUnit_TextUI_TestRunner::FAILURE_EXIT;
if (isset($result) && $result->wasSuccessful()) {
$return = PHPUnit_TextUI_TestRunner::SUCCESS_EXIT;
} elseif (!isset($result) || $result->errorCount() > 0) {
$return = PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT;
}
return $return;
}