From ad1dfac44703c801a9d3b60aed9da5511a0cfe71 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Sun, 11 Oct 2026 15:13:07 +0200 Subject: [PATCH] Test that a mounted source names and reads its manifest beside its files, before or after the mount --- internal/datafiles/datafiles_test.go | 19 +++++++++++++++++++ shipped_test.go | 12 ++++++++++++ 2 files changed, 31 insertions(+) diff --git a/internal/datafiles/datafiles_test.go b/internal/datafiles/datafiles_test.go index de34b9f..b889e29 100644 --- a/internal/datafiles/datafiles_test.go +++ b/internal/datafiles/datafiles_test.go @@ -182,3 +182,22 @@ func TestAMountedTreeIsAValidFS(t *testing.T) { t.Fatal(err) } } + +func TestAMountedSourceNamesItsManifestBesideItsFiles(t *testing.T) { + dir := t.TempDir() + for name, c := range map[string]struct { + src Source + want string + }{ + "an fs.FS": {FS(fstest.MapFS{}).Mounted("my.data"), "my/data/.fejkdata.json"}, + "a data path": {Dir(dir).Mounted("my.data"), filepath.ToSlash(filepath.Join(dir, ".fejkdata.json"))}, + } { + if got := c.src.ManifestPath(); got != c.want { + t.Errorf("%s: ManifestPath() = %q, want %q", name, got, c.want) + } + } + m, err := FS(fstest.MapFS{ManifestFile: {Data: []byte(`{"namespace": "my.data"}`)}}).Mounted("my.data").Manifest() + if err != nil || m.Namespace != "my.data" { + t.Errorf("Manifest() after Mounted = %+v, %v, want the manifest read from beside the files", m, err) + } +} diff --git a/shipped_test.go b/shipped_test.go index 3f6ebf7..d7a0393 100644 --- a/shipped_test.go +++ b/shipped_test.go @@ -597,6 +597,18 @@ func indexEntry(s categorySite) datafiles.IndexEntry { return e } +func TestAMountedIndexedCategoryWithNoFileNamesTheManifestBesideItsFiles(t *testing.T) { + f, err := New(WithDataFS(fstest.MapFS{ + ".fejkdata.json": {Data: []byte(`{"index": {"my.gone": {"paths": [""]}}, "namespace": "my"}`)}, + })) + if err != nil { + t.Fatalf("New() = %v", err) + } + if _, err := f.Fake("my.gone"); err == nil || !strings.Contains(err.Error(), "my/.fejkdata.json indexes my.gone") { + t.Fatalf(`Fake("my.gone") = %v, want the manifest named as my/.fejkdata.json`, err) + } +} + func TestAnIndexedCategoryWithNoFileNamesTheManifest(t *testing.T) { f, err := New(WithDataFS(fstest.MapFS{ ".fejkdata.json": {Data: []byte(`{"index": {"gone": {"paths": [""]}}}`)},