summaryrefslogtreecommitdiff
path: root/parse_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'parse_test.go')
-rw-r--r--parse_test.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/parse_test.go b/parse_test.go
index f75d1a7..5cae598 100644
--- a/parse_test.go
+++ b/parse_test.go
@@ -910,6 +910,44 @@ func TestEmbeddedPtrIgnored(t *testing.T) {
assert.Equal(t, 321, args.Y)
}
+func TestEmbeddedWithDuplicateField(t *testing.T) {
+ // see https://github.com/alexflint/go-arg/issues/100
+ type T struct {
+ A string `arg:"--cat"`
+ }
+ type U struct {
+ A string `arg:"--dog"`
+ }
+ var args struct {
+ T
+ U
+ }
+
+ err := parse("--cat=cat --dog=dog", &args)
+ require.NoError(t, err)
+ assert.Equal(t, "cat", args.T.A)
+ assert.Equal(t, "dog", args.U.A)
+}
+
+func TestEmbeddedWithDuplicateField2(t *testing.T) {
+ // see https://github.com/alexflint/go-arg/issues/100
+ type T struct {
+ A string
+ }
+ type U struct {
+ A string
+ }
+ var args struct {
+ T
+ U
+ }
+
+ err := parse("--a=xyz", &args)
+ require.NoError(t, err)
+ assert.Equal(t, "xyz", args.T.A)
+ assert.Equal(t, "", args.U.A)
+}
+
func TestEmptyArgs(t *testing.T) {
origArgs := os.Args