diff options
| author | Tomas Aschan <[email protected]> | 2025-08-31 21:49:19 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-31 21:49:19 +0200 |
| commit | b9c16fa5ec31cd7339621b8d208bf4f2769486c4 (patch) | |
| tree | d40000fba0de4dd93b4bd6389632c9918c49f282 /flag_test.go | |
| parent | 40abc492254e0920cbb9fb31d6fe7184e746ad31 (diff) | |
| parent | d25dd242b134a8ca037812921a93cac978b86fd5 (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.go | 40 |
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") |
