package facts import ( "os" "path/filepath" "testing" ) func TestLoadDirReadsSnapshots(t *testing.T) { dir := t.TempDir() snap := `{"hostname":"n1","kernel":"k","containerd":"c","package_sample":{"a":"1"}}` if err := os.WriteFile(filepath.Join(dir, "snap.json"), []byte(snap), 0o644); err != nil { t.Fatal(err) } got, err := LoadDir(dir) if err != nil { t.Fatalf("LoadDir: %v", err) } if len(got) != 1 || got[0].Hostname != "n1" || got[0].PackageSample["a"] != "1" { t.Fatalf("unexpected snapshot: %+v", got) } } func TestLoadDirRejectsInvalidJSON(t *testing.T) { dir := t.TempDir() if err := os.WriteFile(filepath.Join(dir, "broken.json"), []byte(`{"hostname":`), 0o644); err != nil { t.Fatal(err) } if _, err := LoadDir(dir); err == nil { t.Fatal("expected JSON parse error") } } func TestLoadDirReadsNestedDirectoriesAndMissingDir(t *testing.T) { dir := t.TempDir() nested := filepath.Join(dir, "nested") if err := os.MkdirAll(nested, 0o755); err != nil { t.Fatal(err) } if err := os.WriteFile(filepath.Join(nested, "snap.json"), []byte(`{"hostname":"n2"}`), 0o644); err != nil { t.Fatal(err) } got, err := LoadDir(dir) if err != nil { t.Fatalf("LoadDir nested: %v", err) } if len(got) != 1 || got[0].Hostname != "n2" { t.Fatalf("unexpected nested snapshots: %+v", got) } if _, err := LoadDir(filepath.Join(dir, "missing")); err == nil { t.Fatal("expected missing dir error") } }