1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-21 22:32:41 +01:00

'arc diff' passes the diff ID to Test Engine class.

Summary:
Test Engine classes might need the differential Diff ID to be
able to attach postponed test results to diffs.

Test Plan:
Added setDifferentialDiff function to PhutilUnitTestEngine class
and made sure it was called with the correct diff ID when running
'arc diff --preview'

Reviewed By: jungejason
Reviewers: jungejason, grglr
Commenters: sgrimm
CC: epriestley, sgrimm, slawekbiel, aran, tuomaspelkonen, jungejason
Differential Revision: 395
This commit is contained in:
tuomaspelkonen 2011-05-27 16:15:43 -07:00
parent 03056c7206
commit fe9daa7ae3
3 changed files with 29 additions and 8 deletions

View file

@ -26,6 +26,7 @@ abstract class ArcanistBaseUnitTestEngine {
private $workingCopy;
private $paths;
private $arguments = array();
protected $diffID;
final public function __construct() {
@ -62,4 +63,12 @@ abstract class ArcanistBaseUnitTestEngine {
abstract public function run();
/**
* This function is called after run() when the diff is created
* Child classes should override this function if they want to
* do more with the diff ID.
*/
public function setDifferentialDiffID($id) {
$this->diffID = $id;
}
}

View file

@ -27,6 +27,7 @@ class ArcanistDiffWorkflow extends ArcanistBaseWorkflow {
private $unresolvedLint;
private $unresolvedTests;
private $diffID;
private $unitWorkflow;
public function getCommandHelp() {
return phutil_console_format(<<<EOTEXT
@ -295,6 +296,10 @@ EOTEXT
'differential.creatediff',
$diff);
if ($this->unitWorkflow) {
$this->unitWorkflow->setDifferentialDiffID($diff_info['diffid']);
}
if ($this->unresolvedLint) {
$data = array();
foreach ($this->unresolvedLint as $message) {
@ -1107,8 +1112,8 @@ EOTEXT
if ($repository_api instanceof ArcanistSubversionAPI) {
$argv = array_merge($argv, array_keys($paths));
}
$unit_workflow = $this->buildChildWorkflow('unit', $argv);
$unit_result = $unit_workflow->run();
$this->unitWorkflow = $this->buildChildWorkflow('unit', $argv);
$unit_result = $this->unitWorkflow->run();
switch ($unit_result) {
case ArcanistUnitWorkflow::RESULT_OKAY:
echo phutil_console_format(
@ -1133,7 +1138,7 @@ EOTEXT
break;
}
$this->unresolvedTests = $unit_workflow->getUnresolvedTests();
$this->unresolvedTests = $this->unitWorkflow->getUnresolvedTests();
return $unit_result;
} catch (ArcanistNoEngineException $ex) {

View file

@ -29,6 +29,7 @@ class ArcanistUnitWorkflow extends ArcanistBaseWorkflow {
const RESULT_SKIP = 3;
private $unresolvedTests;
private $engine;
public function getCommandHelp() {
return phutil_console_format(<<<EOTEXT
@ -92,12 +93,12 @@ EOTEXT
PhutilSymbolLoader::loadClass($engine_class);
$engine = newv($engine_class, array());
$engine->setWorkingCopy($working_copy);
$engine->setPaths($paths);
$engine->setArguments($this->getPassthruArgumentsAsMap('unit'));
$this->engine = newv($engine_class, array());
$this->engine->setWorkingCopy($working_copy);
$this->engine->setPaths($paths);
$this->engine->setArguments($this->getPassthruArgumentsAsMap('unit'));
$results = $engine->run();
$results = $this->engine->run();
$status_codes = array(
ArcanistUnitTestResult::RESULT_PASS => phutil_console_format(
@ -156,4 +157,10 @@ EOTEXT
return $this->unresolvedTests;
}
public function setDifferentialDiffID($id) {
if ($this->engine) {
$this->engine->setDifferentialDiffID($id);
}
}
}