diff options
Diffstat (limited to 'src/internal/testenv/testenv_test.go')
-rw-r--r-- | src/internal/testenv/testenv_test.go | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/internal/testenv/testenv_test.go b/src/internal/testenv/testenv_test.go index 71cf9977e4..769db3a033 100644 --- a/src/internal/testenv/testenv_test.go +++ b/src/internal/testenv/testenv_test.go @@ -78,7 +78,7 @@ func TestHasGoBuild(t *testing.T) { // we will presumably find out about it when those tests fail.) switch runtime.GOOS { case "ios": - if strings.HasSuffix(b, "-corellium") { + if isCorelliumBuilder(b) { // The corellium environment is self-hosting, so it should be able // to build even though real "ios" devices can't exec. } else { @@ -89,7 +89,7 @@ func TestHasGoBuild(t *testing.T) { return } case "android": - if strings.HasSuffix(b, "-emu") && platform.MustLinkExternal(runtime.GOOS, runtime.GOARCH, false) { + if isEmulatedBuilder(b) && platform.MustLinkExternal(runtime.GOOS, runtime.GOARCH, false) { // As of 2023-05-02, the test environment on the emulated builders is // missing a C linker. t.Logf("HasGoBuild is false on %s", b) @@ -153,7 +153,7 @@ func TestMustHaveExec(t *testing.T) { t.Errorf("expected MustHaveExec to skip on %v", runtime.GOOS) } case "ios": - if b := testenv.Builder(); strings.HasSuffix(b, "-corellium") && !hasExec { + if b := testenv.Builder(); isCorelliumBuilder(b) && !hasExec { // Most ios environments can't exec, but the corellium builder can. t.Errorf("expected MustHaveExec not to skip on %v", b) } @@ -186,3 +186,23 @@ func TestCleanCmdEnvPWD(t *testing.T) { } t.Error("PWD not set in cmd.Env") } + +func isCorelliumBuilder(builderName string) bool { + // Support both the old infra's builder names and the LUCI builder names. + // The former's names are ad-hoc so we could maintain this invariant on + // the builder side. The latter's names are structured, and "corellium" will + // appear as a "host" suffix after the GOOS and GOARCH, which always begin + // with an underscore. + return strings.HasSuffix(builderName, "-corellium") || strings.Contains(builderName, "_corellium") +} + +func isEmulatedBuilder(builderName string) bool { + // Support both the old infra's builder names and the LUCI builder names. + // The former's names are ad-hoc so we could maintain this invariant on + // the builder side. The latter's names are structured, and the signifier + // of emulation "emu" will appear as a "host" suffix after the GOOS and + // GOARCH because it modifies the run environment in such a way that it + // the target GOOS and GOARCH may not match the host. This suffix always + // begins with an underscore. + return strings.HasSuffix(builderName, "-emu") || strings.Contains(builderName, "_emu") +} |