71 lines
2.0 KiB
Go
71 lines
2.0 KiB
Go
package bundle
|
|
|
|
import (
|
|
"context"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/eric/distributor/internal/storage"
|
|
"gitea.maximumdirect.net/eric/distributor/internal/storage/fake"
|
|
)
|
|
|
|
func TestDiscoverFindsBundlesInDeterministicOrder(t *testing.T) {
|
|
backend := fake.New()
|
|
addBundle(t, backend, "z/daily")
|
|
addBundle(t, backend, "a/daily")
|
|
|
|
bundles, err := Discover(context.Background(), backend, "")
|
|
if err != nil {
|
|
t.Fatalf("Discover() error = %v", err)
|
|
}
|
|
var paths []string
|
|
for _, sourceBundle := range bundles {
|
|
paths = append(paths, sourceBundle.RootRelativePath)
|
|
}
|
|
want := []string{"a/daily", "z/daily"}
|
|
if !reflect.DeepEqual(paths, want) {
|
|
t.Fatalf("paths = %v, want %v", paths, want)
|
|
}
|
|
}
|
|
|
|
func TestDiscoverFindsRootBundle(t *testing.T) {
|
|
backend := validFakeBundle(t)
|
|
bundles, err := Discover(context.Background(), backend, "")
|
|
if err != nil {
|
|
t.Fatalf("Discover() error = %v", err)
|
|
}
|
|
if got, want := len(bundles), 1; got != want {
|
|
t.Fatalf("bundle count = %d, want %d", got, want)
|
|
}
|
|
if bundles[0].RootRelativePath != "" {
|
|
t.Fatalf("root = %q, want empty", bundles[0].RootRelativePath)
|
|
}
|
|
}
|
|
|
|
func TestDiscoverRejectsNestedManifests(t *testing.T) {
|
|
backend := fake.New()
|
|
addBundle(t, backend, "daily")
|
|
addBundle(t, backend, "daily/nested")
|
|
|
|
_, err := Discover(context.Background(), backend, "")
|
|
assertErrorContains(t, err, "nested manifest")
|
|
}
|
|
|
|
func addBundle(t *testing.T, backend *fake.Backend, root string) {
|
|
t.Helper()
|
|
writeFakeFile(t, backend, joinTestPath(root, "manifest.json"), string(readFixture(t, "testdata/valid_bundle/manifest.json")))
|
|
writeFakeFile(t, backend, joinTestPath(root, "report.md"), string(readFixture(t, "testdata/valid_bundle/report.md")))
|
|
writeFakeFile(t, backend, joinTestPath(root, "summary.txt"), string(readFixture(t, "testdata/valid_bundle/summary.txt")))
|
|
}
|
|
|
|
func joinTestPath(root, file string) string {
|
|
if root == "" {
|
|
return file
|
|
}
|
|
joined, err := storage.Join(root, file)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return joined
|
|
}
|