Merge remote-tracking branch 'upstream/master'
This commit is contained in:
+55
-4
@@ -268,9 +268,8 @@ func TestFileContentFlag(t *testing.T) {
|
||||
var cli struct {
|
||||
File kong.FileContentFlag
|
||||
}
|
||||
f, err := os.CreateTemp("", "")
|
||||
f, err := os.CreateTemp(t.TempDir(), "")
|
||||
assert.NoError(t, err)
|
||||
defer os.Remove(f.Name())
|
||||
fmt.Fprint(f, "hello world")
|
||||
f.Close()
|
||||
_, err = mustNew(t, &cli).Parse([]string{"--file", f.Name()})
|
||||
@@ -282,9 +281,8 @@ func TestNamedFileContentFlag(t *testing.T) {
|
||||
var cli struct {
|
||||
File kong.NamedFileContentFlag
|
||||
}
|
||||
f, err := os.CreateTemp("", "")
|
||||
f, err := os.CreateTemp(t.TempDir(), "")
|
||||
assert.NoError(t, err)
|
||||
defer os.Remove(f.Name())
|
||||
fmt.Fprint(f, "hello world")
|
||||
f.Close()
|
||||
_, err = mustNew(t, &cli).Parse([]string{"--file", f.Name()})
|
||||
@@ -397,6 +395,31 @@ func TestNumbers(t *testing.T) {
|
||||
I64: math.MinInt64,
|
||||
}, cli)
|
||||
})
|
||||
t.Run("Integer literals", func(t *testing.T) {
|
||||
integerLiterals := "10_0"
|
||||
|
||||
_, err := p.Parse([]string{
|
||||
fmt.Sprintf("--i-8=%s", integerLiterals),
|
||||
fmt.Sprintf("--i-16=%s", integerLiterals),
|
||||
fmt.Sprintf("--i-32=%s", integerLiterals),
|
||||
fmt.Sprintf("--i-64=%s", integerLiterals),
|
||||
fmt.Sprintf("--u-8=%s", integerLiterals),
|
||||
fmt.Sprintf("--u-16=%s", integerLiterals),
|
||||
fmt.Sprintf("--u-32=%s", integerLiterals),
|
||||
fmt.Sprintf("--u-64=%s", integerLiterals),
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, CLI{
|
||||
I8: int8(100),
|
||||
I16: int16(100),
|
||||
I32: int32(100),
|
||||
I64: int64(100),
|
||||
U8: uint8(100),
|
||||
U16: uint16(100),
|
||||
U32: uint32(100),
|
||||
U64: uint64(100),
|
||||
}, cli)
|
||||
})
|
||||
}
|
||||
|
||||
func TestJSONLargeNumber(t *testing.T) {
|
||||
@@ -756,3 +779,31 @@ func TestValuesThatLookLikeFlags(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, map[string]string{"-foo": "-bar"}, cli.Map)
|
||||
}
|
||||
|
||||
type DecodeCLI struct {
|
||||
Foo DecodeFoo `env:"FOO"`
|
||||
}
|
||||
|
||||
type DecodeFoo struct {
|
||||
Bar string
|
||||
}
|
||||
|
||||
func (f DecodeFoo) Decode(ctx *kong.DecodeContext) error {
|
||||
ctx.Value.Target.Set(reflect.ValueOf(struct {
|
||||
Bar string
|
||||
}{"baz"}))
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestDecode(t *testing.T) {
|
||||
c := &DecodeCLI{}
|
||||
parser, err := kong.New(c)
|
||||
assert.NoError(t, err)
|
||||
|
||||
t.Setenv("FOO", "foo")
|
||||
|
||||
_, err = parser.Parse([]string{})
|
||||
assert.NoError(t, err)
|
||||
|
||||
assert.Equal(t, c.Foo.Bar, "baz")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user