Guard initial remap staging paths
This commit is contained in:
47
text6.txt
47
text6.txt
@@ -706,3 +706,50 @@ wasm-port/tests/host/verify_host_smokes.sh
|
|||||||
优先候选:继续扫描剩余 `write*RegressionFiles(...)` helper 输出,或挑选短小单文件
|
优先候选:继续扫描剩余 `write*RegressionFiles(...)` helper 输出,或挑选短小单文件
|
||||||
direct-file case。仍不要推进 blocked runtime promotion、browser full inventory
|
direct-file case。仍不要推进 blocked runtime promotion、browser full inventory
|
||||||
扩面或 JS CNC 语义实现。
|
扩面或 JS CNC 语义实现。
|
||||||
|
|
||||||
|
十八、2026-06-13 继续执行记录:initial remap file-list staging path guard
|
||||||
|
|
||||||
|
本批按“已有明确 file list 的 remap fixture staged path guard”推进,完成现有
|
||||||
|
Node/browser remap coverage 的 6 个小目录:
|
||||||
|
|
||||||
|
- `remap/duplicate-o-word`
|
||||||
|
- `remap/fail/args.0`
|
||||||
|
- `remap/fail/args.1`
|
||||||
|
- `remap/fail/args.2`
|
||||||
|
- `remap/fail/body-ngc`
|
||||||
|
- `remap/m30-interaction`
|
||||||
|
|
||||||
|
完成内容:
|
||||||
|
|
||||||
|
- Node 侧新增 `assertRemapRegressionStaging(...)`;
|
||||||
|
- Node 侧将上述 6 个 inline remap file list 提成 fixed manifest;
|
||||||
|
- Node 侧用 upstream vendored `.ini/.ngc` 文件清单与 fixed manifest 精确对账;
|
||||||
|
- Node 侧检查 `writeRemapRegressionFiles(...)` 目标 staged path 与 fixed manifest
|
||||||
|
一致;
|
||||||
|
- browser 侧新增同名 staged path guard;
|
||||||
|
- browser 侧检查 staged path 去掉 `/work/browser-remap/<name>/` 前缀后与 fixed
|
||||||
|
manifest 一致;
|
||||||
|
- 仅校验文件清单与 staging 路径,不改变 remap 执行语义;
|
||||||
|
- browser 仍不依赖目录枚举。
|
||||||
|
|
||||||
|
已运行验证:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git diff --check
|
||||||
|
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
|
||||||
|
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_sim_configs_inventory_wasm.sh
|
||||||
|
wasm-port/tests/host/verify_host_smokes.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
结果:全部通过。
|
||||||
|
|
||||||
|
下一步建议:
|
||||||
|
|
||||||
|
继续按小批量处理剩余 `writeRemapRegressionFiles(...)` file list,例如
|
||||||
|
`nested-remaps-oword`、`posargs.0`、`sequencing`、`remap-io`。注意 `remap-io`
|
||||||
|
会额外生成 `simpockets.tbl`,如处理该项应明确区分 vendored file list 与运行时
|
||||||
|
生成文件。继续避免 blocked runtime promotion、browser full inventory 扩面和
|
||||||
|
JS CNC 语义实现。
|
||||||
|
|||||||
@@ -4647,6 +4647,16 @@
|
|||||||
return wasmDir;
|
return wasmDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function assertRemapRegressionStaging(name, files, wasmDir) {
|
||||||
|
if (files.length === 0 || new Set(files).size !== files.length) {
|
||||||
|
throw new Error(`browser_remap_${name}_fixture_coverage: list drift`);
|
||||||
|
}
|
||||||
|
const remapStagedRelativeFiles = files.map((file) => `${wasmDir}/${file}`.replace(`/work/browser-remap/${name}/`, ""));
|
||||||
|
if (remapStagedRelativeFiles.join(",") !== files.join(",")) {
|
||||||
|
throw new Error(`browser_remap_${name}_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}`;
|
||||||
@@ -5951,12 +5961,14 @@
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const duplicateOwordDir = await writeRemapRegressionFiles(interp, "duplicate-o-word", [
|
const duplicateOwordFiles = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm207.ngc",
|
"rm207.ngc",
|
||||||
"rm208.ngc",
|
"rm208.ngc",
|
||||||
]);
|
];
|
||||||
|
const duplicateOwordDir = await writeRemapRegressionFiles(interp, "duplicate-o-word", duplicateOwordFiles);
|
||||||
|
assertRemapRegressionStaging("duplicate-o-word", duplicateOwordFiles, duplicateOwordDir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"browser_duplicate_oword_remap",
|
"browser_duplicate_oword_remap",
|
||||||
interp.runRemapFile(
|
interp.runRemapFile(
|
||||||
@@ -5984,11 +5996,13 @@
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const failArgs0Dir = await writeRemapRegressionFiles(interp, "fail/args.0", [
|
const failArgs0Files = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
]);
|
];
|
||||||
|
const failArgs0Dir = await writeRemapRegressionFiles(interp, "fail/args.0", failArgs0Files);
|
||||||
|
assertRemapRegressionStaging("fail/args.0", failArgs0Files, failArgs0Dir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"browser_fail_args_0_remap",
|
"browser_fail_args_0_remap",
|
||||||
interp.runRemapFile(
|
interp.runRemapFile(
|
||||||
@@ -6011,11 +6025,13 @@
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const failArgs1Dir = await writeRemapRegressionFiles(interp, "fail/args.1", [
|
const failArgs1Files = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
]);
|
];
|
||||||
|
const failArgs1Dir = await writeRemapRegressionFiles(interp, "fail/args.1", failArgs1Files);
|
||||||
|
assertRemapRegressionStaging("fail/args.1", failArgs1Files, failArgs1Dir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"browser_fail_args_1_remap",
|
"browser_fail_args_1_remap",
|
||||||
interp.runRemapFileContinueOnError(
|
interp.runRemapFileContinueOnError(
|
||||||
@@ -6034,11 +6050,13 @@
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const failArgs2Dir = await writeRemapRegressionFiles(interp, "fail/args.2", [
|
const failArgs2Files = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
]);
|
];
|
||||||
|
const failArgs2Dir = await writeRemapRegressionFiles(interp, "fail/args.2", failArgs2Files);
|
||||||
|
assertRemapRegressionStaging("fail/args.2", failArgs2Files, failArgs2Dir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"browser_fail_args_2_remap",
|
"browser_fail_args_2_remap",
|
||||||
interp.runRemapFileContinueOnError(
|
interp.runRemapFileContinueOnError(
|
||||||
@@ -6057,11 +6075,13 @@
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const failBodyNgcDir = await writeRemapRegressionFiles(interp, "fail/body-ngc", [
|
const failBodyNgcFiles = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
]);
|
];
|
||||||
|
const failBodyNgcDir = await writeRemapRegressionFiles(interp, "fail/body-ngc", failBodyNgcFiles);
|
||||||
|
assertRemapRegressionStaging("fail/body-ngc", failBodyNgcFiles, failBodyNgcDir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"browser_fail_body_ngc_remap",
|
"browser_fail_body_ngc_remap",
|
||||||
interp.runRemapFileContinueOnError(
|
interp.runRemapFileContinueOnError(
|
||||||
@@ -6083,11 +6103,13 @@
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const m30InteractionDir = await writeRemapRegressionFiles(interp, "m30-interaction", [
|
const m30InteractionFiles = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
]);
|
];
|
||||||
|
const m30InteractionDir = await writeRemapRegressionFiles(interp, "m30-interaction", m30InteractionFiles);
|
||||||
|
assertRemapRegressionStaging("m30-interaction", m30InteractionFiles, m30InteractionDir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"browser_m30_interaction_remap",
|
"browser_m30_interaction_remap",
|
||||||
interp.runRemapFile(
|
interp.runRemapFile(
|
||||||
|
|||||||
@@ -246,6 +246,22 @@ function writeRemapRegressionFiles(name, files) {
|
|||||||
return wasmDir;
|
return wasmDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function assertRemapRegressionStaging(name, files, wasmDir) {
|
||||||
|
const sourceDir = resolve(rootDir, "vendor/linuxcnc/tests/remap", name);
|
||||||
|
assert.deepEqual(
|
||||||
|
readdirSync(sourceDir)
|
||||||
|
.filter((filename) => filename.endsWith(".ini") || filename.endsWith(".ngc"))
|
||||||
|
.sort(),
|
||||||
|
[...files].sort(),
|
||||||
|
`remap ${name} fixture coverage drift`,
|
||||||
|
);
|
||||||
|
assert.deepEqual(
|
||||||
|
files.map((file) => `${wasmDir}/${file}`),
|
||||||
|
files.map((file) => `/work/remap/${name}/${file}`),
|
||||||
|
`remap ${name} staging manifest drift`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function writeInterpRegressionFile(name, filename) {
|
function writeInterpRegressionFile(name, filename) {
|
||||||
const sourceDir = resolve(rootDir, "vendor/linuxcnc/tests/interp", name);
|
const sourceDir = resolve(rootDir, "vendor/linuxcnc/tests/interp", name);
|
||||||
const wasmDir = `/work/interp/${name}`;
|
const wasmDir = `/work/interp/${name}`;
|
||||||
@@ -921,12 +937,14 @@ verifyExpectedOutput(
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const duplicateOwordDir = writeRemapRegressionFiles("duplicate-o-word", [
|
const duplicateOwordFiles = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm207.ngc",
|
"rm207.ngc",
|
||||||
"rm208.ngc",
|
"rm208.ngc",
|
||||||
]);
|
];
|
||||||
|
const duplicateOwordDir = writeRemapRegressionFiles("duplicate-o-word", duplicateOwordFiles);
|
||||||
|
assertRemapRegressionStaging("duplicate-o-word", duplicateOwordFiles, duplicateOwordDir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"duplicate_oword_remap_wasm",
|
"duplicate_oword_remap_wasm",
|
||||||
interp.runRemapFile(
|
interp.runRemapFile(
|
||||||
@@ -954,11 +972,13 @@ verifyExpectedOutput(
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const failArgs0Dir = writeRemapRegressionFiles("fail/args.0", [
|
const failArgs0Files = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
]);
|
];
|
||||||
|
const failArgs0Dir = writeRemapRegressionFiles("fail/args.0", failArgs0Files);
|
||||||
|
assertRemapRegressionStaging("fail/args.0", failArgs0Files, failArgs0Dir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"fail_args_0_remap_wasm",
|
"fail_args_0_remap_wasm",
|
||||||
interp.runRemapFile(
|
interp.runRemapFile(
|
||||||
@@ -981,11 +1001,13 @@ verifyExpectedOutput(
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const failArgs1Dir = writeRemapRegressionFiles("fail/args.1", [
|
const failArgs1Files = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
]);
|
];
|
||||||
|
const failArgs1Dir = writeRemapRegressionFiles("fail/args.1", failArgs1Files);
|
||||||
|
assertRemapRegressionStaging("fail/args.1", failArgs1Files, failArgs1Dir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"fail_args_1_remap_wasm",
|
"fail_args_1_remap_wasm",
|
||||||
interp.runRemapFileContinueOnError(
|
interp.runRemapFileContinueOnError(
|
||||||
@@ -1004,11 +1026,13 @@ verifyExpectedOutput(
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const failArgs2Dir = writeRemapRegressionFiles("fail/args.2", [
|
const failArgs2Files = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
]);
|
];
|
||||||
|
const failArgs2Dir = writeRemapRegressionFiles("fail/args.2", failArgs2Files);
|
||||||
|
assertRemapRegressionStaging("fail/args.2", failArgs2Files, failArgs2Dir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"fail_args_2_remap_wasm",
|
"fail_args_2_remap_wasm",
|
||||||
interp.runRemapFileContinueOnError(
|
interp.runRemapFileContinueOnError(
|
||||||
@@ -1027,11 +1051,13 @@ verifyExpectedOutput(
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const failBodyNgcDir = writeRemapRegressionFiles("fail/body-ngc", [
|
const failBodyNgcFiles = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
]);
|
];
|
||||||
|
const failBodyNgcDir = writeRemapRegressionFiles("fail/body-ngc", failBodyNgcFiles);
|
||||||
|
assertRemapRegressionStaging("fail/body-ngc", failBodyNgcFiles, failBodyNgcDir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"fail_body_ngc_remap_wasm",
|
"fail_body_ngc_remap_wasm",
|
||||||
interp.runRemapFileContinueOnError(
|
interp.runRemapFileContinueOnError(
|
||||||
@@ -1053,11 +1079,13 @@ verifyExpectedOutput(
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const m30InteractionDir = writeRemapRegressionFiles("m30-interaction", [
|
const m30InteractionFiles = [
|
||||||
"test.ini",
|
"test.ini",
|
||||||
"test.ngc",
|
"test.ngc",
|
||||||
"rm400.ngc",
|
"rm400.ngc",
|
||||||
]);
|
];
|
||||||
|
const m30InteractionDir = writeRemapRegressionFiles("m30-interaction", m30InteractionFiles);
|
||||||
|
assertRemapRegressionStaging("m30-interaction", m30InteractionFiles, m30InteractionDir);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"m30_interaction_remap_wasm",
|
"m30_interaction_remap_wasm",
|
||||||
interp.runRemapFile(
|
interp.runRemapFile(
|
||||||
|
|||||||
Reference in New Issue
Block a user