1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-14 19:02:40 +01:00
phorge-arcanist/src/unit/engine/ArcanistTestResultParser.php

49 lines
1 KiB
PHP
Raw Normal View History

<?php
/**
* Abstract base class for test result parsers.
*/
abstract class ArcanistTestResultParser {
protected $enableCoverage;
protected $projectRoot;
protected $coverageFile;
Print a more useful error message if any PHPUnit tests crash Summary: Before, if PHPUnit crashed (syntax error, undefined constant, etc), you would get a relatively unhelpful error message: firehed@Eric-Sterns-Mac-Pro ~/dev/php-lcd: arc unit Exception Clover coverage XML report file is empty, it probably means that phpunit failed to run tests. Try running arc unit with --trace option and then run generated phpunit command yourself, you might get the answer. (Run with --trace for a full exception trace.) This now checks the json and code coverage reports and tries to pull a useful error message: firehed@Eric-Sterns-Mac-Pro ~/dev/php-lcd: arc unit Exception The test '/Users/firehed/dev/php-lcd/tests/PlateButtonsTest.php' crashed with the following output: Fatal error: Undefined class constant 'EFT' in /Users/firehed/dev/php-lcd/tests/PlateButtonsTest.php on line 25 Call Stack: 0.0002 233104 1. {main}() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/composer/bin/phpunit:0 0.0039 564872 2. PHPUnit_TextUI_Command::main() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/composer/bin/phpunit:63 0.0039 565496 3. PHPUnit_TextUI_Command->run() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:129 0.0247 2280168 4. PHPUnit_TextUI_TestRunner->doRun() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:176 0.0293 2730760 5. PHPUnit_Framework_TestSuite->run() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:349 0.1211 3996832 6. PHPUnit_Framework_TestSuite->runTest() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:745 0.1211 3996832 7. PHPUnit_Framework_TestCase->run() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:775 0.1211 3996832 8. PHPUnit_Framework_TestResult->run() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:783 0.1233 3999752 9. PHPUnit_Framework_TestCase->runBare() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestResult.php:648 0.1236 4016432 10. PHPUnit_Framework_TestCase->runTest() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:838 0.1237 4017240 11. ReflectionMethod->invokeArgs() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:983 0.1237 4017520 12. Firehed\PlateButtonsTest->testSingleButtonOnButtonDown() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:983 (Run with --trace for a full exception trace.) Or if nothing was written to `stderr`, you may get something like this: firehed@Eric-Sterns-Mac-Pro ~/dev/php-lcd: arc unit --no-coverage Exception Test Firehed\PlateButtonsTest::testSingleButtonOnButtonDown did not finish (Run with --trace for a full exception trace.) Test Plan: `arc unit` for arcanist itself `arc unit` before and after the change on a project where: * all tests pass * some tests are failing * a test causes a fatal error (undefined constant, bad method call, etc) * a test file is invalid (syntax error) No regressions that I could find, and all crashes now display a more useful error. Reviewers: #blessed_reviewers, epriestley Reviewed By: epriestley CC: aurelijus, epriestley, aran Differential Revision: https://secure.phabricator.com/D7848
2014-01-02 21:02:22 +01:00
protected $stderr;
public function setEnableCoverage($enable_coverage) {
$this->enableCoverage = $enable_coverage;
return $this;
}
public function setProjectRoot($project_root) {
$this->projectRoot = $project_root;
return $this;
}
public function setCoverageFile($coverage_file) {
$this->coverageFile = $coverage_file;
return $this;
}
public function setAffectedTests($affected_tests) {
$this->affectedTests = $affected_tests;
return $this;
}
Print a more useful error message if any PHPUnit tests crash Summary: Before, if PHPUnit crashed (syntax error, undefined constant, etc), you would get a relatively unhelpful error message: firehed@Eric-Sterns-Mac-Pro ~/dev/php-lcd: arc unit Exception Clover coverage XML report file is empty, it probably means that phpunit failed to run tests. Try running arc unit with --trace option and then run generated phpunit command yourself, you might get the answer. (Run with --trace for a full exception trace.) This now checks the json and code coverage reports and tries to pull a useful error message: firehed@Eric-Sterns-Mac-Pro ~/dev/php-lcd: arc unit Exception The test '/Users/firehed/dev/php-lcd/tests/PlateButtonsTest.php' crashed with the following output: Fatal error: Undefined class constant 'EFT' in /Users/firehed/dev/php-lcd/tests/PlateButtonsTest.php on line 25 Call Stack: 0.0002 233104 1. {main}() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/composer/bin/phpunit:0 0.0039 564872 2. PHPUnit_TextUI_Command::main() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/composer/bin/phpunit:63 0.0039 565496 3. PHPUnit_TextUI_Command->run() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:129 0.0247 2280168 4. PHPUnit_TextUI_TestRunner->doRun() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:176 0.0293 2730760 5. PHPUnit_Framework_TestSuite->run() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:349 0.1211 3996832 6. PHPUnit_Framework_TestSuite->runTest() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:745 0.1211 3996832 7. PHPUnit_Framework_TestCase->run() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:775 0.1211 3996832 8. PHPUnit_Framework_TestResult->run() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:783 0.1233 3999752 9. PHPUnit_Framework_TestCase->runBare() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestResult.php:648 0.1236 4016432 10. PHPUnit_Framework_TestCase->runTest() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:838 0.1237 4017240 11. ReflectionMethod->invokeArgs() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:983 0.1237 4017520 12. Firehed\PlateButtonsTest->testSingleButtonOnButtonDown() /Users/firehed/dev/php-lcd/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:983 (Run with --trace for a full exception trace.) Or if nothing was written to `stderr`, you may get something like this: firehed@Eric-Sterns-Mac-Pro ~/dev/php-lcd: arc unit --no-coverage Exception Test Firehed\PlateButtonsTest::testSingleButtonOnButtonDown did not finish (Run with --trace for a full exception trace.) Test Plan: `arc unit` for arcanist itself `arc unit` before and after the change on a project where: * all tests pass * some tests are failing * a test causes a fatal error (undefined constant, bad method call, etc) * a test file is invalid (syntax error) No regressions that I could find, and all crashes now display a more useful error. Reviewers: #blessed_reviewers, epriestley Reviewed By: epriestley CC: aurelijus, epriestley, aran Differential Revision: https://secure.phabricator.com/D7848
2014-01-02 21:02:22 +01:00
public function setStderr($stderr) {
$this->stderr = $stderr;
return $this;
}
/**
* Parse test results from provided input and return an array of
* @{class:ArcanistUnitTestResult}.
*
* @param string Path to test.
* @param string String containing test results.
* @return array
*/
abstract public function parseTestResults($path, $test_results);
}