Honor 'SOW_ASSETS_SERVER_URL and 'SOW_ASSETS_REPO'

This commit is contained in:
2026-05-04 18:06:58 +02:00
parent 18eab086cc
commit c86aa9e2de
2 changed files with 124 additions and 6 deletions
+91
View File
@@ -9189,6 +9189,97 @@ func TestBuildNativeWithReleasedPartsManifest(t *testing.T) {
}
}
func TestBuildNativeWithReleasedPartsManifestUsesAssetsServerOverride(t *testing.T) {
root := t.TempDir()
projRoot := filepath.Join(root, "project")
mkdirAll(t, filepath.Join(projRoot, "src"))
mkdirAll(t, filepath.Join(projRoot, "assets"))
mkdirAll(t, filepath.Join(projRoot, "build"))
mkdirAll(t, filepath.Join(projRoot, "topdata", "data", "parts"))
writeFile(t, filepath.Join(projRoot, "topdata", "base_dialog.json"), "{}\n")
writeFile(t, filepath.Join(projRoot, "topdata", "data", "parts", "belt.json"), `{
"output": "parts_belt.2da",
"columns": ["COSTMODIFIER", "ACBONUS"],
"rows": []
}`+"\n")
mkdirAll(t, filepath.Join(projRoot, "reference"))
writeFile(t, filepath.Join(projRoot, "reference", "build.py"), "print('ok')\n")
manifestJSON := `{
"repo": "ShadowsOverWestgate/sow-assets",
"ref": "test-manifest",
"generated_at": "2026-04-09T00:00:00Z",
"categories": {
"belt": [18]
}
}` + "\n"
var server *httptest.Server
server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case "/api/v1/repos/ShadowsOverWestgate/sow-assets/releases/tags/parts-manifest-current":
w.Header().Set("Content-Type", "application/json")
_, _ = w.Write([]byte(`{"assets":[{"name":"sow-parts-manifest.json","browser_download_url":"` + server.URL + `/downloads/sow-parts-manifest.json"}]}`))
case "/downloads/sow-parts-manifest.json":
w.Header().Set("Content-Type", "application/json")
_, _ = w.Write([]byte(manifestJSON))
default:
http.NotFound(w, r)
}
}))
defer server.Close()
runGitTest(t, "", "init", "-b", "main", projRoot)
runGitTest(t, projRoot, "remote", "add", "origin", "git@git-ssh.westgate.pw:ShadowsOverWestgate/sow-module.git")
t.Setenv("SOW_ASSETS_SERVER_URL", server.URL)
t.Setenv("SOW_ASSETS_REPO", "ShadowsOverWestgate/sow-assets")
proj := &project.Project{
Root: projRoot,
Config: project.Config{
Module: project.ModuleConfig{Name: "Test", ResRef: "test"},
Paths: project.PathConfig{Source: "src", Assets: "assets", Build: "build"},
TopData: project.TopDataConfig{
Source: "topdata",
Build: "build/topdata",
},
Autogen: project.AutogenConfig{
Consumers: []project.AutogenConsumerConfig{
{
ID: "parts",
Producer: "parts",
Dataset: "parts",
Mode: "parts_rows",
Root: "part",
Include: []string{"**/*.mdl"},
Derive: project.AutogenDeriveConfig{
Kind: "trailing_numeric_suffix",
GroupFrom: "first_path_segment",
},
Manifest: project.AutogenManifestConfig{
ReleaseTag: "parts-manifest-current",
AssetName: "sow-parts-manifest.json",
CacheName: "sow-parts-manifest.json",
},
},
},
},
},
}
result, err := BuildNative(proj, nil)
if err != nil {
t.Fatalf("BuildNative failed: %v", err)
}
partsBytes, err := os.ReadFile(filepath.Join(result.Output2DADir, "parts_belt.2da"))
if err != nil {
t.Fatalf("read parts_belt.2da: %v", err)
}
if partsText := string(partsBytes); !strings.Contains(partsText, "18\t0\t0.00") {
t.Errorf("expected autogenerated row 18 from released manifest, got:\n%s", partsText)
}
}
func TestBuildNativeWithReleasedHeadVisualeffectsManifest(t *testing.T) {
root := t.TempDir()
projRoot := filepath.Join(root, "project")