Run tests
How to add a new test runner to the test
goal.
Example repository
This guide walks through adding a simple test
implementation for Bash that runs the shunit2
test runner. See here for the final implementation.
1. Set up a tests target type
Usually, you will want to add a "tests" target type for your language, such as bash_tests
or python_tests
. A binary target contrasts with a "library" target, such as bash_library
. A test target is useful so that ./pants test ::
doesn't try to run tests on non-test files.
When creating a tests target, you should usually subclass the Sources
field and set the default
. You may also want to create a Timeout
field, which should subclass IntField
.
See Creating new targets for a guide on how to define new target types.
from pants.engine.target import COMMON_TARGET_FIELDS, Dependencies, IntField, Sources, Target
class BashSources(Sources):
expected_file_extensions = (".sh",)
class BashTestSources(BashSources):
default = ("*_test.sh", "test_*.sh")
class BashTestTimeout(IntField):
"""Whether to time out after a certain amount of time.
If unset, the test will never time out.
"""
alias = "timeout"
class BashTests(Target):
"""Bash tests that are run via `shunit2`."""
alias = "bash_tests"
core_fields = (*COMMON_TARGET_FIELDS, Dependencies, BashTestSources, BashTestTimeout)