lithium\console\command\Test::run()
Runs tests given a path to a directory or file containing tests. The path to the test(s) may be absolute or relative to the current working directory.
li3 test lithium/tests/cases/core/LibrariesTest.php
li3 test lithium/tests/cases/core
If you are in the working directory of an application or plugin and wish to run all tests, simply execute the following:
li3 test tests/cases
If you are in the working directory of an application and wish to run a plugin, execute one of the following:
li3 test libraries/<plugin>/tests/cases
li3 test <plugin>/tests/cases
This will run <library>/tests/cases/<package>/<class>Test.php
:
li3 test <library>/<package>/<class>.php
Parameters
-
string
$path
Absolute or relative path to tests or a file which corresponding test should be run.
Returns
integer|booleanWill (indirectly) exit with status 1
if one or more tests
failed otherwise with 0
.
Source
public function run($path = null) {
if (!$path = $this->_path($path)) {
return false;
}
if (!preg_match('/(tests|Test\.php)/', $path)) {
if (!$path = Unit::get($path)) {
$this->error('Cannot map path to test path.');
return static::EXIT_NO_TEST;
}
}
$handlers = $this->_handlers;
if (!isset($handlers[$this->format]) || !is_callable($handlers[$this->format])) {
$this->error(sprintf('No handler for format `%s`... ', $this->format));
return false;
}
$filters = $this->filters ? array_map('trim', explode(',', $this->filters)) : [];
$params = compact('filters') + ['format' => $this->format];
$runner = function($options = []) use ($path, $params) {
return Dispatcher::run($path, $params + $options);
};
$report = $handlers[$this->format]($runner, $path);
$stats = $report->stats();
return $stats['success'];
}