aboutsummaryrefslogtreecommitdiff
path: root/src/internal/testenv
diff options
context:
space:
mode:
authorMichael Pratt <mpratt@google.com>2025-01-22 17:18:19 -0500
committerGopher Robot <gobot@golang.org>2025-05-19 11:00:01 -0700
commit2c929d6f4c8fcd1021dc3cd57b2eedff5ae9a592 (patch)
treebd5dc12ab00823fa1f4450eb838cf0eb4d2abfb8 /src/internal/testenv
parent5afada035ced1f89267d3177a9fb75fab4df81ff (diff)
downloadgo-2c929d6f4c8fcd1021dc3cd57b2eedff5ae9a592.tar.xz
runtime: pass through -asan/-msan/-race to testprog tests
The tests using testprog / testprogcgo are currently not covered on the asan/msan/race builders because they don't build testprog with the sanitizer flag. Explicitly pass the flag if the test itself is built with the sanitizer. There were a few tests that explicitly passed -race (even on non-race builders). These tests will now only run on race builders. For #71395. Cq-Include-Trybots: luci.golang.try:gotip-linux-amd64-asan-clang15,gotip-linux-amd64-msan-clang15,gotip-linux-amd64-race Change-Id: I6a6a636ce8271246316a80d426c0e4e2f6ab99c5 Reviewed-on: https://go-review.googlesource.com/c/go/+/643897 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Auto-Submit: Michael Pratt <mpratt@google.com>
Diffstat (limited to 'src/internal/testenv')
-rw-r--r--src/internal/testenv/testenv.go20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/internal/testenv/testenv.go b/src/internal/testenv/testenv.go
index ac65ce53fb..0f6c9bbdad 100644
--- a/src/internal/testenv/testenv.go
+++ b/src/internal/testenv/testenv.go
@@ -335,13 +335,27 @@ func CanInternalLink(withCgo bool) bool {
return !platform.MustLinkExternal(runtime.GOOS, runtime.GOARCH, withCgo)
}
+// SpecialBuildTypes are interesting build types that may affect linking.
+type SpecialBuildTypes struct {
+ Cgo bool
+ Asan bool
+ Msan bool
+ Race bool
+}
+
+// NoSpecialBuildTypes indicates a standard, no cgo go build.
+var NoSpecialBuildTypes SpecialBuildTypes
+
// MustInternalLink checks that the current system can link programs with internal
// linking.
// If not, MustInternalLink calls t.Skip with an explanation.
-func MustInternalLink(t testing.TB, withCgo bool) {
- if !CanInternalLink(withCgo) {
+func MustInternalLink(t testing.TB, with SpecialBuildTypes) {
+ if with.Asan || with.Msan || with.Race {
+ t.Skipf("skipping test: internal linking with sanitizers is not supported")
+ }
+ if !CanInternalLink(with.Cgo) {
t.Helper()
- if withCgo && CanInternalLink(false) {
+ if with.Cgo && CanInternalLink(false) {
t.Skipf("skipping test: internal linking on %s/%s is not supported with cgo", runtime.GOOS, runtime.GOARCH)
}
t.Skipf("skipping test: internal linking on %s/%s is not supported", runtime.GOOS, runtime.GOARCH)