Skip to content

Commit e5e6137

Browse files
committed
Windows CI: add parser tests and example DSP builds
1 parent 3f3a41b commit e5e6137

File tree

1 file changed

+62
-1
lines changed

1 file changed

+62
-1
lines changed

.github/workflows/windows.yml

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,65 @@ jobs:
2626
- name: Build Faust
2727
run: |
2828
make -C build cmake BACKENDS=regular.cmake TARGETS=win-ci.cmake
29-
make -C build
29+
make -C build
30+
31+
- name: Run parser FileResolver tests
32+
shell: pwsh
33+
run: |
34+
$buildDir = "compiler\tests\parser\build-ci"
35+
if (Test-Path $buildDir) { Remove-Item $buildDir -Recurse -Force }
36+
New-Item -ItemType Directory -Force -Path $buildDir | Out-Null
37+
cl /nologo /std:c++17 /EHsc /I compiler compiler\tests\parser\test_file_resolver.cpp /Fe:$buildDir\file_resolver_tests.exe
38+
& "$buildDir\file_resolver_tests.exe"
39+
40+
- name: Compile example DSPs with Faust
41+
shell: bash
42+
run: |
43+
python - <<'PY'
44+
import os
45+
import pathlib
46+
import subprocess
47+
48+
repo_root = pathlib.Path(".").resolve()
49+
faust = repo_root / "build" / "bin" / "faust.exe"
50+
if not faust.exists():
51+
faust = faust.with_suffix("")
52+
if not faust.exists():
53+
raise SystemExit(f"Faust executable not found at {faust}")
54+
55+
examples_root = repo_root / "examples"
56+
if not examples_root.exists():
57+
raise SystemExit(f"Examples directory not found at {examples_root}")
58+
59+
libraries_dir = repo_root / "libraries"
60+
61+
output_root = repo_root / "build" / "ci_examples"
62+
output_root.mkdir(parents=True, exist_ok=True)
63+
64+
failures = []
65+
66+
for dsp in sorted(examples_root.rglob("*.dsp")):
67+
rel = dsp.relative_to(examples_root)
68+
safe_name = "_".join(rel.parts).replace(".dsp", "")
69+
target = output_root / f"{safe_name}.cpp"
70+
cmd = [
71+
str(faust),
72+
"-lang",
73+
"cpp",
74+
"-I",
75+
str(libraries_dir),
76+
"-o",
77+
str(target),
78+
str(dsp),
79+
]
80+
result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
81+
if result.returncode != 0:
82+
log = result.stderr if result.stderr else result.stdout
83+
failures.append((dsp, log))
84+
85+
if failures:
86+
for dsp, log in failures:
87+
print(f"--- Failed: {dsp} ---")
88+
print(log)
89+
raise SystemExit(f"{len(failures)} example DSP(s) failed to compile")
90+
PY

0 commit comments

Comments
 (0)