aboutsummaryrefslogtreecommitdiff
path: root/flag_test.go
diff options
context:
space:
mode:
authorTomas Aschan <[email protected]>2025-08-31 21:49:19 +0200
committerGitHub <[email protected]>2025-08-31 21:49:19 +0200
commitb9c16fa5ec31cd7339621b8d208bf4f2769486c4 (patch)
treed40000fba0de4dd93b4bd6389632c9918c49f282 /flag_test.go
parent40abc492254e0920cbb9fb31d6fe7184e746ad31 (diff)
parentd25dd242b134a8ca037812921a93cac978b86fd5 (diff)
Merge pull request #444 from spf13/reset-args-even-if-emptyv1.0.8
Reset args on re-parse even if empty
Diffstat (limited to 'flag_test.go')
-rw-r--r--flag_test.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/flag_test.go b/flag_test.go
index 2df3ea2..31491c8 100644
--- a/flag_test.go
+++ b/flag_test.go
@@ -656,6 +656,46 @@ func TestFlagSetParse(t *testing.T) {
testParse(NewFlagSet("test", ContinueOnError), t)
}
+func TestParseRepeated(t *testing.T) {
+ fs := NewFlagSet("test repeated", ContinueOnError)
+
+ t.Run("first parse", func(t *testing.T) {
+ err := fs.Parse([]string{"foo", "bar"})
+ if err != nil {
+ t.Fatal("expected no error, got ", err)
+ }
+
+ argsAfterFirst := fs.Args()
+ if !reflect.DeepEqual(argsAfterFirst, []string{"foo", "bar"}) {
+ t.Fatalf("expected args [foo bar], got %v", argsAfterFirst)
+ }
+ })
+
+ t.Run("re-parse with fewer args", func(t *testing.T) {
+ err := fs.Parse([]string{"baz"})
+ if err != nil {
+ t.Fatal("expected no error, got ", err)
+ }
+
+ argsAfterSecond := fs.Args()
+ if !reflect.DeepEqual(argsAfterSecond, []string{"baz"}) {
+ t.Fatalf("expected args [baz], got %v", argsAfterSecond)
+ }
+ })
+
+ t.Run("re-parse with no args", func(t *testing.T) {
+ err := fs.Parse([]string{})
+ if err != nil {
+ t.Fatal("expected no error, got ", err)
+ }
+
+ argsAfterThird := fs.Args()
+ if !reflect.DeepEqual(argsAfterThird, []string{}) {
+ t.Fatalf("expected args [], got %v", argsAfterThird)
+ }
+ })
+}
+
func TestChangedHelper(t *testing.T) {
f := NewFlagSet("changedtest", ContinueOnError)
f.Bool("changed", false, "changed bool")