diff options
Diffstat (limited to 'src/pkg/flag/flag_test.go')
-rw-r--r-- | src/pkg/flag/flag_test.go | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/pkg/flag/flag_test.go b/src/pkg/flag/flag_test.go index 83bf7eebf..4ebb73805 100644 --- a/src/pkg/flag/flag_test.go +++ b/src/pkg/flag/flag_test.go @@ -7,6 +7,7 @@ package flag_test import ( . "flag" "fmt" + "os" "testing" ) @@ -161,10 +162,7 @@ func (f *flagVar) String() string { } func (f *flagVar) Set(value string) bool { - n := make(flagVar, len(*f)+1) - copy(n, *f) - *f = n - (*f)[len(*f)-1] = value + *f = append(*f, value) return true } @@ -183,3 +181,21 @@ func TestUserDefined(t *testing.T) { t.Errorf("expected value %q got %q", expect, v.String()) } } + +func TestChangingArgs(t *testing.T) { + ResetForTesting(func() { t.Fatal("bad parse") }) + oldArgs := os.Args + defer func() { os.Args = oldArgs }() + os.Args = []string{"cmd", "-before", "subcmd", "-after", "args"} + before := Bool("before", false, "") + Parse() + cmd := Arg(0) + os.Args = Args() + after := Bool("after", false, "") + Parse() + args := Args() + + if !*before || cmd != "subcmd" || !*after || len(args) != 1 || args[0] != "args" { + t.Fatalf("expected true subcmd true [args] got %v %v %v %v", *before, cmd, *after, args) + } +} |