2016-07-25 16:37:18 +00:00
|
|
|
// Disabling building of toml support in cases where golang is 1.0 or 1.1
|
2016-07-22 13:45:05 +00:00
|
|
|
// as the encoding library is not implemented or supported.
|
|
|
|
|
|
|
|
// +build go1.2
|
|
|
|
|
|
|
|
package altsrc
|
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"io/ioutil"
|
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/urfave/cli"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestCommandTomFileTest(t *testing.T) {
|
|
|
|
app := cli.NewApp()
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
ioutil.WriteFile("current.toml", []byte("test = 15"), 0666)
|
|
|
|
defer os.Remove("current.toml")
|
|
|
|
test := []string{"test-cmd", "--load", "current.toml"}
|
|
|
|
set.Parse(test)
|
|
|
|
|
|
|
|
c := cli.NewContext(app, set, nil)
|
|
|
|
|
|
|
|
command := &cli.Command{
|
|
|
|
Name: "test-cmd",
|
|
|
|
Aliases: []string{"tc"},
|
|
|
|
Usage: "this is for testing",
|
|
|
|
Description: "testing",
|
|
|
|
Action: func(c *cli.Context) error {
|
|
|
|
val := c.Int("test")
|
|
|
|
expect(t, val, 15)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
NewIntFlag(cli.IntFlag{Name: "test"}),
|
|
|
|
cli.StringFlag{Name: "load"}},
|
|
|
|
}
|
|
|
|
command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load"))
|
|
|
|
err := command.Run(c)
|
|
|
|
|
|
|
|
expect(t, err, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestCommandTomlFileTestGlobalEnvVarWins(t *testing.T) {
|
|
|
|
app := cli.NewApp()
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
ioutil.WriteFile("current.toml", []byte("test = 15"), 0666)
|
|
|
|
defer os.Remove("current.toml")
|
|
|
|
|
|
|
|
os.Setenv("THE_TEST", "10")
|
|
|
|
defer os.Setenv("THE_TEST", "")
|
|
|
|
test := []string{"test-cmd", "--load", "current.toml"}
|
|
|
|
set.Parse(test)
|
|
|
|
|
|
|
|
c := cli.NewContext(app, set, nil)
|
|
|
|
|
|
|
|
command := &cli.Command{
|
|
|
|
Name: "test-cmd",
|
|
|
|
Aliases: []string{"tc"},
|
|
|
|
Usage: "this is for testing",
|
|
|
|
Description: "testing",
|
|
|
|
Action: func(c *cli.Context) error {
|
|
|
|
val := c.Int("test")
|
|
|
|
expect(t, val, 10)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
NewIntFlag(cli.IntFlag{Name: "test", EnvVar: "THE_TEST"}),
|
|
|
|
cli.StringFlag{Name: "load"}},
|
|
|
|
}
|
|
|
|
command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load"))
|
|
|
|
|
|
|
|
err := command.Run(c)
|
|
|
|
|
|
|
|
expect(t, err, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestCommandTomlFileTestGlobalEnvVarWinsNested(t *testing.T) {
|
|
|
|
app := cli.NewApp()
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
ioutil.WriteFile("current.toml", []byte("[top]\ntest = 15"), 0666)
|
|
|
|
defer os.Remove("current.toml")
|
|
|
|
|
|
|
|
os.Setenv("THE_TEST", "10")
|
|
|
|
defer os.Setenv("THE_TEST", "")
|
|
|
|
test := []string{"test-cmd", "--load", "current.toml"}
|
|
|
|
set.Parse(test)
|
|
|
|
|
|
|
|
c := cli.NewContext(app, set, nil)
|
|
|
|
|
|
|
|
command := &cli.Command{
|
|
|
|
Name: "test-cmd",
|
|
|
|
Aliases: []string{"tc"},
|
|
|
|
Usage: "this is for testing",
|
|
|
|
Description: "testing",
|
|
|
|
Action: func(c *cli.Context) error {
|
|
|
|
val := c.Int("top.test")
|
|
|
|
expect(t, val, 10)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
NewIntFlag(cli.IntFlag{Name: "top.test", EnvVar: "THE_TEST"}),
|
|
|
|
cli.StringFlag{Name: "load"}},
|
|
|
|
}
|
|
|
|
command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load"))
|
|
|
|
|
|
|
|
err := command.Run(c)
|
|
|
|
|
|
|
|
expect(t, err, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestCommandTomlFileTestSpecifiedFlagWins(t *testing.T) {
|
|
|
|
app := cli.NewApp()
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
ioutil.WriteFile("current.toml", []byte("test = 15"), 0666)
|
|
|
|
defer os.Remove("current.toml")
|
|
|
|
|
|
|
|
test := []string{"test-cmd", "--load", "current.toml", "--test", "7"}
|
|
|
|
set.Parse(test)
|
|
|
|
|
|
|
|
c := cli.NewContext(app, set, nil)
|
|
|
|
|
|
|
|
command := &cli.Command{
|
|
|
|
Name: "test-cmd",
|
|
|
|
Aliases: []string{"tc"},
|
|
|
|
Usage: "this is for testing",
|
|
|
|
Description: "testing",
|
|
|
|
Action: func(c *cli.Context) error {
|
|
|
|
val := c.Int("test")
|
|
|
|
expect(t, val, 7)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
NewIntFlag(cli.IntFlag{Name: "test"}),
|
|
|
|
cli.StringFlag{Name: "load"}},
|
|
|
|
}
|
|
|
|
command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load"))
|
|
|
|
|
|
|
|
err := command.Run(c)
|
|
|
|
|
|
|
|
expect(t, err, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestCommandTomlFileTestSpecifiedFlagWinsNested(t *testing.T) {
|
|
|
|
app := cli.NewApp()
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
ioutil.WriteFile("current.toml", []byte(`[top]
|
|
|
|
test = 15`), 0666)
|
|
|
|
defer os.Remove("current.toml")
|
|
|
|
|
|
|
|
test := []string{"test-cmd", "--load", "current.toml", "--top.test", "7"}
|
|
|
|
set.Parse(test)
|
|
|
|
|
|
|
|
c := cli.NewContext(app, set, nil)
|
|
|
|
|
|
|
|
command := &cli.Command{
|
|
|
|
Name: "test-cmd",
|
|
|
|
Aliases: []string{"tc"},
|
|
|
|
Usage: "this is for testing",
|
|
|
|
Description: "testing",
|
|
|
|
Action: func(c *cli.Context) error {
|
|
|
|
val := c.Int("top.test")
|
|
|
|
expect(t, val, 7)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
NewIntFlag(cli.IntFlag{Name: "top.test"}),
|
|
|
|
cli.StringFlag{Name: "load"}},
|
|
|
|
}
|
|
|
|
command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load"))
|
|
|
|
|
|
|
|
err := command.Run(c)
|
|
|
|
|
|
|
|
expect(t, err, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestCommandTomlFileTestDefaultValueFileWins(t *testing.T) {
|
|
|
|
app := cli.NewApp()
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
ioutil.WriteFile("current.toml", []byte("test = 15"), 0666)
|
|
|
|
defer os.Remove("current.toml")
|
|
|
|
|
|
|
|
test := []string{"test-cmd", "--load", "current.toml"}
|
|
|
|
set.Parse(test)
|
|
|
|
|
|
|
|
c := cli.NewContext(app, set, nil)
|
|
|
|
|
|
|
|
command := &cli.Command{
|
|
|
|
Name: "test-cmd",
|
|
|
|
Aliases: []string{"tc"},
|
|
|
|
Usage: "this is for testing",
|
|
|
|
Description: "testing",
|
|
|
|
Action: func(c *cli.Context) error {
|
|
|
|
val := c.Int("test")
|
|
|
|
expect(t, val, 15)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
NewIntFlag(cli.IntFlag{Name: "test", Value: 7}),
|
|
|
|
cli.StringFlag{Name: "load"}},
|
|
|
|
}
|
|
|
|
command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load"))
|
|
|
|
|
|
|
|
err := command.Run(c)
|
|
|
|
|
|
|
|
expect(t, err, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestCommandTomlFileTestDefaultValueFileWinsNested(t *testing.T) {
|
|
|
|
app := cli.NewApp()
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
ioutil.WriteFile("current.toml", []byte("[top]\ntest = 15"), 0666)
|
|
|
|
defer os.Remove("current.toml")
|
|
|
|
|
|
|
|
test := []string{"test-cmd", "--load", "current.toml"}
|
|
|
|
set.Parse(test)
|
|
|
|
|
|
|
|
c := cli.NewContext(app, set, nil)
|
|
|
|
|
|
|
|
command := &cli.Command{
|
|
|
|
Name: "test-cmd",
|
|
|
|
Aliases: []string{"tc"},
|
|
|
|
Usage: "this is for testing",
|
|
|
|
Description: "testing",
|
|
|
|
Action: func(c *cli.Context) error {
|
|
|
|
val := c.Int("top.test")
|
|
|
|
expect(t, val, 15)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
NewIntFlag(cli.IntFlag{Name: "top.test", Value: 7}),
|
|
|
|
cli.StringFlag{Name: "load"}},
|
|
|
|
}
|
|
|
|
command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load"))
|
|
|
|
|
|
|
|
err := command.Run(c)
|
|
|
|
|
|
|
|
expect(t, err, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestCommandTomlFileFlagHasDefaultGlobalEnvTomlSetGlobalEnvWins(t *testing.T) {
|
|
|
|
app := cli.NewApp()
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
ioutil.WriteFile("current.toml", []byte("test = 15"), 0666)
|
|
|
|
defer os.Remove("current.toml")
|
|
|
|
|
|
|
|
os.Setenv("THE_TEST", "11")
|
|
|
|
defer os.Setenv("THE_TEST", "")
|
|
|
|
|
|
|
|
test := []string{"test-cmd", "--load", "current.toml"}
|
|
|
|
set.Parse(test)
|
|
|
|
|
|
|
|
c := cli.NewContext(app, set, nil)
|
|
|
|
|
|
|
|
command := &cli.Command{
|
|
|
|
Name: "test-cmd",
|
|
|
|
Aliases: []string{"tc"},
|
|
|
|
Usage: "this is for testing",
|
|
|
|
Description: "testing",
|
|
|
|
Action: func(c *cli.Context) error {
|
|
|
|
val := c.Int("test")
|
|
|
|
expect(t, val, 11)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
NewIntFlag(cli.IntFlag{Name: "test", Value: 7, EnvVar: "THE_TEST"}),
|
|
|
|
cli.StringFlag{Name: "load"}},
|
|
|
|
}
|
|
|
|
command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load"))
|
|
|
|
err := command.Run(c)
|
|
|
|
|
|
|
|
expect(t, err, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestCommandTomlFileFlagHasDefaultGlobalEnvTomlSetGlobalEnvWinsNested(t *testing.T) {
|
|
|
|
app := cli.NewApp()
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
ioutil.WriteFile("current.toml", []byte("[top]\ntest = 15"), 0666)
|
|
|
|
defer os.Remove("current.toml")
|
|
|
|
|
|
|
|
os.Setenv("THE_TEST", "11")
|
|
|
|
defer os.Setenv("THE_TEST", "")
|
|
|
|
|
|
|
|
test := []string{"test-cmd", "--load", "current.toml"}
|
|
|
|
set.Parse(test)
|
|
|
|
|
|
|
|
c := cli.NewContext(app, set, nil)
|
|
|
|
|
|
|
|
command := &cli.Command{
|
|
|
|
Name: "test-cmd",
|
|
|
|
Aliases: []string{"tc"},
|
|
|
|
Usage: "this is for testing",
|
|
|
|
Description: "testing",
|
|
|
|
Action: func(c *cli.Context) error {
|
|
|
|
val := c.Int("top.test")
|
|
|
|
expect(t, val, 11)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
Flags: []cli.Flag{
|
|
|
|
NewIntFlag(cli.IntFlag{Name: "top.test", Value: 7, EnvVar: "THE_TEST"}),
|
|
|
|
cli.StringFlag{Name: "load"}},
|
|
|
|
}
|
|
|
|
command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load"))
|
|
|
|
err := command.Run(c)
|
|
|
|
|
|
|
|
expect(t, err, nil)
|
|
|
|
}
|