HomeDocs
DocsCommunityTestimonialsUsersGitHubTwitterBlogJobsTermsPrivacyCookies
TermsPrivacyCookies

Options for Go tests.

Backend: pants.backend.experimental.go
Config section: [go-test]

Basic options

args

--go-test-args="[<shell_str>, <shell_str>, ...]", ... -- [<shell_str> [<shell_str> [...]]]

PANTS_GO_TEST_ARGS

default: []

Arguments to pass directly to Go test binary, e.g. --go-test-args='-run TestFoo -v'.

Known Go test options will be transformed into the form expected by the test binary, e.g. -v becomes -test.v. Run go help testflag from the Go SDK to learn more about the options supported by Go test binaries.


cover_mode

--go-test-cover-mode=<GoCoverMode>

PANTS_GO_TEST_COVER_MODE

one of: set, count, atomic
default: set

Coverage mode to use when running Go tests with coverage analysis enabled via --test-use-coverage. Valid values are set, count, and atomic:

  • set: bool: does this statement run?

  • count: int: how many times does this statement run?

  • atomic: int: count, but correct in multithreaded tests; significantly more expensive.


coverage_html

--[no-]go-test-coverage-html

PANTS_GO_TEST_COVERAGE_HTML

default: True

If true, then convert coverage reports to HTML format and write a coverage.html file next to the raw coverage data.


coverage_packages

--go-test-coverage-packages="['<str>', '<str>', ...]"

PANTS_GO_TEST_COVERAGE_PACKAGES

default: []

A list of "import path patterns" for determining which import paths will be instrumented for code coverage.

From go help packages:

An import path is a pattern if it includes one or more "..." wildcards, each of which can match any string, including the empty string and strings containing slashes. Such a pattern expands to all package directories found in the GOPATH trees with names matching the patterns.

To make common patterns more convenient, there are two special cases. First, /... at the end of the pattern can match an empty string, so that net/... matches both net and packages in its subdirectories, like net/http. Second, any slash-separated pattern element containing a wildcard never participates in a match of the "vendor" element in the path of a vendored package, so that ./... does not match packages in subdirectories of ./vendor or ./mycode/vendor, but ./vendor/... and ./mycode/vendor/... do. Note, however, that a directory named vendor that itself contains code is not a vendored package: cmd/vendor would be a command named vendor, and the pattern cmd/... matches it. See golang.org/s/go15vendor for more about vendoring.

This option is similar to the go test -coverpkg option, but without support currently for reserved import path patterns like std and all.


skip

--[no-]go-test-skip

PANTS_GO_TEST_SKIP

default: False

If true, don't use Go test binary when running pants test.


force_race

--[no-]go-test-force-race

PANTS_GO_TEST_FORCE_RACE

default: False

If true, then always enable the Go data race detector when running tests regardless of the test-by-test test_race field on the relevant go_package target.

See https://go.dev/doc/articles/race_detector for additional information about the Go data race detector.


force_msan

--[no-]go-test-force-msan

PANTS_GO_TEST_FORCE_MSAN

default: False

If true, then always enable interoperation between Go and the C/C++ "memory sanitizer" when running tests regardless of the test-by-test msan field on the relevant go_package target.

See https://github.com/google/sanitizers/wiki/MemorySanitizer for additional information about the C/C++ memory sanitizer.


force_asan

--[no-]go-test-force-asan

PANTS_GO_TEST_FORCE_ASAN

default: False

If true, then always enable interoperation between Go and the C/C++ "address sanitizer" when running tests regardless of the test-by-test asan field on the relevant go_package target.

See https://github.com/google/sanitizers/wiki/AddressSanitizer for additional information about the C/C++ address sanitizer.


block_profile

--[no-]go-test-block-profile

PANTS_GO_TEST_BLOCK_PROFILE

default: False

Capture a goroutine blocking profile from the execution of the test runner. The profile will be written to the file block.out in the test extra output directory. The test binary will also be written to the test extra output directory.


cpu_profile

--[no-]go-test-cpu-profile

PANTS_GO_TEST_CPU_PROFILE

default: False

Capture a CPU profile from the execution of the test runner. The profile will be written to the file cpu.out in the test extra output directory. The test binary will also be written to the test extra output directory.


mem_profile

--[no-]go-test-mem-profile

PANTS_GO_TEST_MEM_PROFILE

default: False

Capture an allocation profile from the execution of the test runner after tests have passed. The profile will be written to the file mem.out in the test extra output directory. The test binary will also be written to the test extra output directory.


mutex_profile

--[no-]go-test-mutex-profile

PANTS_GO_TEST_MUTEX_PROFILE

default: False

Capture a mutex contention profile from the execution of the test runner when all tests are complete. The profile will be written to the file mutex.out in the test extra output directory. The test binary will also be written to the test extra output directory.


trace

--[no-]go-test-trace

PANTS_GO_TEST_TRACE

default: False

Capture an execution trace from the execution of the test runner. The trace will be written to the file trace.out in the test extra output directory.


Advanced options

coverage_output_dir

--go-test-coverage-output-dir=<str>

PANTS_GO_TEST_COVERAGE_OUTPUT_DIR

default: {distdir}/coverage/go/{target_spec}

Path to write the Go coverage reports to. Must be relative to the build root.

Replacements:

  • {distdir} is replaced with the Pants distdir.

  • {target_spec} is replaced with the address of the applicable go_package target with / characters replaced with dots (.).

  • {import_path} is replaced with the applicable package's import path. Subdirectories will be made for any path components separated by / characters.

  • {import_path_escaped} is replaced with the applicable package's import path but with slashes converted to underscores. This is deprecated and only exists to support behavior from earlier versions.


output_test_binary

--[no-]go-test-output-test-binary

PANTS_GO_TEST_OUTPUT_TEST_BINARY

default: False

Write the test binary to the test extra output directory.

This is similar to the go test -c option, but will still run the underlying test.


Deprecated options

None