feat: remove NWScript compiler support
This commit is contained in:
@@ -322,169 +322,6 @@ func TestProjectConsoleEmitsRelativePaths(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRunBuildModuleToolkitPreflightRefreshesManifestAndSkipsBrokenCompiler(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
mkdirAll(t, filepath.Join(root, "src", "module"))
|
||||
mkdirAll(t, filepath.Join(root, "src", "placeables"))
|
||||
mkdirAll(t, filepath.Join(root, "src", "scripts"))
|
||||
mkdirAll(t, filepath.Join(root, "build"))
|
||||
mkdirAll(t, filepath.Join(root, "scripts"))
|
||||
|
||||
writeFile(t, filepath.Join(root, "nwn-tool.yaml"), `
|
||||
module:
|
||||
name: Test Module
|
||||
resref: testmod
|
||||
paths:
|
||||
source: src
|
||||
build: build
|
||||
scripts:
|
||||
compiler:
|
||||
search:
|
||||
- tools/script-compiler/nwn_script_comp
|
||||
`)
|
||||
writeFile(t, filepath.Join(root, "src", "module", "module.ifo.json"), `{
|
||||
"file_type": "IFO ",
|
||||
"file_version": "V3.2",
|
||||
"root": {
|
||||
"struct_type": 0,
|
||||
"fields": [
|
||||
{"label": "Mod_Name", "type": "CExoString", "value": "Test Module"}
|
||||
]
|
||||
}
|
||||
}
|
||||
`)
|
||||
writeFile(t, filepath.Join(root, "src", "placeables", "thing.utp.json"), `{
|
||||
"file_type": "UTP ",
|
||||
"file_version": "V3.2",
|
||||
"root": {
|
||||
"struct_type": 0,
|
||||
"fields": [
|
||||
{"label": "OnUsed", "type": "ResRef", "value": "use_thing"}
|
||||
]
|
||||
}
|
||||
}
|
||||
`)
|
||||
writeFile(t, filepath.Join(root, "src", "scripts", "use_thing.nss"), "void main() {}\n")
|
||||
writeFile(t, filepath.Join(root, "scripts", "fetch-hak-manifest.sh"), "#!/usr/bin/env sh\nset -eu\nmkdir -p \"$(dirname \"$1\")\"\nprintf '{\"module_haks\":[\"sow_core\"],\"haks\":[]}\n' >\"$1\"\n")
|
||||
if err := os.Chmod(filepath.Join(root, "scripts", "fetch-hak-manifest.sh"), 0o755); err != nil {
|
||||
t.Fatalf("chmod fetch-hak-manifest.sh: %v", err)
|
||||
}
|
||||
|
||||
badCompiler := filepath.Join(root, "bad-compiler.sh")
|
||||
writeFile(t, badCompiler, "#!/usr/bin/env sh\nexit 1\n")
|
||||
if err := os.Chmod(badCompiler, 0o755); err != nil {
|
||||
t.Fatalf("chmod bad compiler: %v", err)
|
||||
}
|
||||
t.Setenv("SOW_NWN_SCRIPT_COMPILER", badCompiler)
|
||||
t.Setenv("SOW_MODULE_SKIP_NSS_COMPILATION", "")
|
||||
|
||||
var stdout bytes.Buffer
|
||||
var stderr bytes.Buffer
|
||||
ctx := context{
|
||||
stdout: &stdout,
|
||||
stderr: &stderr,
|
||||
cwd: root,
|
||||
args: []string{"build-module"},
|
||||
}
|
||||
|
||||
if err := runBuildModule(ctx); err != nil {
|
||||
t.Fatalf("runBuildModule failed: %v", err)
|
||||
}
|
||||
|
||||
moduleSource := mustReadFile(t, filepath.Join(root, "src", "module", "module.ifo.json"))
|
||||
if !strings.Contains(moduleSource, "\"Mod_HakList\"") || !strings.Contains(moduleSource, "\"sow_core\"") {
|
||||
t.Fatalf("expected manifest-applied module source, got %q", moduleSource)
|
||||
}
|
||||
if _, err := os.Stat(filepath.Join(root, ".cache", "ncs", "use_thing.ncs")); !os.IsNotExist(err) {
|
||||
t.Fatalf("expected broken explicit compiler to skip compilation, got err=%v", err)
|
||||
}
|
||||
if !strings.Contains(stdout.String(), "script compilation: skipped") {
|
||||
t.Fatalf("expected skip-compilation summary in output, got %q", stdout.String())
|
||||
}
|
||||
if strings.Contains(stdout.String(), "[build-module]") {
|
||||
t.Fatalf("did not expect raw build-module progress in normal output, got %q", stdout.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestRunBuildModuleToolkitPreflightInstallsCompilerWhenNeeded(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
mkdirAll(t, filepath.Join(root, "src", "module"))
|
||||
mkdirAll(t, filepath.Join(root, "src", "placeables"))
|
||||
mkdirAll(t, filepath.Join(root, "src", "scripts"))
|
||||
mkdirAll(t, filepath.Join(root, "build"))
|
||||
mkdirAll(t, filepath.Join(root, "scripts"))
|
||||
|
||||
writeFile(t, filepath.Join(root, "nwn-tool.yaml"), `
|
||||
module:
|
||||
name: Test Module
|
||||
resref: testmod
|
||||
paths:
|
||||
source: src
|
||||
build: build
|
||||
scripts:
|
||||
compiler:
|
||||
search:
|
||||
- tools/script-compiler/nwn_script_comp
|
||||
`)
|
||||
writeFile(t, filepath.Join(root, "src", "module", "module.ifo.json"), `{
|
||||
"file_type": "IFO ",
|
||||
"file_version": "V3.2",
|
||||
"root": {
|
||||
"struct_type": 0,
|
||||
"fields": [
|
||||
{"label": "Mod_Name", "type": "CExoString", "value": "Test Module"}
|
||||
]
|
||||
}
|
||||
}
|
||||
`)
|
||||
writeFile(t, filepath.Join(root, "src", "placeables", "thing.utp.json"), `{
|
||||
"file_type": "UTP ",
|
||||
"file_version": "V3.2",
|
||||
"root": {
|
||||
"struct_type": 0,
|
||||
"fields": [
|
||||
{"label": "OnUsed", "type": "ResRef", "value": "use_thing"}
|
||||
]
|
||||
}
|
||||
}
|
||||
`)
|
||||
writeFile(t, filepath.Join(root, "src", "scripts", "use_thing.nss"), "void main() {}\n")
|
||||
writeFile(t, filepath.Join(root, "scripts", "fetch-hak-manifest.sh"), "#!/usr/bin/env sh\nset -eu\nmkdir -p \"$(dirname \"$1\")\"\nprintf '{\"module_haks\":[\"sow_core\"],\"haks\":[]}\n' >\"$1\"\n")
|
||||
writeFile(t, filepath.Join(root, "scripts", "install-script-compiler.sh"), "#!/usr/bin/env sh\nset -eu\ninstall_dir=\"${SOW_SCRIPT_COMPILER_INSTALL_DIR:-./tools/script-compiler}\"\nmkdir -p \"$install_dir\"\ncat >\"$install_dir/nwn_script_comp\" <<'SH'\n#!/usr/bin/env sh\nset -eu\nif [ \"${1:-}\" = \"--help\" ]; then\n exit 0\nfi\nout=\"\"\nsrc=\"\"\nwhile [ \"$#\" -gt 0 ]; do\n case \"$1\" in\n -o)\n out=\"$2\"\n shift 2\n ;;\n --dirs)\n shift 2\n ;;\n *)\n src=\"$1\"\n shift\n ;;\n esac\ndone\nprintf 'compiled:%s\\n' \"$(basename \"$src\")\" >\"$out\"\nSH\nchmod +x \"$install_dir/nwn_script_comp\"\nprintf 'installed: %s\\n' \"$install_dir\"\n")
|
||||
if err := os.Chmod(filepath.Join(root, "scripts", "fetch-hak-manifest.sh"), 0o755); err != nil {
|
||||
t.Fatalf("chmod fetch-hak-manifest.sh: %v", err)
|
||||
}
|
||||
if err := os.Chmod(filepath.Join(root, "scripts", "install-script-compiler.sh"), 0o755); err != nil {
|
||||
t.Fatalf("chmod install-script-compiler.sh: %v", err)
|
||||
}
|
||||
t.Setenv("SOW_NWN_SCRIPT_COMPILER", "")
|
||||
t.Setenv("SOW_MODULE_SKIP_NSS_COMPILATION", "")
|
||||
|
||||
var stdout bytes.Buffer
|
||||
var stderr bytes.Buffer
|
||||
ctx := context{
|
||||
stdout: &stdout,
|
||||
stderr: &stderr,
|
||||
cwd: root,
|
||||
args: []string{"build-module"},
|
||||
}
|
||||
|
||||
if err := runBuildModule(ctx); err != nil {
|
||||
t.Fatalf("runBuildModule failed: %v\nstdout:\n%s\nstderr:\n%s", err, stdout.String(), stderr.String())
|
||||
}
|
||||
|
||||
compiledScript := filepath.Join(root, ".cache", "ncs", "use_thing.ncs")
|
||||
if _, err := os.Stat(compiledScript); err != nil {
|
||||
t.Fatalf("expected installed compiler to compile script: %v", err)
|
||||
}
|
||||
if !strings.Contains(stdout.String(), "script compilation: installed") {
|
||||
t.Fatalf("expected install summary in output, got %q", stdout.String())
|
||||
}
|
||||
if strings.Contains(stdout.String(), "[build-module]") {
|
||||
t.Fatalf("did not expect raw build-module progress in normal output, got %q", stdout.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestRunMusicScanUsesConfiguredDatasetsWithoutWriting(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
mkdirAll(t, filepath.Join(root, "assets", "audio", "westgate"))
|
||||
@@ -736,11 +573,3 @@ func setFileTime(t *testing.T, path string, modTime time.Time) {
|
||||
}
|
||||
}
|
||||
|
||||
func mustReadFile(t *testing.T, path string) string {
|
||||
t.Helper()
|
||||
raw, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
t.Fatalf("read %s: %v", path, err)
|
||||
}
|
||||
return string(raw)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user