package main import ( "os" "path/filepath" "testing" ) func manifest(t *testing.T, root, module, claims string) { t.Helper() dir := filepath.Join(root, "modules", module) if err := os.MkdirAll(dir, 0o755); err != nil { t.Fatal(err) } body := `{"module":"` + module + `","claims":[` + claims + `]}` if err := os.WriteFile(filepath.Join(dir, "module.json"), []byte(body), 0o644); err != nil { t.Fatal(err) } } func TestAnotherModuleClaimingMailStoreIsRefused(t *testing.T) { root := t.TempDir() manifest(t, root, "mesh-mail", `{"name":"mail-store","scope":"mesh"}`) manifest(t, root, "betterbird", `{"name":"mail-store","scope":"mesh"}`) manifest(t, root, "dunst", `{"name":"node-notifier","scope":"node"}`) found, err := Check(root) if err != nil { t.Fatal(err) } if len(found) != 1 || found[0].Module != "betterbird" { t.Fatalf("refused %+v", found) } } func TestTheCatalogueHasNone(t *testing.T) { found, err := Check("../..") if err != nil { t.Fatal(err) } if len(found) != 0 { t.Fatalf("%+v", found) } }