If you have thousands of files and too many tests, running Mutation Testing can takes hours for your project. In this case, it’s very convenient to run it only for the modified files.
Assuming you are on a feature branch, and the main branch is
master, we can do it as the following:
CHANGED_FILES=$(git diff origin/master --diff-filter=AM --name-only | grep src/ | paste -sd "," -);
--diff-filter=AM returns only added and modified files, because we are not going to use removed ones.
--ignore-msi-with-no-mutations option tells Infection to not error on min MSI when we have
For each job, Travis CI fetches only tested branch:
git clone --depth=50 --branch=feature/branch
That’s why we need to fetch
$TRAVIS_BRANCH as well to make a
git diff possible. Otherwise, you will get an error:
fatal: ambiguous argument 'origin/master': unknown revision or path not in the working tree.
Mutators can be disabled in a config file -
infection.json.. Let’s say you don’t want to mutate
-. In order to disable this Mutator, the following config can be used:
The full list of Mutator names can be found here.
In this example, we explicitly enable all Mutators from
@default profile and disable
Read about Profiles here
To disable all Mutators that work with Regular Expressions, we should disable the whole
Sometimes you may want to disable Mutator or Profile just for one particular method or class. It’s possible with
ignore setting of Mutators and Profiles with the following syntax:
Want to ignore the thole class?
All classes in the namespace:
Product in any namespace:
Method of the class:
Method in all classes:
Method by pattern:
Internally, all patterns are passed to
fnmatch() PHP function. Please read its documentation to better understand how it works.