|
|
|
|
@ -4,8 +4,10 @@
|
|
|
|
|
package base
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"os"
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/mitchellh/cli"
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
@ -152,3 +154,90 @@ func TestFlagSet_StringSliceMapVar_NullCheck(t *testing.T) {
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestUint16Var(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
|
|
|
|
|
target := uint16(0)
|
|
|
|
|
|
|
|
|
|
flagSets := NewFlagSets(cli.NewMockUi())
|
|
|
|
|
f := flagSets.NewFlagSet("testset")
|
|
|
|
|
f.Uint16Var(&Uint16Var{
|
|
|
|
|
Name: "test_name",
|
|
|
|
|
Aliases: []string{"test_alias1"},
|
|
|
|
|
Usage: "test_usage",
|
|
|
|
|
Default: 1,
|
|
|
|
|
Hidden: false,
|
|
|
|
|
Target: &target,
|
|
|
|
|
})
|
|
|
|
|
require.Equal(t, uint16(1), target) // Should immediately default.
|
|
|
|
|
|
|
|
|
|
// Value that overflows uint16 should error.
|
|
|
|
|
err := flagSets.Parse([]string{"-test_name", "66000"})
|
|
|
|
|
require.EqualError(t, err, "invalid value \"66000\" for flag -test_name: strconv.ParseUint: parsing \"66000\": value out of range")
|
|
|
|
|
require.Equal(t, uint16(1), target)
|
|
|
|
|
|
|
|
|
|
// Value that overflows uint16 (via alias) should error.
|
|
|
|
|
err = flagSets.Parse([]string{"-test_alias1", "66000"})
|
|
|
|
|
require.EqualError(t, err, "invalid value \"66000\" for flag -test_alias1: strconv.ParseUint: parsing \"66000\": value out of range")
|
|
|
|
|
require.Equal(t, uint16(1), target)
|
|
|
|
|
|
|
|
|
|
// Negative value should error.
|
|
|
|
|
err = flagSets.Parse([]string{"-test_name", "-1"})
|
|
|
|
|
require.EqualError(t, err, "invalid value \"-1\" for flag -test_name: strconv.ParseUint: parsing \"-1\": invalid syntax")
|
|
|
|
|
require.Equal(t, uint16(1), target)
|
|
|
|
|
|
|
|
|
|
// Negative value (via alias) should error.
|
|
|
|
|
err = flagSets.Parse([]string{"-test_alias1", "-1"})
|
|
|
|
|
require.EqualError(t, err, "invalid value \"-1\" for flag -test_alias1: strconv.ParseUint: parsing \"-1\": invalid syntax")
|
|
|
|
|
require.Equal(t, uint16(1), target)
|
|
|
|
|
|
|
|
|
|
// Valid value should be put into target.
|
|
|
|
|
err = flagSets.Parse([]string{"-test_name", "123"})
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
require.Equal(t, uint16(123), target)
|
|
|
|
|
|
|
|
|
|
// Valid value (using alias) should be put into target.
|
|
|
|
|
err = flagSets.Parse([]string{"-test_alias1", "456"})
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
require.Equal(t, uint16(456), target)
|
|
|
|
|
|
|
|
|
|
// Env var tests.
|
|
|
|
|
envTarget := uint16(0)
|
|
|
|
|
envVarName := "test_uint16_env_var"
|
|
|
|
|
|
|
|
|
|
envFlagSets := NewFlagSets(cli.NewMockUi())
|
|
|
|
|
ef := envFlagSets.NewFlagSet("env_testset")
|
|
|
|
|
|
|
|
|
|
require.NoError(t, os.Setenv(envVarName, "66000"))
|
|
|
|
|
ef.Uint16Var(&Uint16Var{
|
|
|
|
|
Name: "test_env_name1",
|
|
|
|
|
Default: 1,
|
|
|
|
|
EnvVar: envVarName,
|
|
|
|
|
Target: &envTarget,
|
|
|
|
|
})
|
|
|
|
|
require.Equal(t, uint16(1), envTarget) // Should be set to default because env value parse will have failed.
|
|
|
|
|
require.NoError(t, os.Unsetenv(envVarName))
|
|
|
|
|
envTarget = uint16(0)
|
|
|
|
|
|
|
|
|
|
require.NoError(t, os.Setenv(envVarName, "-1"))
|
|
|
|
|
ef.Uint16Var(&Uint16Var{
|
|
|
|
|
Name: "test_env_name2",
|
|
|
|
|
Default: 1,
|
|
|
|
|
EnvVar: envVarName,
|
|
|
|
|
Target: &envTarget,
|
|
|
|
|
})
|
|
|
|
|
require.Equal(t, uint16(1), envTarget) // Should be set to default because env value parse will have failed.
|
|
|
|
|
require.NoError(t, os.Unsetenv(envVarName))
|
|
|
|
|
envTarget = uint16(0)
|
|
|
|
|
|
|
|
|
|
require.NoError(t, os.Setenv(envVarName, "123"))
|
|
|
|
|
ef.Uint16Var(&Uint16Var{
|
|
|
|
|
Name: "test_env_name3",
|
|
|
|
|
Default: 1,
|
|
|
|
|
EnvVar: envVarName,
|
|
|
|
|
Target: &envTarget,
|
|
|
|
|
})
|
|
|
|
|
require.Equal(t, uint16(123), envTarget) // Should be set to what was set in env.
|
|
|
|
|
require.NoError(t, os.Unsetenv(envVarName))
|
|
|
|
|
}
|
|
|
|
|
|