nolint:paralleltest // parseEnvFileFlag mutates process-global os.Args.
(t *testing.T)
| 919 | |
| 920 | //nolint:paralleltest // parseEnvFileFlag mutates process-global os.Args. |
| 921 | func TestParseEnvFileFlag(t *testing.T) { |
| 922 | t.Run("FlagWithSpace", func(t *testing.T) { |
| 923 | orig := os.Args |
| 924 | t.Cleanup(func() { os.Args = orig }) |
| 925 | os.Args = []string{"develop", "--env-file", "/tmp/test.env", "--port", "3000"} |
| 926 | |
| 927 | result, err := parseEnvFileFlag() |
| 928 | require.NoError(t, err) |
| 929 | assert.Equal(t, "/tmp/test.env", result) |
| 930 | }) |
| 931 | |
| 932 | t.Run("FlagWithEquals", func(t *testing.T) { |
| 933 | orig := os.Args |
| 934 | t.Cleanup(func() { os.Args = orig }) |
| 935 | os.Args = []string{"develop", "--env-file=/tmp/test.env", "--port", "3000"} |
| 936 | |
| 937 | result, err := parseEnvFileFlag() |
| 938 | require.NoError(t, err) |
| 939 | assert.Equal(t, "/tmp/test.env", result) |
| 940 | }) |
| 941 | |
| 942 | t.Run("FallsBackToEnvVar", func(t *testing.T) { |
| 943 | orig := os.Args |
| 944 | t.Cleanup(func() { os.Args = orig }) |
| 945 | os.Args = []string{"develop", "--port", "3000"} |
| 946 | |
| 947 | t.Setenv("CODER_DEV_ENV_FILE", "/tmp/from-env.env") |
| 948 | |
| 949 | result, err := parseEnvFileFlag() |
| 950 | require.NoError(t, err) |
| 951 | assert.Equal(t, "/tmp/from-env.env", result) |
| 952 | }) |
| 953 | |
| 954 | t.Run("FlagTakesPrecedenceOverEnvVar", func(t *testing.T) { |
| 955 | orig := os.Args |
| 956 | t.Cleanup(func() { os.Args = orig }) |
| 957 | os.Args = []string{"develop", "--env-file", "/tmp/from-flag.env"} |
| 958 | |
| 959 | t.Setenv("CODER_DEV_ENV_FILE", "/tmp/from-env.env") |
| 960 | |
| 961 | result, err := parseEnvFileFlag() |
| 962 | require.NoError(t, err) |
| 963 | assert.Equal(t, "/tmp/from-flag.env", result) |
| 964 | }) |
| 965 | |
| 966 | t.Run("ReturnsEmptyWhenUnset", func(t *testing.T) { |
| 967 | orig := os.Args |
| 968 | t.Cleanup(func() { os.Args = orig }) |
| 969 | os.Args = []string{"develop", "--port", "3000"} |
| 970 | |
| 971 | t.Setenv("CODER_DEV_ENV_FILE", "") |
| 972 | os.Unsetenv("CODER_DEV_ENV_FILE") |
| 973 | |
| 974 | result, err := parseEnvFileFlag() |
| 975 | require.NoError(t, err) |
| 976 | assert.Equal(t, "", result) |
| 977 | }) |
| 978 |