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 theshunit2
test runner. See here for the final implementation.
- Set up a test target type
Usually, you will want to add a "test" target type for your language, such as shell_test
or python_test
. A test target contrasts with a "source" target, such as shell_source
. A test target is useful so that ./pants test ::
doesn't try to run tests on non-test files.
When creating a test target, you should usually subclass SingleSourceField
. You may also want to create TimeoutField
, 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,
SingleSourceField,
Target,
)
class ShellSourceField(SingleSourceField):
expected_file_extensions = (".sh",)
class ShellTestSourceField(SingleSourceField):
pass
class ShellTestTimeoutField(IntField):
alias = "timeout"
help = "Whether to time out after a certain period of time."
class ShellTestTarget(Target):
alias = "bash_tests"
help = "Shell tests that are run via `shunit2`."
core_fields = (*COMMON_TARGET_FIELDS, Dependencies, ShellTestSourceField, ShellTestTimeoutField)
- Set up a subclass of
TestFieldSet
Updated about 1 month ago
Did this page help you?