mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-04 15:06:37 +08:00
feat(config): load manifest config.default.yaml with config.yaml override and clean root configs
This commit is contained in:
@@ -120,3 +120,88 @@ func TestSourceFindsManifestConfigInParentDirectory(t *testing.T) {
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, ":9200", value)
|
||||
}
|
||||
|
||||
func TestSourceDefaultConfigMergedWithOverride(t *testing.T) {
|
||||
tempRoot := t.TempDir()
|
||||
manifestConfigDir := filepath.Join(tempRoot, "manifest", "config")
|
||||
require.NoError(t, os.MkdirAll(manifestConfigDir, 0o755))
|
||||
|
||||
// 1. Write default configuration
|
||||
require.NoError(t, os.WriteFile(
|
||||
filepath.Join(manifestConfigDir, "config.default.yaml"),
|
||||
[]byte("app:\n addr: \":8000\"\n node_id: 1\n env: \"development\"\n"),
|
||||
0o600,
|
||||
))
|
||||
|
||||
// 2. Write override configuration (only overrides addr)
|
||||
require.NoError(t, os.WriteFile(
|
||||
filepath.Join(manifestConfigDir, "config.yaml"),
|
||||
[]byte("app:\n addr: \":9500\"\n"),
|
||||
0o600,
|
||||
))
|
||||
|
||||
subDir := filepath.Join(tempRoot, "backend")
|
||||
require.NoError(t, os.MkdirAll(subDir, 0o755))
|
||||
|
||||
origWd, err := os.Getwd()
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, os.Chdir(subDir))
|
||||
t.Cleanup(func() {
|
||||
_ = os.Chdir(origWd)
|
||||
})
|
||||
|
||||
t.Setenv("CONFIG_PATH", "")
|
||||
|
||||
src, err := config.NewSource()
|
||||
require.NoError(t, err)
|
||||
|
||||
// Overridden by config.yaml
|
||||
addr, ok := src.Lookup("app.addr")
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, ":9500", addr)
|
||||
|
||||
// Retained from config.default.yaml
|
||||
nodeID, ok := src.Lookup("app.node_id")
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, 1, nodeID)
|
||||
|
||||
envVal, ok := src.Lookup("app.env")
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, "development", envVal)
|
||||
}
|
||||
|
||||
func TestSourceDefaultConfigUsedWhenOverrideAbsent(t *testing.T) {
|
||||
tempRoot := t.TempDir()
|
||||
manifestConfigDir := filepath.Join(tempRoot, "manifest", "config")
|
||||
require.NoError(t, os.MkdirAll(manifestConfigDir, 0o755))
|
||||
|
||||
// Write only default configuration
|
||||
require.NoError(t, os.WriteFile(
|
||||
filepath.Join(manifestConfigDir, "config.default.yaml"),
|
||||
[]byte("app:\n addr: \":8080\"\n env: \"testing\"\n"),
|
||||
0o600,
|
||||
))
|
||||
|
||||
subDir := filepath.Join(tempRoot, "backend")
|
||||
require.NoError(t, os.MkdirAll(subDir, 0o755))
|
||||
|
||||
origWd, err := os.Getwd()
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, os.Chdir(subDir))
|
||||
t.Cleanup(func() {
|
||||
_ = os.Chdir(origWd)
|
||||
})
|
||||
|
||||
t.Setenv("CONFIG_PATH", "")
|
||||
|
||||
src, err := config.NewSource()
|
||||
require.NoError(t, err)
|
||||
|
||||
addr, ok := src.Lookup("app.addr")
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, ":8080", addr)
|
||||
|
||||
envVal, ok := src.Lookup("app.env")
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, "testing", envVal)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user