Quod Libet uses the CPython unittest framework for testing and pytest as a test runner. All testing related code can be found under quodlibet/tests.

To run the full tests suite simply execute:

./setup.py test

For checking the code coverage of the test suite run:

./setup.py coverage

Selecting a Specific Test

To only test a subset of the test suite, pass a comma separated list of test class names to setup.py via the --to-run option. For example:

./setup.py test --to-run=TMP3File,TAPICType

Similarly the coverage report can also be generated for a subset of tests:

./setup.py coverage --to-run=TMP3File,TAPICType

Selecting by class name can take a long time because it needs to import all tests first. To speed things up you can just use pytest directly:

py.test tests/test_formats_mp3.py
py.test tests/test_formats*
py.test tests/test_formats_mp3.py::TMP3File

To just run code quality tests:

py.test tests/quality

Some helpful py.test options are -s for not hiding stdout and -x for stopping on the first error. For more information check out https://docs.pytest.org/en/latest/usage.html

Abort on First Error

By passing -x to setup.py test the test suite will abort once it sees the first error instead of printing a summary of errors at the end:

./setup.py test -x