Fixes for Codeception plugin

This commit is contained in:
Dmitry Khomutov 2017-01-08 23:00:32 +07:00
commit 413230f5fc
No known key found for this signature in database
GPG key ID: 7EB36C9576F9ECB9
2 changed files with 10 additions and 31 deletions

View file

@ -12,8 +12,6 @@ Configuration
* **args** - Optional - The string of arguments to be passed to the run command.**Important**, due to the assumption made on line 132 regarding the value of `--xml` being the next argument which will not be correct if the user provides arguments using this config param, you must specify `report.xml` before any user input arguments to satisfy the report processing on line 146.
* **path** - Optional - The path from the root of your project to the root of the codeception _output directory
#### Default values
- config
@ -24,27 +22,10 @@ Configuration
- args
- Empty string
- path
- `tests/_output/`
### Examples
#### Example on running codeception with default settings (when tests are in tests/ directory):
```
codeception:
config: "codeception.yml"
path: "tests/"
args: "--no-ansi --coverage-html"
```
#### Example usage against the Yii2 framework
```
codeception:
allow_failures: false
config: "tests/codeception.yml"
path: "tests/codeception/_output/"
args: "report.xml --no-ansi --coverage-html"
```
The path value will need to be changed if you have your tests directory somewhere other than in the root of the project.

View file

@ -14,6 +14,7 @@ use PHPCensor\Helper\Lang;
use PHPCensor\Model\Build;
use PHPCensor\Plugin\Util\TestResultParsers\Codeception as Parser;
use PHPCensor\Plugin;
use Symfony\Component\Yaml\Parser as YamlParser;
use PHPCensor\ZeroConfigPluginInterface;
use Psr\Log\LogLevel;
@ -66,9 +67,6 @@ class Codeception extends Plugin implements ZeroConfigPluginInterface
if (isset($options['args'])) {
$this->args = (string) $options['args'];
}
if (isset($options['path'])) {
$this->path = $options['path'];
}
}
/**
@ -121,8 +119,6 @@ class Codeception extends Plugin implements ZeroConfigPluginInterface
*/
protected function runConfigFile($configPath)
{
$this->builder->logExecOutput(false);
$codeception = $this->builder->findBinary('codecept');
if (!$codeception) {
@ -140,12 +136,15 @@ class Codeception extends Plugin implements ZeroConfigPluginInterface
$configPath = $this->builder->buildPath . $configPath;
$success = $this->builder->executeCommand($cmd, $this->builder->buildPath, $configPath);
$this->builder->log(
'Codeception XML path: '. $this->builder->buildPath . $this->path . 'report.xml',
LogLevel::DEBUG
);
$parser = new YamlParser();
$yaml = file_get_contents($configPath);
$config = (array)$parser->parse($yaml);
$xml = file_get_contents($this->builder->buildPath . $this->path . 'report.xml', false);
if ($config && isset($config['paths']['log'])) {
$this->path = $config['paths']['log'] . DIRECTORY_SEPARATOR;
}
$xml = file_get_contents($this->builder->buildPath . $this->path . 'report.xml', false);
$parser = new Parser($this->builder, $xml);
$output = $parser->parse();
@ -158,7 +157,6 @@ class Codeception extends Plugin implements ZeroConfigPluginInterface
$this->build->storeMeta('codeception-meta', $meta);
$this->build->storeMeta('codeception-data', $output);
$this->build->storeMeta('codeception-errors', $parser->getTotalFailures());
$this->builder->logExecOutput(true);
return $success;
}