1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-29 02:02:40 +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 $workingCopy;
private $paths; private $paths;
private $arguments = array(); private $arguments = array();
protected $diffID;
final public function __construct() { final public function __construct() {
@ -62,4 +63,12 @@ abstract class ArcanistBaseUnitTestEngine {
abstract public function run(); 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 $unresolvedLint;
private $unresolvedTests; private $unresolvedTests;
private $diffID; private $diffID;
private $unitWorkflow;
public function getCommandHelp() { public function getCommandHelp() {
return phutil_console_format(<<<EOTEXT return phutil_console_format(<<<EOTEXT
@ -295,6 +296,10 @@ EOTEXT
'differential.creatediff', 'differential.creatediff',
$diff); $diff);
if ($this->unitWorkflow) {
$this->unitWorkflow->setDifferentialDiffID($diff_info['diffid']);
}
if ($this->unresolvedLint) { if ($this->unresolvedLint) {
$data = array(); $data = array();
foreach ($this->unresolvedLint as $message) { foreach ($this->unresolvedLint as $message) {
@ -1107,8 +1112,8 @@ EOTEXT
if ($repository_api instanceof ArcanistSubversionAPI) { if ($repository_api instanceof ArcanistSubversionAPI) {
$argv = array_merge($argv, array_keys($paths)); $argv = array_merge($argv, array_keys($paths));
} }
$unit_workflow = $this->buildChildWorkflow('unit', $argv); $this->unitWorkflow = $this->buildChildWorkflow('unit', $argv);
$unit_result = $unit_workflow->run(); $unit_result = $this->unitWorkflow->run();
switch ($unit_result) { switch ($unit_result) {
case ArcanistUnitWorkflow::RESULT_OKAY: case ArcanistUnitWorkflow::RESULT_OKAY:
echo phutil_console_format( echo phutil_console_format(
@ -1133,7 +1138,7 @@ EOTEXT
break; break;
} }
$this->unresolvedTests = $unit_workflow->getUnresolvedTests(); $this->unresolvedTests = $this->unitWorkflow->getUnresolvedTests();
return $unit_result; return $unit_result;
} catch (ArcanistNoEngineException $ex) { } catch (ArcanistNoEngineException $ex) {

View file

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