Guard final special remap staging paths
This commit is contained in:
50
text6.txt
50
text6.txt
@@ -2119,3 +2119,53 @@ remap aggregate helper 仅剩两个特殊 case:
|
|||||||
staged path guard,建议留到最后单独处理。
|
staged path guard,建议留到最后单独处理。
|
||||||
|
|
||||||
继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||||||
|
|
||||||
|
四十八、2026-06-13 继续执行记录:final special remap per-file staging helper guard
|
||||||
|
|
||||||
|
本批处理剩余两个特殊 remap staged path guard:
|
||||||
|
|
||||||
|
- `nested-remaps-oword`
|
||||||
|
- `remap-io`
|
||||||
|
|
||||||
|
完成内容:
|
||||||
|
|
||||||
|
- Node 侧将 `nested-remaps-oword` 从 `assertRemapRegressionStaging(...)` 切换为
|
||||||
|
`assertRemapRegressionCoverage(...)` 加
|
||||||
|
`assertRemapRegressionFilesStaging(...)`;
|
||||||
|
- Node 侧继续保留 expected-unstaged `testsub.ngc` 的 manifest coverage 与 overlap
|
||||||
|
guard;
|
||||||
|
- browser 侧新增 `assertRemapRegressionUnstagedOverlap(...)`,只检查 fixed list 与
|
||||||
|
expected-unstaged list 不重叠,不枚举目录;
|
||||||
|
- browser 侧将 `nested-remaps-oword` 切换为 expected-unstaged overlap guard 加
|
||||||
|
per-file staging helper;
|
||||||
|
- Node/browser 侧将 `remap-io` vendored file list 切换为 per-file staging helper;
|
||||||
|
- `remap-io` 运行时生成的 `simpockets.tbl` 继续保留单独 staged path guard;
|
||||||
|
- 删除 Node/browser 侧已无调用的 `assertRemapRegressionStaging(...)` aggregate helper;
|
||||||
|
- browser 侧仍不枚举目录;
|
||||||
|
- 仅整理 host/filesystem staging guard,不改变 remap execution、nested O-word、
|
||||||
|
remap I/O、generated tool table 或 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
|
||||||
|
```
|
||||||
|
|
||||||
|
结果:全部通过。
|
||||||
|
|
||||||
|
下一步建议:
|
||||||
|
|
||||||
|
remap/ccomp/g10/ordinary interp aggregate staged path guard 已收敛完成。下一批建议做一次
|
||||||
|
remaining staged path guard inventory,重点确认:
|
||||||
|
|
||||||
|
- 是否还有 `replace(.../work/browser-...)` 形式的 inline staged path 对账可以改为
|
||||||
|
专用 helper;
|
||||||
|
- 是否还有 generated-file staged path guard 需要单独命名,例如 `simpockets.tbl`;
|
||||||
|
- 是否有 helper 已无调用,可以删除;
|
||||||
|
- 不推进 blocked runtime promotion,不扩大 browser full inventory,不新增 JS CNC 语义。
|
||||||
|
|||||||
@@ -4647,19 +4647,6 @@
|
|||||||
return wasmDir;
|
return wasmDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
function assertRemapRegressionStaging(name, files, wasmDir, expectedUnstagedFiles = []) {
|
|
||||||
if (files.length === 0 || new Set(files).size !== files.length) {
|
|
||||||
throw new Error(`browser_remap_${name}_fixture_coverage: list drift`);
|
|
||||||
}
|
|
||||||
if (expectedUnstagedFiles.some((file) => files.includes(file))) {
|
|
||||||
throw new Error(`browser_remap_${name}_unstaged_fixture_overlap: 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`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function assertRemapRegressionFilesStaging(name, files, wasmDir) {
|
function assertRemapRegressionFilesStaging(name, files, wasmDir) {
|
||||||
if (files.length === 0 || new Set(files).size !== files.length) {
|
if (files.length === 0 || new Set(files).size !== files.length) {
|
||||||
throw new Error(`browser_remap_${name}_fixture_coverage: list drift`);
|
throw new Error(`browser_remap_${name}_fixture_coverage: list drift`);
|
||||||
@@ -4671,6 +4658,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function assertRemapRegressionUnstagedOverlap(name, files, expectedUnstagedFiles) {
|
||||||
|
if (expectedUnstagedFiles.some((file) => files.includes(file))) {
|
||||||
|
throw new Error(`browser_remap_${name}_unstaged_fixture_overlap: 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}`;
|
||||||
@@ -6201,11 +6194,15 @@
|
|||||||
"nested-remaps-oword",
|
"nested-remaps-oword",
|
||||||
nestedRemapsOwordFiles,
|
nestedRemapsOwordFiles,
|
||||||
);
|
);
|
||||||
assertRemapRegressionStaging(
|
assertRemapRegressionUnstagedOverlap(
|
||||||
|
"nested-remaps-oword",
|
||||||
|
nestedRemapsOwordFiles,
|
||||||
|
nestedRemapsOwordUnstagedFiles,
|
||||||
|
);
|
||||||
|
assertRemapRegressionFilesStaging(
|
||||||
"nested-remaps-oword",
|
"nested-remaps-oword",
|
||||||
nestedRemapsOwordFiles,
|
nestedRemapsOwordFiles,
|
||||||
nestedRemapsOwordDir,
|
nestedRemapsOwordDir,
|
||||||
nestedRemapsOwordUnstagedFiles,
|
|
||||||
);
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"browser_nested_remaps_oword_remap",
|
"browser_nested_remaps_oword_remap",
|
||||||
@@ -6333,7 +6330,7 @@
|
|||||||
"io_output_m68.ngc",
|
"io_output_m68.ngc",
|
||||||
];
|
];
|
||||||
const remapIoDir = await writeRemapRegressionFiles(interp, "remap-io", remapIoFiles);
|
const remapIoDir = await writeRemapRegressionFiles(interp, "remap-io", remapIoFiles);
|
||||||
assertRemapRegressionStaging("remap-io", remapIoFiles, remapIoDir);
|
assertRemapRegressionFilesStaging("remap-io", remapIoFiles, remapIoDir);
|
||||||
const remapIoGeneratedToolTablePath = `${remapIoDir}/simpockets.tbl`;
|
const remapIoGeneratedToolTablePath = `${remapIoDir}/simpockets.tbl`;
|
||||||
if (remapIoGeneratedToolTablePath !== "/work/browser-remap/remap-io/simpockets.tbl") {
|
if (remapIoGeneratedToolTablePath !== "/work/browser-remap/remap-io/simpockets.tbl") {
|
||||||
throw new Error("browser_remap_remap_io_generated_tool_table_staging: path drift");
|
throw new Error("browser_remap_remap_io_generated_tool_table_staging: path drift");
|
||||||
|
|||||||
@@ -272,15 +272,6 @@ function assertRemapRegressionFilesStaging(name, files, wasmDir) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function assertRemapRegressionStaging(name, files, wasmDir, expectedUnstagedFiles = []) {
|
|
||||||
assertRemapRegressionCoverage(name, files, expectedUnstagedFiles);
|
|
||||||
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}`;
|
||||||
@@ -1212,11 +1203,15 @@ const nestedRemapsOwordDir = writeRemapRegressionFiles(
|
|||||||
"nested-remaps-oword",
|
"nested-remaps-oword",
|
||||||
nestedRemapsOwordFiles,
|
nestedRemapsOwordFiles,
|
||||||
);
|
);
|
||||||
assertRemapRegressionStaging(
|
assertRemapRegressionCoverage(
|
||||||
|
"nested-remaps-oword",
|
||||||
|
nestedRemapsOwordFiles,
|
||||||
|
nestedRemapsOwordUnstagedFiles,
|
||||||
|
);
|
||||||
|
assertRemapRegressionFilesStaging(
|
||||||
"nested-remaps-oword",
|
"nested-remaps-oword",
|
||||||
nestedRemapsOwordFiles,
|
nestedRemapsOwordFiles,
|
||||||
nestedRemapsOwordDir,
|
nestedRemapsOwordDir,
|
||||||
nestedRemapsOwordUnstagedFiles,
|
|
||||||
);
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"nested_remaps_oword_remap_wasm",
|
"nested_remaps_oword_remap_wasm",
|
||||||
@@ -1346,7 +1341,8 @@ const remapIoFiles = [
|
|||||||
"io_output_m68.ngc",
|
"io_output_m68.ngc",
|
||||||
];
|
];
|
||||||
const remapIoDir = writeRemapRegressionFiles("remap-io", remapIoFiles);
|
const remapIoDir = writeRemapRegressionFiles("remap-io", remapIoFiles);
|
||||||
assertRemapRegressionStaging("remap-io", remapIoFiles, remapIoDir);
|
assertRemapRegressionCoverage("remap-io", remapIoFiles);
|
||||||
|
assertRemapRegressionFilesStaging("remap-io", remapIoFiles, remapIoDir);
|
||||||
const remapIoGeneratedToolTablePath = `${remapIoDir}/simpockets.tbl`;
|
const remapIoGeneratedToolTablePath = `${remapIoDir}/simpockets.tbl`;
|
||||||
assert.equal(
|
assert.equal(
|
||||||
remapIoGeneratedToolTablePath,
|
remapIoGeneratedToolTablePath,
|
||||||
|
|||||||
Reference in New Issue
Block a user