diff --git a/altsrc/flag.go b/altsrc/flag.go index 31b8a04e87..bb3c347788 100644 --- a/altsrc/flag.go +++ b/altsrc/flag.go @@ -197,10 +197,8 @@ func (f *IntFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceCon if err != nil { return err } - if value > 0 { - for _, name := range f.Names() { - _ = f.set.Set(name, strconv.FormatInt(int64(value), 10)) - } + for _, name := range f.Names() { + _ = f.set.Set(name, strconv.FormatInt(int64(value), 10)) } } } @@ -215,10 +213,8 @@ func (f *DurationFlag) ApplyInputSourceValue(context *cli.Context, isc InputSour if err != nil { return err } - if value > 0 { - for _, name := range f.Names() { - _ = f.set.Set(name, value.String()) - } + for _, name := range f.Names() { + _ = f.set.Set(name, value.String()) } } } @@ -233,11 +229,9 @@ func (f *Float64Flag) ApplyInputSourceValue(context *cli.Context, isc InputSourc if err != nil { return err } - if value > 0 { - floatStr := float64ToString(value) - for _, name := range f.Names() { - _ = f.set.Set(name, floatStr) - } + floatStr := float64ToString(value) + for _, name := range f.Names() { + _ = f.set.Set(name, floatStr) } } } diff --git a/altsrc/flag_test.go b/altsrc/flag_test.go index 204833118f..e20ab02b6e 100644 --- a/altsrc/flag_test.go +++ b/altsrc/flag_test.go @@ -234,6 +234,15 @@ func TestIntApplyInputSourceMethodSet(t *testing.T) { expect(t, 15, c.Int("test")) } +func TestIntApplyInputSourceMethodSetNegativeValue(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewIntFlag(&cli.IntFlag{Name: "test"}), + FlagName: "test", + MapValue: -1, + }) + expect(t, -1, c.Int("test")) +} + func TestIntApplyInputSourceMethodContextSet(t *testing.T) { c := runTest(t, testApplyInputSource{ Flag: NewIntFlag(&cli.IntFlag{Name: "test"}), @@ -264,6 +273,15 @@ func TestDurationApplyInputSourceMethodSet(t *testing.T) { expect(t, 30*time.Second, c.Duration("test")) } +func TestDurationApplyInputSourceMethodSetNegativeValue(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewDurationFlag(&cli.DurationFlag{Name: "test"}), + FlagName: "test", + MapValue: -30 * time.Second, + }) + expect(t, -30*time.Second, c.Duration("test")) +} + func TestDurationApplyInputSourceMethodContextSet(t *testing.T) { c := runTest(t, testApplyInputSource{ Flag: NewDurationFlag(&cli.DurationFlag{Name: "test"}), @@ -294,6 +312,15 @@ func TestFloat64ApplyInputSourceMethodSet(t *testing.T) { expect(t, 1.3, c.Float64("test")) } +func TestFloat64ApplyInputSourceMethodSetNegativeValue(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewFloat64Flag(&cli.Float64Flag{Name: "test"}), + FlagName: "test", + MapValue: -1.3, + }) + expect(t, -1.3, c.Float64("test")) +} + func TestFloat64ApplyInputSourceMethodContextSet(t *testing.T) { c := runTest(t, testApplyInputSource{ Flag: NewFloat64Flag(&cli.Float64Flag{Name: "test"}),