Skip to content

Commit 8a89670

Browse files
committed
fix(config): ignore empty environment overrides
1 parent d89c36c commit 8a89670

2 files changed

Lines changed: 29 additions & 1 deletion

File tree

internal/burrito/config/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ func bindEnvironmentVariables(v *viper.Viper, iface interface{}, parts ...string
242242
keyParts := append(parts, tv)
243243
key := strings.Join(keyParts, ".")
244244
envName := "BURRITO_" + strings.ToUpper(strings.Join(keyParts, "_"))
245-
if value, exists := os.LookupEnv(envName); exists {
245+
if value, exists := os.LookupEnv(envName); exists && value != "" {
246246
v.Set(key, value)
247247
continue
248248
}

internal/burrito/config/config_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,3 +262,31 @@ func TestConfig_EnvVarOverridesFlag(t *testing.T) {
262262

263263
assert.Equal(t, ":8082", cfg.Server.Addr)
264264
}
265+
266+
func TestConfig_EmptyEnvVarDoesNotOverrideFlag(t *testing.T) {
267+
configFile, err := os.ReadFile("testdata/test-config-1.yaml")
268+
if err != nil {
269+
t.Fatalf("failed to read test configuration file: %v", err)
270+
}
271+
272+
err = os.WriteFile("config.yaml", configFile, 0644)
273+
if err != nil {
274+
t.Fatalf("failed to create test configuration file: %v", err)
275+
}
276+
defer os.Remove("config.yaml")
277+
278+
t.Setenv("BURRITO_SERVER_ADDR", "")
279+
280+
cfg := &config.Config{}
281+
flags := pflag.NewFlagSet("server", pflag.ContinueOnError)
282+
flags.StringVar(&cfg.Server.Addr, "addr", ":8080", "server address")
283+
if err := flags.Set("addr", ":8081"); err != nil {
284+
t.Fatalf("failed to set flag: %v", err)
285+
}
286+
287+
if err := cfg.Load(flags); err != nil {
288+
t.Fatalf("failed to load configuration: %v", err)
289+
}
290+
291+
assert.Equal(t, ":8081", cfg.Server.Addr)
292+
}

0 commit comments

Comments
 (0)