Files
sanderling/cmd/internal-tools/bundle-check/main_test.go
T

58 lines
1.3 KiB
Go

package main
import (
"os"
"path/filepath"
"testing"
)
// repoSpecSrc walks up from the test's working directory to the repo root and
// returns pkg/spec/src. The bundle-check aliases once pointed at the
// non-existent pkg/spec-api/src, so esbuild resolved nothing and the tool
// silently emitted an empty bundle.
func repoSpecSrc(t *testing.T) string {
t.Helper()
dir, err := os.Getwd()
if err != nil {
t.Fatal(err)
}
for {
candidate := filepath.Join(dir, "pkg/spec/src")
if _, err := os.Stat(filepath.Join(candidate, "index.ts")); err == nil {
return candidate
}
parent := filepath.Dir(dir)
if parent == dir {
t.Fatal("pkg/spec/src/index.ts not found above test dir")
}
dir = parent
}
}
func TestBundleSpec_ResolvesSpecAliases(t *testing.T) {
specSrc := repoSpecSrc(t)
entry, err := filepath.Abs(filepath.Join("testdata", "spec.ts"))
if err != nil {
t.Fatal(err)
}
result, err := bundleSpec(specSrc, entry)
if err != nil {
t.Fatalf("bundle: %v", err)
}
if len(result.JavaScript) == 0 {
t.Fatal("empty bundle: aliases resolved to nothing")
}
if result.SHA256 == "" {
t.Fatal("missing bundle hash")
}
second, err := bundleSpec(specSrc, entry)
if err != nil {
t.Fatal(err)
}
if result.SHA256 != second.SHA256 {
t.Errorf("unstable bundle hash: %s vs %s", result.SHA256, second.SHA256)
}
}