feat(plugins): qualify host VST3 chains and refresh the DAW gallery (phase 89)

This commit is contained in:
Johannes Findeisen 2026-11-06 01:50:25 +01:00
commit 26ace28bb5
73 changed files with 344 additions and 18 deletions

View file

@ -83,6 +83,26 @@ with tempfile.TemporaryDirectory(prefix="xtc-inspect-") as directory:
):
project.write_text(malformed)
check("--validate", project, 1)
# V17 track-chain dependency inspection must not dlopen the readable fake module.
for number, name, identity in ((1, "CLAP", "org.xtc.fixture"), (2, "VST2", ""),
(3, "VST3", "0123456789abcdef0123456789abcdef")):
chain = ("CHAINS 1\nCHAIN 0 1 3f800000\n"
f"INSERT 1 3f800000 {number} 0 42 1 120000 {b'effect'.hex()}\n"
f"MODULE {str(module).encode().hex()}\nIDENTITY {identity.encode().hex() if identity else '-'}\n"
"CONTROLS 0\nPARAMETERS 0\n")
document = base.replace("XTC_PROJECT 10", "XTC_PROJECT 17").replace(
"END\n", "TRACK_INSTRUMENTS 0\nLIVE_INSTRUMENT 18446744073709551615\nMARKERS 0\n" + chain + "END\n")
project.write_text(document)
check("--inspect", project, 0, name + " insert track 0 slot 1", "no plugin code executed", "missing/unreadable: 0")
for malformed in (document.replace("CHAIN 0 1", "CHAIN 0 9"),
document.replace("INSERT 1 3f800000", "INSERT 1 7f800000"),
document.replace("CHAIN 0 1", "CHAIN 99 1")):
project.write_text(malformed)
check("--validate", project, 1)
project.write_text(document.replace(str(module).encode().hex(), b"/missing/effect.so".hex()))
check("--inspect", project, 2, name + " insert track 0", "missing/unreadable: 1")
project.write_text(document.replace("XTC_PROJECT 17", "XTC_PROJECT 16").replace(chain, ""))
check("--validate", project, 0, "metadata valid")
for text, messages in [
(base.replace("XTC_PROJECT 10", "XTC_PROJECT 999"), ("line 1", "999", "1..17")),
("XTC_PROJECT 10\n", ("line 2", "APP")),