// Copyright 2019 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 test import ( "flag" "strings" "testing" ) func TestPassFlagToTestIncludesAllTestFlags(t *testing.T) { flag.VisitAll(func(f *flag.Flag) { if !strings.HasPrefix(f.Name, "test.") { return } name := strings.TrimPrefix(f.Name, "test.") switch name { case "testlogfile", "paniconexit0": // These are internal flags. default: if !passFlagToTest[name] { t.Errorf("passFlagToTest missing entry for %q (flag test.%s)", name, name) t.Logf("(Run 'go generate cmd/go/internal/test' if it should be added.)") } } }) for name := range passFlagToTest { if flag.Lookup("test."+name) == nil { t.Errorf("passFlagToTest contains %q, but flag -test.%s does not exist in test binary", name, name) } if CmdTest.Flag.Lookup(name) == nil { t.Errorf("passFlagToTest contains %q, but flag -%s does not exist in 'go test' subcommand", name, name) } } }