diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-05 08:50:33 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-05 08:50:33 +0200 |
| commit | 5d1b9f1062d38c301c0995ec6da980bdf5e48332 (patch) | |
| tree | 81e1a8963ea66cf06164e89beb6cd2da0ee325f7 /internal/config/initializer_test.go | |
| parent | bb46cfbccea301721fb93485ea7169f5841feda3 (diff) | |
Improve lint/vet reliability and refactor client runtime/bootstrap
Diffstat (limited to 'internal/config/initializer_test.go')
| -rw-r--r-- | internal/config/initializer_test.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/internal/config/initializer_test.go b/internal/config/initializer_test.go new file mode 100644 index 0000000..ea6b229 --- /dev/null +++ b/internal/config/initializer_test.go @@ -0,0 +1,68 @@ +package config + +import ( + "os" + "path/filepath" + "testing" +) + +func TestParseConfigLoadsDefaultXDGConfig(t *testing.T) { + home := t.TempDir() + t.Setenv("HOME", home) + + configPath := filepath.Join(home, ".config", "dtail", "dtail.conf") + if err := os.MkdirAll(filepath.Dir(configPath), 0o755); err != nil { + t.Fatalf("mkdir failed: %v", err) + } + writeTestConfig(t, configPath, `{"Common":{"LogLevel":"debug"}}`) + + in := initializer{ + Common: newDefaultCommonConfig(), + Server: newDefaultServerConfig(), + Client: newDefaultClientConfig(), + } + + if err := in.parseConfig(&Args{}); err != nil { + t.Fatalf("parseConfig failed: %v", err) + } + if in.Common.LogLevel != "debug" { + t.Fatalf("expected log level debug, got %q", in.Common.LogLevel) + } +} + +func TestParseConfigLoadsDefaultConfigsInOrder(t *testing.T) { + home := t.TempDir() + t.Setenv("HOME", home) + + xdgPath := filepath.Join(home, ".config", "dtail", "dtail.conf") + if err := os.MkdirAll(filepath.Dir(xdgPath), 0o755); err != nil { + t.Fatalf("mkdir failed: %v", err) + } + writeTestConfig(t, xdgPath, `{"Common":{"Logger":"file","LogLevel":"warn"}}`) + + homePath := filepath.Join(home, ".dtail.conf") + writeTestConfig(t, homePath, `{"Common":{"LogLevel":"error"}}`) + + in := initializer{ + Common: newDefaultCommonConfig(), + Server: newDefaultServerConfig(), + Client: newDefaultClientConfig(), + } + + if err := in.parseConfig(&Args{}); err != nil { + t.Fatalf("parseConfig failed: %v", err) + } + if in.Common.LogLevel != "error" { + t.Fatalf("expected final log level error, got %q", in.Common.LogLevel) + } + if in.Common.Logger != "file" { + t.Fatalf("expected logger file from first config, got %q", in.Common.Logger) + } +} + +func writeTestConfig(t *testing.T, path, body string) { + t.Helper() + if err := os.WriteFile(path, []byte(body), 0o644); err != nil { + t.Fatalf("write config failed: %v", err) + } +} |
