mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-22 06:42:41 +01:00
Raise a more tailored error message when a third-party test engine returns bad results
Summary: Fixes T8714. When a test engine isn't returning the correct result type, shift suspicion onto it. Test Plan: Faked error, got exception blaming test engine. Reviewers: joshuaspence, btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T8714 Differential Revision: https://secure.phabricator.com/D13486
This commit is contained in:
parent
29839e8c72
commit
d54cb072fa
1 changed files with 41 additions and 0 deletions
|
@ -184,6 +184,9 @@ EOTEXT
|
||||||
}
|
}
|
||||||
|
|
||||||
$results = $this->engine->run();
|
$results = $this->engine->run();
|
||||||
|
|
||||||
|
$this->validateUnitEngineResults($this->engine, $results);
|
||||||
|
|
||||||
$this->testResults = $results;
|
$this->testResults = $results;
|
||||||
|
|
||||||
$console = PhutilConsole::getConsole();
|
$console = PhutilConsole::getConsole();
|
||||||
|
@ -368,4 +371,42 @@ EOTEXT
|
||||||
return idx($known_formats, $format, 'full');
|
return idx($known_formats, $format, 'full');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Raise a tailored error when a unit test engine returns results in an
|
||||||
|
* invalid format.
|
||||||
|
*
|
||||||
|
* @param ArcanistUnitTestEngine The engine.
|
||||||
|
* @param wild Results from the engine.
|
||||||
|
*/
|
||||||
|
private function validateUnitEngineResults(
|
||||||
|
ArcanistUnitTestEngine $engine,
|
||||||
|
$results) {
|
||||||
|
|
||||||
|
if (!is_array($results)) {
|
||||||
|
throw new Exception(
|
||||||
|
pht(
|
||||||
|
'Unit test engine (of class "%s") returned invalid results when '.
|
||||||
|
'run (with method "%s"). Expected a list of "%s" objects as results.',
|
||||||
|
get_class($engine),
|
||||||
|
'run()',
|
||||||
|
'ArcanistUnitTestResult'));
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($results as $key => $result) {
|
||||||
|
if (!($result instanceof ArcanistUnitTestResult)) {
|
||||||
|
throw new Exception(
|
||||||
|
pht(
|
||||||
|
'Unit test engine (of class "%s") returned invalid results when '.
|
||||||
|
'run (with method "%s"). Expected a list of "%s" objects as '.
|
||||||
|
'results, but value with key "%s" is not valid.',
|
||||||
|
get_class($engine),
|
||||||
|
'run()',
|
||||||
|
'ArcanistUnitTestResult',
|
||||||
|
$key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue