summaryrefslogtreecommitdiff
path: root/parse_test.go
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2017-02-22 08:38:08 -0800
committerGitHub <[email protected]>2017-02-22 08:38:08 -0800
commit8488cf10ceffaa0c78f84ce82b38374c3e546940 (patch)
treecfd3ee1c762816d94079ffb0fead78db1a261dd1 /parse_test.go
parent2c249ee1fcc1d48bb2e8071c3396f7c97a383dd3 (diff)
parentc4c162448c8e84495e6fe7435c73291c05530f6d (diff)
Merge pull request #48 from alexflint/parse_hyphen
deal with "-" as option value
Diffstat (limited to 'parse_test.go')
-rw-r--r--parse_test.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/parse_test.go b/parse_test.go
index 5e88700..91e17bb 100644
--- a/parse_test.go
+++ b/parse_test.go
@@ -693,3 +693,49 @@ func TestEmptyArgs(t *testing.T) {
// put the original arguments back
os.Args = origArgs
}
+
+func TestTooManyHyphens(t *testing.T) {
+ var args struct {
+ TooManyHyphens string `arg:"---x"`
+ }
+ err := parse("--foo -", &args)
+ assert.Error(t, err)
+}
+
+func TestHyphenAsOption(t *testing.T) {
+ var args struct {
+ Foo string
+ }
+ err := parse("--foo -", &args)
+ require.NoError(t, err)
+ assert.Equal(t, "-", args.Foo)
+}
+
+func TestHyphenAsPositional(t *testing.T) {
+ var args struct {
+ Foo string `arg:"positional"`
+ }
+ err := parse("-", &args)
+ require.NoError(t, err)
+ assert.Equal(t, "-", args.Foo)
+}
+
+func TestHyphenInMultiOption(t *testing.T) {
+ var args struct {
+ Foo []string
+ Bar int
+ }
+ err := parse("--foo --- x - y --bar 3", &args)
+ require.NoError(t, err)
+ assert.Equal(t, []string{"---", "x", "-", "y"}, args.Foo)
+ assert.Equal(t, 3, args.Bar)
+}
+
+func TestHyphenInMultiPositional(t *testing.T) {
+ var args struct {
+ Foo []string `arg:"positional"`
+ }
+ err := parse("--- x - y", &args)
+ require.NoError(t, err)
+ assert.Equal(t, []string{"---", "x", "-", "y"}, args.Foo)
+}