-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix dynamicvar incorrect parsing on bool values (#151)
* Fix dynamicvar incorrect parsing on bool values * add tests
- Loading branch information
1 parent
993e0ee
commit a9d5d68
Showing
2 changed files
with
124 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
package goflags | ||
|
||
import ( | ||
"os" | ||
"testing" | ||
|
||
"github.com/stretchr/testify/assert" | ||
) | ||
|
||
func TestDynamicVar(t *testing.T) { | ||
t.Run("with bool as type", func(t *testing.T) { | ||
var b bool | ||
flagSet := NewFlagSet() | ||
flagSet.CreateGroup("Option", "option", | ||
flagSet.DynamicVar(&b, "kev", false, "kev with or without value"), | ||
) | ||
os.Args = []string{ | ||
os.Args[0], | ||
"-kev=false", | ||
} | ||
err := flagSet.Parse() | ||
assert.Nil(t, err) | ||
assert.Equal(t, false, b) | ||
tearDown(t.Name()) | ||
}) | ||
|
||
t.Run("without value for int as type", func(t *testing.T) { | ||
var i int | ||
flagSet := NewFlagSet() | ||
flagSet.CreateGroup("Option", "option", | ||
flagSet.DynamicVarP(&i, "concurrency", "c", 25, "concurrency for the process"), | ||
) | ||
os.Args = []string{ | ||
os.Args[0], | ||
"-c", | ||
} | ||
err := flagSet.Parse() | ||
assert.Nil(t, err) | ||
assert.Equal(t, 25, i) | ||
tearDown(t.Name()) | ||
}) | ||
|
||
t.Run("with value for int as type", func(t *testing.T) { | ||
var i int | ||
flagSet := NewFlagSet() | ||
flagSet.CreateGroup("Option", "option", | ||
flagSet.DynamicVarP(&i, "concurrency", "c", 25, "concurrency for the process"), | ||
) | ||
os.Args = []string{ | ||
os.Args[0], | ||
"-c=100", | ||
} | ||
err := flagSet.Parse() | ||
assert.Nil(t, err) | ||
assert.Equal(t, 100, i) | ||
tearDown(t.Name()) | ||
}) | ||
|
||
t.Run("with value for float64 as type", func(t *testing.T) { | ||
var f float64 | ||
flagSet := NewFlagSet() | ||
flagSet.CreateGroup("Option", "option", | ||
flagSet.DynamicVarP(&f, "percentage", "p", 0.0, "percentage for the process"), | ||
) | ||
os.Args = []string{ | ||
os.Args[0], | ||
"-p=100.0", | ||
} | ||
err := flagSet.Parse() | ||
assert.Nil(t, err) | ||
assert.Equal(t, 100.0, f) | ||
tearDown(t.Name()) | ||
}) | ||
|
||
t.Run("with value for string as type", func(t *testing.T) { | ||
var s string | ||
flagSet := NewFlagSet() | ||
flagSet.CreateGroup("Option", "option", | ||
flagSet.DynamicVarP(&s, "name", "n", "", "name of the user"), | ||
) | ||
os.Args = []string{ | ||
os.Args[0], | ||
"-n=test", | ||
} | ||
err := flagSet.Parse() | ||
assert.Nil(t, err) | ||
assert.Equal(t, "test", s) | ||
tearDown(t.Name()) | ||
}) | ||
|
||
t.Run("with value for string slice as type", func(t *testing.T) { | ||
var s []string | ||
flagSet := NewFlagSet() | ||
flagSet.CreateGroup("Option", "option", | ||
flagSet.DynamicVarP(&s, "name", "n", []string{}, "name of the user"), | ||
) | ||
os.Args = []string{ | ||
os.Args[0], | ||
"-n=test1,test2", | ||
} | ||
err := flagSet.Parse() | ||
assert.Nil(t, err) | ||
assert.Equal(t, []string{"test1", "test2"}, s) | ||
tearDown(t.Name()) | ||
}) | ||
|
||
} |