4
* Manages unit test execution.
6
abstract class ArcanistUnitTestEngine {
10
private $arguments = array();
12
private $enableAsyncTests;
13
private $enableCoverage;
18
public function setRunAllTests($run_all_tests) {
19
if (!$this->supportsRunAllTests() && $run_all_tests) {
20
$class = get_class($this);
22
"Engine '{$class}' does not support --everything.");
25
$this->runAllTests = $run_all_tests;
29
public function getRunAllTests() {
30
return $this->runAllTests;
33
protected function supportsRunAllTests() {
37
final public function __construct() {}
39
public function setConfigurationManager(
40
ArcanistConfigurationManager $configuration_manager) {
41
$this->configurationManager = $configuration_manager;
45
public function getConfigurationManager() {
46
return $this->configurationManager;
49
final public function setWorkingCopy(
50
ArcanistWorkingCopyIdentity $working_copy) {
52
// TODO: Remove this once ArcanistBaseUnitTestEngine is gone.
53
if ($this instanceof ArcanistBaseUnitTestEngine) {
55
'ArcanistBaseUnitTestEngine',
56
'You should extend from `ArcanistUnitTestEngine` instead.');
59
$this->workingCopy = $working_copy;
63
final public function getWorkingCopy() {
64
return $this->workingCopy;
67
final public function setPaths(array $paths) {
68
$this->paths = $paths;
72
final public function getPaths() {
76
final public function setArguments(array $arguments) {
77
$this->arguments = $arguments;
81
final public function getArgument($key, $default = null) {
82
return idx($this->arguments, $key, $default);
85
final public function setEnableAsyncTests($enable_async_tests) {
86
$this->enableAsyncTests = $enable_async_tests;
90
final public function getEnableAsyncTests() {
91
return $this->enableAsyncTests;
94
final public function setEnableCoverage($enable_coverage) {
95
$this->enableCoverage = $enable_coverage;
99
final public function getEnableCoverage() {
100
return $this->enableCoverage;
103
public function setRenderer(ArcanistUnitRenderer $renderer) {
104
$this->renderer = $renderer;
108
abstract public function run();
111
* Modify the return value of this function in the child class, if you do
112
* not need to echo the test results after all the tests have been run. This
113
* is the case for example when the child class prints the tests results
114
* while the tests are running.
116
public function shouldEchoTestResults() {