bind_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package test
  2. import (
  3. "flag"
  4. "testing"
  5. "time"
  6. "github.com/ncarlier/webhookd/pkg/assert"
  7. configflag "github.com/ncarlier/webhookd/pkg/config/flag"
  8. )
  9. type sampleConfig struct {
  10. Label string `flag:"label" desc:"String parameter" default:"foo"`
  11. Override string `flag:"override" desc:"String parameter to override" default:"bar"`
  12. Count int `flag:"count" desc:"Number parameter" default:"2"`
  13. Debug bool `flag:"debug" desc:"Boolean parameter" default:"false"`
  14. Timer time.Duration `flag:"timer" desc:"Duration parameter" default:"30s"`
  15. Array []string `flag:"array" desc:"Array parameter" default:"foo,bar"`
  16. OverrideArray []string `flag:"override-array" desc:"Array parameter to override" default:"foo"`
  17. Obj objConfig `flag:"obj"`
  18. }
  19. type objConfig struct {
  20. Name string `flag:"name" desc:"Object name" default:"none"`
  21. }
  22. func TestFlagBinding(t *testing.T) {
  23. conf := &sampleConfig{}
  24. err := configflag.Bind(conf, "FOO")
  25. flag.CommandLine.Parse([]string{"-override", "test", "-override-array", "a", "-override-array", "b", "-obj-name", "foo"})
  26. assert.Nil(t, err, "error should be nil")
  27. assert.Equal(t, "foo", conf.Label, "")
  28. assert.Equal(t, "test", conf.Override, "")
  29. assert.Equal(t, 2, conf.Count, "")
  30. assert.Equal(t, false, conf.Debug, "")
  31. assert.Equal(t, time.Second*30, conf.Timer, "")
  32. assert.Equal(t, 2, len(conf.Array), "")
  33. assert.Equal(t, "foo", conf.Array[0], "")
  34. assert.Equal(t, 2, len(conf.OverrideArray), "")
  35. assert.Equal(t, "a", conf.OverrideArray[0], "")
  36. assert.Equal(t, "foo", conf.Obj.Name, "")
  37. }