Guard initial remap per-file staging paths
This commit is contained in:
52
text6.txt
52
text6.txt
@@ -1969,3 +1969,55 @@ wasm-port/tests/host/verify_host_smokes.sh
|
|||||||
`assertRemapRegressionStaging(...)` 拆成 coverage helper 与 per-file staging helper。
|
`assertRemapRegressionStaging(...)` 拆成 coverage helper 与 per-file staging helper。
|
||||||
`nested-remaps-oword` 含 expected-unstaged 文件,应留到后续单独处理。继续避免
|
`nested-remaps-oword` 含 expected-unstaged 文件,应留到后续单独处理。继续避免
|
||||||
blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||||||
|
|
||||||
|
四十五、2026-06-13 继续执行记录:initial remap per-file staging helper guard
|
||||||
|
|
||||||
|
本批开始处理 remap 专用 staged path helper,并只选择没有 expected-unstaged 额外清单的
|
||||||
|
短小 fixture:
|
||||||
|
|
||||||
|
- `duplicate-o-word`
|
||||||
|
- `fail/args.0`
|
||||||
|
- `fail/args.1`
|
||||||
|
|
||||||
|
完成内容:
|
||||||
|
|
||||||
|
- Node 侧新增 `assertRemapRegressionCoverage(...)`,保留 vendored `.ini/.ngc`
|
||||||
|
manifest coverage 与 expected-unstaged overlap 检查;
|
||||||
|
- Node 侧新增 `assertRemapRegressionFilesStaging(...)`,逐个文件检查
|
||||||
|
`/work/remap/<name>/<file>` staged path;
|
||||||
|
- Node 侧保留原 `assertRemapRegressionStaging(...)` 给尚未拆分的 remap fixture 使用;
|
||||||
|
- Node 侧将上述 3 个 remap fixture 切换为 coverage helper 加 per-file staging helper;
|
||||||
|
- browser 侧新增同名 per-file staging helper,逐个文件检查
|
||||||
|
`/work/browser-remap/<name>/<file>` staged path;
|
||||||
|
- browser 侧同步替换上述 3 个 remap fixture;
|
||||||
|
- browser 侧仍不枚举目录;
|
||||||
|
- 仅整理 host/filesystem staging guard,不改变 remap、O-word、argument validation、
|
||||||
|
expected-error 或 interpreter 语义。
|
||||||
|
|
||||||
|
已运行验证:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git diff --check
|
||||||
|
wasm-port/tools/verify_vendor_sync.sh
|
||||||
|
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||||||
|
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||||||
|
wasm-port/tests/host/verify_host_smokes.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
结果:全部通过。
|
||||||
|
|
||||||
|
下一步建议:
|
||||||
|
|
||||||
|
继续处理没有 expected-unstaged 额外清单的 remap fixture。优先候选:
|
||||||
|
|
||||||
|
- `fail/args.2`
|
||||||
|
- `fail/body-ngc`
|
||||||
|
- `m30-interaction`
|
||||||
|
|
||||||
|
这三组 file list 均为 `test.ini`、`test.ngc`、`rm400.ngc`,适合继续切换到
|
||||||
|
`assertRemapRegressionCoverage(...)` 加 `assertRemapRegressionFilesStaging(...)`。
|
||||||
|
仍暂缓 `nested-remaps-oword`,因为它含 expected-unstaged 文件,需要单独保留
|
||||||
|
staged/unstaged overlap guard。继续避免 blocked runtime promotion、browser full
|
||||||
|
inventory 扩面和 JS CNC 语义实现。
|
||||||
|
|||||||
@@ -4660,6 +4660,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function assertRemapRegressionFilesStaging(name, files, wasmDir) {
|
||||||
|
if (files.length === 0 || new Set(files).size !== files.length) {
|
||||||
|
throw new Error(`browser_remap_${name}_fixture_coverage: list drift`);
|
||||||
|
}
|
||||||
|
for (const file of files) {
|
||||||
|
if (`${wasmDir}/${file}` !== `/work/browser-remap/${name}/${file}`) {
|
||||||
|
throw new Error(`browser_remap_${name}_${file}_staging_manifest: list drift`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function writeInterpRegressionFile(interp, name, filename) {
|
async function writeInterpRegressionFile(interp, name, filename) {
|
||||||
const sourceDir = `../../vendor/linuxcnc/tests/interp/${name}`;
|
const sourceDir = `../../vendor/linuxcnc/tests/interp/${name}`;
|
||||||
const wasmDir = `/work/browser-interp/${name}`;
|
const wasmDir = `/work/browser-interp/${name}`;
|
||||||
@@ -6008,7 +6019,7 @@
|
|||||||
"rm208.ngc",
|
"rm208.ngc",
|
||||||
];
|
];
|
||||||
const duplicateOwordDir = await writeRemapRegressionFiles(interp, "duplicate-o-word", duplicateOwordFiles);
|
const duplicateOwordDir = await writeRemapRegressionFiles(interp, "duplicate-o-word", duplicateOwordFiles);
|
||||||
assertRemapRegressionStaging("duplicate-o-word", duplicateOwordFiles, duplicateOwordDir);
|
assertRemapRegressionFilesStaging("duplicate-o-word", duplicateOwordFiles, duplicateOwordDir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"browser_duplicate_oword_remap",
|
"browser_duplicate_oword_remap",
|
||||||
interp.runRemapFile(
|
interp.runRemapFile(
|
||||||
@@ -6042,7 +6053,7 @@
|
|||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
];
|
];
|
||||||
const failArgs0Dir = await writeRemapRegressionFiles(interp, "fail/args.0", failArgs0Files);
|
const failArgs0Dir = await writeRemapRegressionFiles(interp, "fail/args.0", failArgs0Files);
|
||||||
assertRemapRegressionStaging("fail/args.0", failArgs0Files, failArgs0Dir);
|
assertRemapRegressionFilesStaging("fail/args.0", failArgs0Files, failArgs0Dir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"browser_fail_args_0_remap",
|
"browser_fail_args_0_remap",
|
||||||
interp.runRemapFile(
|
interp.runRemapFile(
|
||||||
@@ -6071,7 +6082,7 @@
|
|||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
];
|
];
|
||||||
const failArgs1Dir = await writeRemapRegressionFiles(interp, "fail/args.1", failArgs1Files);
|
const failArgs1Dir = await writeRemapRegressionFiles(interp, "fail/args.1", failArgs1Files);
|
||||||
assertRemapRegressionStaging("fail/args.1", failArgs1Files, failArgs1Dir);
|
assertRemapRegressionFilesStaging("fail/args.1", failArgs1Files, failArgs1Dir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"browser_fail_args_1_remap",
|
"browser_fail_args_1_remap",
|
||||||
interp.runRemapFileContinueOnError(
|
interp.runRemapFileContinueOnError(
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ function writeRemapRegressionFiles(name, files) {
|
|||||||
return wasmDir;
|
return wasmDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
function assertRemapRegressionStaging(name, files, wasmDir, expectedUnstagedFiles = []) {
|
function assertRemapRegressionCoverage(name, files, expectedUnstagedFiles = []) {
|
||||||
const sourceDir = resolve(rootDir, "vendor/linuxcnc/tests/remap", name);
|
const sourceDir = resolve(rootDir, "vendor/linuxcnc/tests/remap", name);
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
readdirSync(sourceDir)
|
readdirSync(sourceDir)
|
||||||
@@ -260,6 +260,20 @@ function assertRemapRegressionStaging(name, files, wasmDir, expectedUnstagedFile
|
|||||||
[],
|
[],
|
||||||
`remap ${name} unstaged fixture overlap drift`,
|
`remap ${name} unstaged fixture overlap drift`,
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function assertRemapRegressionFilesStaging(name, files, wasmDir) {
|
||||||
|
for (const file of files) {
|
||||||
|
assert.equal(
|
||||||
|
`${wasmDir}/${file}`,
|
||||||
|
`/work/remap/${name}/${file}`,
|
||||||
|
`remap ${name}/${file} staging manifest drift`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function assertRemapRegressionStaging(name, files, wasmDir, expectedUnstagedFiles = []) {
|
||||||
|
assertRemapRegressionCoverage(name, files, expectedUnstagedFiles);
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
files.map((file) => `${wasmDir}/${file}`),
|
files.map((file) => `${wasmDir}/${file}`),
|
||||||
files.map((file) => `/work/remap/${name}/${file}`),
|
files.map((file) => `/work/remap/${name}/${file}`),
|
||||||
@@ -1011,7 +1025,8 @@ const duplicateOwordFiles = [
|
|||||||
"rm208.ngc",
|
"rm208.ngc",
|
||||||
];
|
];
|
||||||
const duplicateOwordDir = writeRemapRegressionFiles("duplicate-o-word", duplicateOwordFiles);
|
const duplicateOwordDir = writeRemapRegressionFiles("duplicate-o-word", duplicateOwordFiles);
|
||||||
assertRemapRegressionStaging("duplicate-o-word", duplicateOwordFiles, duplicateOwordDir);
|
assertRemapRegressionCoverage("duplicate-o-word", duplicateOwordFiles);
|
||||||
|
assertRemapRegressionFilesStaging("duplicate-o-word", duplicateOwordFiles, duplicateOwordDir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"duplicate_oword_remap_wasm",
|
"duplicate_oword_remap_wasm",
|
||||||
interp.runRemapFile(
|
interp.runRemapFile(
|
||||||
@@ -1045,7 +1060,8 @@ const failArgs0Files = [
|
|||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
];
|
];
|
||||||
const failArgs0Dir = writeRemapRegressionFiles("fail/args.0", failArgs0Files);
|
const failArgs0Dir = writeRemapRegressionFiles("fail/args.0", failArgs0Files);
|
||||||
assertRemapRegressionStaging("fail/args.0", failArgs0Files, failArgs0Dir);
|
assertRemapRegressionCoverage("fail/args.0", failArgs0Files);
|
||||||
|
assertRemapRegressionFilesStaging("fail/args.0", failArgs0Files, failArgs0Dir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"fail_args_0_remap_wasm",
|
"fail_args_0_remap_wasm",
|
||||||
interp.runRemapFile(
|
interp.runRemapFile(
|
||||||
@@ -1074,7 +1090,8 @@ const failArgs1Files = [
|
|||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
];
|
];
|
||||||
const failArgs1Dir = writeRemapRegressionFiles("fail/args.1", failArgs1Files);
|
const failArgs1Dir = writeRemapRegressionFiles("fail/args.1", failArgs1Files);
|
||||||
assertRemapRegressionStaging("fail/args.1", failArgs1Files, failArgs1Dir);
|
assertRemapRegressionCoverage("fail/args.1", failArgs1Files);
|
||||||
|
assertRemapRegressionFilesStaging("fail/args.1", failArgs1Files, failArgs1Dir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"fail_args_1_remap_wasm",
|
"fail_args_1_remap_wasm",
|
||||||
interp.runRemapFileContinueOnError(
|
interp.runRemapFileContinueOnError(
|
||||||
|
|||||||
Reference in New Issue
Block a user