@@ -678,28 +678,35 @@ func TestParseOpts(t *testing.T) {
678
678
{"dbname=hello user= goodbye" , values {"dbname" : "hello" , "user" : "goodbye" }, true },
679
679
{"host=localhost password='correct horse battery staple'" , values {"host" : "localhost" , "password" : "correct horse battery staple" }, true },
680
680
{"dbname=データベース password=パスワード" , values {"dbname" : "データベース" , "password" : "パスワード" }, true },
681
+ {"dbname=hello user=''" , values {"dbname" : "hello" , "user" : "" }, true },
682
+ {"user='' dbname=hello" , values {"dbname" : "hello" , "user" : "" }, true },
683
+ // The last option value is an empty string if there's no non-whitespace after its =
684
+ {"dbname=hello user= " , values {"dbname" : "hello" , "user" : "" }, true },
681
685
682
686
// The parser ignores spaces after = and interprets the next set of non-whitespace characters as the value.
683
687
{"user= password=foo" , values {"user" : "password=foo" }, true },
684
688
685
- // The parser ignores trailing keys
686
- {"user=foo blah" , values {"user" : "foo" }, true },
687
- {"user=foo blah " , values {"user" : "foo" }, true },
688
- {"user=foo blah= " , values {"user" : "foo" }, true },
689
-
690
689
// No '=' after the key
690
+ {"postgre://marko@internet" , values {}, false },
691
691
{"dbname user=goodbye" , values {}, false },
692
+ {"user=foo blah" , values {}, false },
693
+ {"user=foo blah " , values {}, false },
694
+
692
695
// Unterminated quoted value
693
696
{"dbname=hello user='unterminated" , values {}, false },
694
697
}
695
698
696
699
for _ , test := range tests {
697
700
o := make (values )
698
701
err := parseOpts (test .in , o )
699
- if err != nil && test .valid {
702
+
703
+ switch {
704
+ case err != nil && test .valid :
700
705
t .Errorf ("%q got unexpected error: %s" , test .in , err )
701
- } else if err == nil && ! reflect .DeepEqual (test .expected , o ) {
706
+ case err == nil && test . valid && ! reflect .DeepEqual (test .expected , o ):
702
707
t .Errorf ("%q got: %#v want: %#v" , test .in , o , test .expected )
708
+ case err == nil && ! test .valid :
709
+ t .Errorf ("%q expected an error" , test .in )
703
710
}
704
711
}
705
712
}
0 commit comments