summaryrefslogtreecommitdiffstats
path: root/src/cmd/go/chdir_test.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/cmd/go/chdir_test.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/cmd/go/chdir_test.go b/src/cmd/go/chdir_test.go
new file mode 100644
index 0000000..44cbb9c
--- /dev/null
+++ b/src/cmd/go/chdir_test.go
@@ -0,0 +1,49 @@
+// Copyright 2022 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 (
+ "cmd/go/internal/base"
+ "os"
+ "strings"
+ "testing"
+)
+
+func TestChdir(t *testing.T) {
+ // We want -C to apply to every go subcommand.
+ // Test that every command either has a -C flag registered
+ // or has CustomFlags set. In the latter case, the command
+ // must be explicitly tested in TestScript/chdir.
+ script, err := os.ReadFile("testdata/script/chdir.txt")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var walk func(string, *base.Command)
+ walk = func(name string, cmd *base.Command) {
+ if len(cmd.Commands) > 0 {
+ for _, sub := range cmd.Commands {
+ walk(name+" "+sub.Name(), sub)
+ }
+ return
+ }
+ if !cmd.Runnable() {
+ return
+ }
+ if cmd.CustomFlags {
+ if !strings.Contains(string(script), "# "+name+"\n") {
+ t.Errorf("%s has custom flags, not tested in testdata/script/chdir.txt", name)
+ }
+ return
+ }
+ f := cmd.Flag.Lookup("C")
+ if f == nil {
+ t.Errorf("%s has no -C flag", name)
+ } else if f.Usage != "AddChdirFlag" {
+ t.Errorf("%s has -C flag but not from AddChdirFlag", name)
+ }
+ }
+ walk("go", base.Go)
+}