Steps to Reproduce:
- Correctly set up a repository which contains a python project to work with arcanist.
- Ensure py.test --junit-xml=my_test_output executes tests appropriately.
- Ensure arcanist source is correctly liberated.
- Modify .arcconfig to include the following:
{
...
"load": [
"path/to/arcanist/src
],
"unit.engine": "PytestTestEngine"
}- Execute arc unit --no-coverage
Expected Result:
- arcanist loads test engine library and calls PytestTestEngine's run method.
- Test engine executes py.test
- Test results are displayed in terminal.
- No coverage information is displayed.
Actual Result:
- arcanist loads test engine library and calls PytestTestEngine's run method.
- No test results are displayed.
- Even though --no-coverage was used, an exception about the coverage command is raised:
Exception Command failed with error #127! COMMAND coverage xml -o '/private/var/folders/08/rbqy5jmn1rj8dv_4df5s9clw0000gn/T/5siiwl87brk8gg8c/7232-aMOGIU' STDOUT (empty) STDERR sh: coverage: command not found
Steps to Fix:
Modify PytestTestEngine at line 30 to make execution of coverage command conditional.
Current:
public function run() {
...
$future = new ExecFuture('coverage xml -o %s', $cover_tmp);
$future->setCWD($this->projectRoot);
$future->resolvex();
return $this->parseTestResults($junit_tmp, $cover_tmp);
}Correct:
public function run() {
...
if ($this->getEnableCoverage() !== false) {
$future = new ExecFuture('coverage xml -o %s', $cover_tmp);
$future->setCWD($this->projectRoot);
$future->resolvex();
}
return $this->parseTestResults($junit_tmp, $cover_tmp);
}