feat: complete 2.0.7.12 platform overhaul
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package adminassets
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestValidateDiskChecksDynamicImportsAndEveryOutput(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
if err := os.MkdirAll(filepath.Join(root, "assets"), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
writeAssetTestFile(t, root, "index.html", `<script type="module" src="/admin/assets/index-12345678.js"></script>`)
|
||||
writeAssetTestFile(t, root, "admin-build.json", `{"buildId":"build-1"}`)
|
||||
writeAssetTestFile(t, root, "asset-manifest.json", `{
|
||||
"src/main.ts":{"file":"assets/index-12345678.js","dynamicImports":["src/views/FeedbacksView.vue"]},
|
||||
"src/views/FeedbacksView.vue":{"file":"assets/FeedbacksView-12345678.js","css":["assets/FeedbacksView-12345678.css"]}
|
||||
}`)
|
||||
writeAssetTestFile(t, root, "assets/index-12345678.js", "import('./FeedbacksView-12345678.js')")
|
||||
writeAssetTestFile(t, root, "assets/FeedbacksView-12345678.js", "export default {}")
|
||||
writeAssetTestFile(t, root, "assets/FeedbacksView-12345678.css", ".page{}")
|
||||
|
||||
status := ValidateDisk(root, "build-1")
|
||||
if !status.Ready || status.ManifestEntries != 2 {
|
||||
t.Fatalf("valid build rejected: %#v", status)
|
||||
}
|
||||
if err := os.Remove(filepath.Join(root, "assets", "FeedbacksView-12345678.js")); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
status = ValidateDisk(root, "build-1")
|
||||
if status.Ready || !strings.Contains(status.ValidationError, "FeedbacksView-12345678.js") {
|
||||
t.Fatalf("missing lazy chunk not diagnosed: %#v", status)
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateDiskRejectsBuildIDMismatch(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
if err := os.MkdirAll(filepath.Join(root, "assets"), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
writeAssetTestFile(t, root, "index.html", "<main></main>")
|
||||
writeAssetTestFile(t, root, "admin-build.json", `{"buildId":"old"}`)
|
||||
writeAssetTestFile(t, root, "asset-manifest.json", `{"src/main.ts":{"file":"assets/index-12345678.js"}}`)
|
||||
writeAssetTestFile(t, root, "assets/index-12345678.js", "export{}")
|
||||
|
||||
status := ValidateDisk(root, "new")
|
||||
if status.Ready || !strings.Contains(status.ValidationError, "does not match") {
|
||||
t.Fatalf("build mismatch not rejected: %#v", status)
|
||||
}
|
||||
}
|
||||
|
||||
func writeAssetTestFile(t *testing.T, root, name, value string) {
|
||||
t.Helper()
|
||||
path := filepath.Join(root, filepath.FromSlash(name))
|
||||
if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.WriteFile(path, []byte(value), 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user