fix(ci): restore portable schema and clean-runtime tests

Escape DEX class-name delimiters in the owning schema so advertised patterns compile under JavaScript Unicode Sets. Keep the clean-runtime fixture preflight independent of unrelated same-user processes; the fixture inode is freshly copied and the post-launch assertion still exercises exact executable identity.

Co-authored-by: Kaoru0822 <[email protected]>
This commit is contained in:
N0zoM1z0andKaoru0822 committed 2026-10-13 16:06:46 +00:00
1 parent cbc31db525
commit 37130367cc
2 files changed
+5 -4

No files matched your search

+1 -1
View File
@@ -102,7 +102,7 @@ const textCoverage = z.strictObject({
export const dexDescriptorSchema = z
.string()
.regex(
/^\((?:\[*(?:[ZBSCIJFD]|L[^;()]+;))*\)(?:V|\[*(?:[ZBSCIJFD]|L[^;()]+;))$/u,
/^\((?:\[*(?:[ZBSCIJFD]|L[^;\x28\x29]+;))*\)(?:V|\[*(?:[ZBSCIJFD]|L[^;\x28\x29]+;))$/u,
);
const method = z.strictObject({
@@ -30,9 +30,10 @@ it
await chmod(launcher, 0o700);
await symlink(launcher, alternate);
}
// A rejection must come from the fixture we are about to launch. An
// existing Xvfb would otherwise mask a broken executable-identity check.
await assertCleanLinuxHopperRuntime(alternateMode ? [launcher] : []);
// A rejection must come from the fixture we are about to launch. The
// command scan excludes an existing named demo process, while the copied
// launcher's new inode cannot already be executing.
await assertCleanLinuxHopperRuntime([]);
const command = alternateMode ? alternate : process.execPath;
const arguments_ = alternateMode ? ["30"] : ["-e", childCode];
const parentCode = `