atoum / ruler-extension
The atoum ruler-extension allows you to filter your tests using Hoa\Ruler
Installs: 37 005
Dependents: 2
Suggesters: 0
Security: 0
Stars: 9
Watchers: 9
Forks: 4
Open Issues: 2
Requires
- atoum/atoum: ^2.9 | ^3.0
- hoa/ruler: >=1.15.11.09,<2.0 | >=2.16.01.15,<3.0
Conflicts
- hoa/compiler: <2.14.12.10
- hoa/core: <2.14.12.10
- hoa/file: <0.14.12.10
- hoa/stream: <0.14.12.10
- hoa/visitor: <1.14.12.10
This package is auto-updated.
Last update: 2024-10-29 03:58:45 UTC
README
This extension allows you to precisely filter test cases to run with a "natural language".
The extension adds a --filter
option to atoum. This line now appears on the atoum help:
--filter: Filters tests to execute. For example 'not("featureA" in tags) and namespace = "foo\bar"'
You can now filter your tests using any Hoa\Ruler filter.
Example
./vendor/bin/atoum -d tests --filter 'not("featureA" in tags) and namespace = "foo\bar"'
This will only launch test that are not tagged with "featureA" and have the foo\bar
namespace.
Available filters
Those variables are available in the filter:
method
class
namespace
testedclass
testedclassnamespace
tags
(as an array)extensions
(as an array)
Install it
Install extension using composer:
composer require --dev atoum/ruler-extension
The extension will be automatically loaded. If you ever want to unload it, you can add this to your configuration file:
<?php // .atoum.php use mageekguy\atoum\ruler; $runner->removeExtension(ruler\extension::class);
Examples
Filter on tags
Run all tests who have the needsDatabase
tag:
./vendor/bin/atoum -d tests --filter 'tags contains "needsDatabase"'
Run all tests except those who have the needsDatabase
tag:
./vendor/bin/atoum -d tests --filter 'not (tags contains "needsDatabase")'
You can also use the ruler's default in
operator, but in that case that's less readable:
./vendor/bin/atoum -d tests --filter 'not ("needsDatabase" in tags)'
Read more about tags in atoum's documentation.
Filter on the test method name
Run all tests with a method named testMethod1
:
./vendor/bin/atoum -d tests --filter 'method = "testMethod1'
Run all tests with a method named testMethod1
(using an array representing a list of methods to filter):
./vendor/bin/atoum -d tests --filter 'method in ["testMethod1"]'
Filter on the test classname
Run the test with the mageekguy\atoum\ruler\tests\units\testClass1
classname:
./vendor/bin/atoum -d tests --filter 'class = "mageekguy\atoum\ruler\tests\units\testClass1'
Filter on the test namespace
Run all tests in the mageekguy\atoum\ruler\tests\units
namespace:
./vendor/bin/atoum -d tests --filter 'namespace = "mageekguy\atoum\ruler\tests\units'
Filter on the tested class name
Run the tests that test the mageekguy\atoum\ruler\testClass1
class:
./vendor/bin/atoum -d tests --filter 'testedclass = "mageekguy\atoum\ruler\testClass1'
Filter on the tested class namespace
Run the tests that test the classes in the mageekguy\atoum\ruler
namespace:
./vendor/bin/atoum -d tests --filter 'testedclassnamespace = "mageekguy\atoum\ruler'
Filter on the test required extensions
Run all tests that needs the blackfire extension :
./vendor/bin/atoum -d tests --filter 'extensions contains "blackfire"'
You can also use the ruler's default in
operator, but in that case that's less readable:
./vendor/bin/atoum -d tests --filter '"blackfire" in tags'
You can read more about the test required extensions in atoum's documentation.
Apply multiple filters
You can also define more complex filters like this: Run all tests tagged needsDatabase
and with method testClass1
or with a method testClass
:
./vendor/bin/atoum --filter '("needsDatabase" in tags and method = "testClass1") or (method = "testClass")'
Links
License
ruler-extension is released under the MIT License. See the bundled LICENSE file for details.