Allow "bare" tags and moved tag tests into tag_test.go. Fixes #19
This commit is contained in:
committed by
Alec Thomas
parent
fdc7230e22
commit
ed123d1c06
+95
@@ -0,0 +1,95 @@
|
||||
package kong
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestDefaultValueForOptionalArg(t *testing.T) {
|
||||
var cli struct {
|
||||
Arg string `kong:"arg,optional,default='👌'"`
|
||||
}
|
||||
p := mustNew(t, &cli)
|
||||
_, err := p.Parse(nil)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "👌", cli.Arg)
|
||||
}
|
||||
|
||||
func TestNoValueInTag(t *testing.T) {
|
||||
var cli struct {
|
||||
Empty1 string `kong:"default"`
|
||||
Empty2 string `kong:"default="`
|
||||
}
|
||||
p := mustNew(t, &cli)
|
||||
_, err := p.Parse(nil)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "", cli.Empty1)
|
||||
require.Equal(t, "", cli.Empty2)
|
||||
}
|
||||
|
||||
func TestCommaInQuotes(t *testing.T) {
|
||||
var cli struct {
|
||||
Numbers string `kong:"default='1,2'"`
|
||||
}
|
||||
p := mustNew(t, &cli)
|
||||
_, err := p.Parse(nil)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "1,2", cli.Numbers)
|
||||
}
|
||||
|
||||
func TestBadString(t *testing.T) {
|
||||
var cli struct {
|
||||
Numbers string `kong:"default='yay'n"`
|
||||
}
|
||||
_, err := New(&cli)
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
func TestNoQuoteEnd(t *testing.T) {
|
||||
var cli struct {
|
||||
Numbers string `kong:"default='yay"`
|
||||
}
|
||||
_, err := New(&cli)
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
func TestEscapedQuote(t *testing.T) {
|
||||
var cli struct {
|
||||
DoYouKnow string `kong:"default='i don\\'t know'"`
|
||||
}
|
||||
p := mustNew(t, &cli)
|
||||
_, err := p.Parse(nil)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "i don't know", cli.DoYouKnow)
|
||||
}
|
||||
|
||||
func TestBareTags(t *testing.T) {
|
||||
var cli struct {
|
||||
Cmd struct {
|
||||
Arg string `arg`
|
||||
Flag string `required default:"👌"`
|
||||
} `cmd`
|
||||
}
|
||||
|
||||
p := mustNew(t, &cli)
|
||||
_, err := p.Parse([]string{"cmd", "arg", "--flag=hi"})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "hi", cli.Cmd.Flag)
|
||||
require.Equal(t, "arg", cli.Cmd.Arg)
|
||||
}
|
||||
|
||||
func TestBareTagsWithJsonTag(t *testing.T) {
|
||||
var cli struct {
|
||||
Cmd struct {
|
||||
Arg string `json:"-" optional arg`
|
||||
Flag string `json:"best_flag" default:"\"'👌'\""`
|
||||
} `cmd json:"CMD"`
|
||||
}
|
||||
|
||||
p := mustNew(t, &cli)
|
||||
_, err := p.Parse([]string{"cmd"})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "\"'👌'\"", cli.Cmd.Flag)
|
||||
require.Equal(t, "", cli.Cmd.Arg)
|
||||
}
|
||||
Reference in New Issue
Block a user