// Copyright 2023 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "internal/platform" "testing" ) // TestSupportedBuildModes tests that dist and the main tools agree on // which build modes are supported for a given target. We do things // this way because the dist tool needs to be buildable directly by // the bootstrap compiler, and as such can't import internal packages. func TestSupported(t *testing.T) { defer func(a, o string) { goarch = a goos = o }(goarch, goos) var modes = []string{ // we assume that "exe" and "archive" always work "pie", "c-archive", "c-shared", "shared", "plugin", } for _, a := range okgoarch { goarch = a for _, o := range okgoos { if _, ok := cgoEnabled[o+"/"+a]; !ok { continue } goos = o for _, mode := range modes { var dt tester dist := dt.supportedBuildmode(mode) std := platform.BuildModeSupported("gc", mode, o, a) if dist != std { t.Errorf("discrepancy for %s-%s %s: dist says %t, standard library says %t", o, a, mode, dist, std) } } } } }