Script Compiler Pathing

This commit is contained in:
2026-04-10 19:50:17 +02:00
parent 77c373c126
commit cecafa9c1f
3 changed files with 333 additions and 2 deletions
+43 -1
View File
@@ -358,12 +358,17 @@ while [ "$#" -gt 0 ]; do
done
[ -n "$out" ]
[ -n "$src" ]
printf 'compiled:%s\n' "$(basename "$src")" > "$out"
printf 'compiled:%s\nNWN_ROOT=%s\nNWN_HOME=%s\nNWN_USER_DIRECTORY=%s\n' "$(basename "$src")" "${NWN_ROOT-}" "${NWN_HOME-}" "${NWN_USER_DIRECTORY-}" > "$out"
`)
if err := os.Chmod(compiler, 0o755); err != nil {
t.Fatalf("chmod fake compiler: %v", err)
}
t.Setenv("SOW_NWN_SCRIPT_COMPILER", compiler)
installRoot := filepath.Join(root, "nwn-install")
mustMkdir(t, filepath.Join(installRoot, "data"))
t.Setenv("SOW_NWN_ROOT", installRoot)
userDir := filepath.Join(root, "nwn-user")
t.Setenv("SOW_NWN_USER_DIRECTORY", userDir)
p, err := project.Load(root)
if err != nil {
@@ -409,6 +414,15 @@ printf 'compiled:%s\n' "$(basename "$src")" > "$out"
if !strings.Contains(string(resource.Data), "compiled:use_thing.nss") {
t.Fatalf("unexpected compiled payload: %q", string(resource.Data))
}
if !strings.Contains(string(resource.Data), "NWN_ROOT="+installRoot) {
t.Fatalf("compiled payload missing NWN_ROOT: %q", string(resource.Data))
}
if !strings.Contains(string(resource.Data), "NWN_HOME="+userDir) {
t.Fatalf("compiled payload missing NWN_HOME: %q", string(resource.Data))
}
if !strings.Contains(string(resource.Data), "NWN_USER_DIRECTORY="+userDir) {
t.Fatalf("compiled payload missing NWN_USER_DIRECTORY: %q", string(resource.Data))
}
}
}
}
@@ -419,6 +433,9 @@ printf 'compiled:%s\n' "$(basename "$src")" > "$out"
if !foundCompiled {
t.Fatalf("expected compiled script resource in archive")
}
if _, err := os.Stat(userDir); err != nil {
t.Fatalf("expected build to prepare NWN user directory: %v", err)
}
compareResult, err := Compare(p)
if err != nil {
@@ -429,6 +446,31 @@ printf 'compiled:%s\n' "$(basename "$src")" > "$out"
}
}
func TestParseSteamLibraryFolders(t *testing.T) {
root := t.TempDir()
vdf := filepath.Join(root, "libraryfolders.vdf")
mustWriteFile(t, vdf, `"libraryfolders"
{
"0"
{
"path" "/mnt/games/Steam"
}
"1" "D:\\SteamLibrary"
}
`)
got := parseSteamLibraryFolders(vdf)
if len(got) != 2 {
t.Fatalf("expected 2 library roots, got %d (%v)", len(got), got)
}
if got[0] != filepath.Clean("/mnt/games/Steam") {
t.Fatalf("unexpected first library root: %q", got[0])
}
if got[1] != filepath.Clean(`D:\SteamLibrary`) {
t.Fatalf("unexpected second library root: %q", got[1])
}
}
func TestBuildBuildsTopPackageAndInjectsHAKList(t *testing.T) {
root := t.TempDir()
mustMkdir(t, filepath.Join(root, "src", "module"))