Guard g10 directory staging
This commit is contained in:
47
text6.txt
47
text6.txt
@@ -1385,3 +1385,50 @@ wasm-port/tests/host/verify_host_smokes.sh
|
||||
建议先处理 `g10`,因为 fixed manifest 已存在,当前只需把 initial/final aggregate
|
||||
path guard 拆到每个 `writeG10RegressionFiles(...)` 调用附近。继续避免 blocked
|
||||
runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||||
|
||||
三十三、2026-06-13 继续执行记录:g10 directory staging guard
|
||||
|
||||
本批处理 `g10` initial/final aggregate staged path guard,将其拆到每个
|
||||
`writeG10RegressionFiles(...)` 调用附近。
|
||||
|
||||
完成内容:
|
||||
|
||||
- Node 侧新增 `assertG10RegressionStaging(...)`;
|
||||
- Node 侧对每个 g10 fixture 目录的 vendored `.ngc/.tbl` 文件清单与 fixed manifest
|
||||
精确对账;
|
||||
- Node 侧检查 staged path 与 `/work/interp/g10/<name>/...` fixed manifest 一致;
|
||||
- Node 侧移除 `g10` initial/final aggregate staged path guard;
|
||||
- browser 侧新增同名 helper,检查 fixed manifest duplicate-free;
|
||||
- browser 侧检查 staged path 去掉 `/work/browser-interp/g10/<name>/` 前缀后与 fixed
|
||||
manifest 一致;
|
||||
- browser 侧移除 `g10` initial/final aggregate staged path guard,仍不枚举目录;
|
||||
- 仅整理 host/filesystem staging guard,不改变 G10、G92 或 tool table 语义。
|
||||
|
||||
已运行验证:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
结果:全部通过。
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续收敛 earlier direct-file guard。优先候选:
|
||||
|
||||
- `do-while-break`
|
||||
- `oword-bug315`
|
||||
- `oword-bug315-p2`
|
||||
- `exists`
|
||||
- `return-value`
|
||||
|
||||
这些已有 Node/browser coverage 和 fixed `.ngc` manifest,适合逐步复用
|
||||
`assertInterpRegressionFileStaging(...)` 或小型 per-directory helper 替换内联 staged
|
||||
path 对账。继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC
|
||||
语义实现。
|
||||
|
||||
@@ -4755,6 +4755,16 @@
|
||||
return wasmDir;
|
||||
}
|
||||
|
||||
function assertG10RegressionStaging(name, files, wasmDir) {
|
||||
if (files.length === 0 || new Set(files).size !== files.length) {
|
||||
throw new Error(`browser_interp_g10_${name}_fixture_coverage: list drift`);
|
||||
}
|
||||
const g10StagedRelativeFiles = files.map((file) => `${wasmDir}/${file}`.replace(`/work/browser-interp/g10/${name}/`, ""));
|
||||
if (g10StagedRelativeFiles.join(",") !== files.join(",")) {
|
||||
throw new Error(`browser_interp_g10_${name}_staging_manifest: list drift`);
|
||||
}
|
||||
}
|
||||
|
||||
async function runVendorNcFile(interp, filename) {
|
||||
const wasmPath = `/work/browser-nc-files/${filename}`;
|
||||
await writeFetchedTextFile(
|
||||
@@ -8439,6 +8449,7 @@
|
||||
"test.ngc",
|
||||
"test.tbl",
|
||||
]);
|
||||
assertG10RegressionStaging("g10-l1-l10", ["test.ngc", "test.tbl"], g10L1L10Dir);
|
||||
verifyExpectedOutput(
|
||||
"browser_interp_g10_l1_l10",
|
||||
interp.runFileWithIni(`${g10L1L10Dir}/test.ngc`, `${g10L1L10Dir}/test.ini`),
|
||||
@@ -8461,6 +8472,7 @@
|
||||
"test.ngc",
|
||||
"test.tbl",
|
||||
]);
|
||||
assertG10RegressionStaging("g10-l11", ["test.ngc", "test.tbl"], g10L11Dir);
|
||||
verifyExpectedOutput(
|
||||
"browser_interp_g10_l11",
|
||||
interp.runFileWithIni(`${g10L11Dir}/test.ngc`, `${g10L11Dir}/test.ini`),
|
||||
@@ -8482,14 +8494,7 @@
|
||||
"g10-l2-while-active",
|
||||
["test.ngc"],
|
||||
);
|
||||
const g10InitialStagedNgcFiles = [
|
||||
`${g10L1L10Dir}/test.ngc`,
|
||||
`${g10L11Dir}/test.ngc`,
|
||||
`${g10L2WhileActiveDir}/test.ngc`,
|
||||
].map((path) => path.replace("/work/browser-interp/g10/", ""));
|
||||
if (g10InitialStagedNgcFiles.join(",") !== g10RegressionFiles.slice(0, 3).join(",")) {
|
||||
throw new Error("browser_interp_g10_initial_staging_manifest: list drift");
|
||||
}
|
||||
assertG10RegressionStaging("g10-l2-while-active", ["test.ngc"], g10L2WhileActiveDir);
|
||||
verifyExpectedOutput(
|
||||
"browser_interp_g10_l2_while_active",
|
||||
interp.runFile(`${g10L2WhileActiveDir}/test.ngc`),
|
||||
@@ -8512,6 +8517,7 @@
|
||||
"g10-l20-while-active",
|
||||
["test.ngc"],
|
||||
);
|
||||
assertG10RegressionStaging("g10-l20-while-active", ["test.ngc"], g10L20WhileActiveDir);
|
||||
verifyExpectedOutput(
|
||||
"browser_interp_g10_l20_while_active",
|
||||
interp.runFile(`${g10L20WhileActiveDir}/test.ngc`),
|
||||
@@ -8532,13 +8538,7 @@
|
||||
"test.ngc",
|
||||
"test.tbl",
|
||||
]);
|
||||
const g10FinalStagedNgcFiles = [
|
||||
`${g10L20WhileActiveDir}/test.ngc`,
|
||||
`${g10WithG92Dir}/test.ngc`,
|
||||
].map((path) => path.replace("/work/browser-interp/g10/", ""));
|
||||
if (g10FinalStagedNgcFiles.join(",") !== g10RegressionFiles.slice(3, 5).join(",")) {
|
||||
throw new Error("browser_interp_g10_final_staging_manifest: list drift");
|
||||
}
|
||||
assertG10RegressionStaging("g10-with-g92", ["test.ngc", "test.tbl"], g10WithG92Dir);
|
||||
verifyExpectedOutput(
|
||||
"browser_interp_g10_with_g92",
|
||||
interp.runFileWithIni(`${g10WithG92Dir}/test.ngc`, `${g10WithG92Dir}/test.ini`),
|
||||
|
||||
@@ -405,6 +405,22 @@ function writeG10RegressionFiles(name, files) {
|
||||
return wasmDir;
|
||||
}
|
||||
|
||||
function assertG10RegressionStaging(name, files, wasmDir) {
|
||||
const sourceDir = resolve(rootDir, "vendor/linuxcnc/tests/interp/g10", name);
|
||||
assert.deepEqual(
|
||||
readdirSync(sourceDir)
|
||||
.filter((filename) => filename.endsWith(".ngc") || filename.endsWith(".tbl"))
|
||||
.sort(),
|
||||
[...files].sort(),
|
||||
`interp g10 ${name} fixture coverage drift`,
|
||||
);
|
||||
assert.deepEqual(
|
||||
files.map((file) => `${wasmDir}/${file}`),
|
||||
files.map((file) => `/work/interp/g10/${name}/${file}`),
|
||||
`interp g10 ${name} staging manifest drift`,
|
||||
);
|
||||
}
|
||||
|
||||
function writeUserMCodeFixture(name, code) {
|
||||
const wasmDir = `/work/user-m/${name}`;
|
||||
const iniPath = `${wasmDir}/test.ini`;
|
||||
@@ -3396,6 +3412,7 @@ assert.deepEqual(
|
||||
);
|
||||
|
||||
const g10L1L10Dir = writeG10RegressionFiles("g10-l1-l10", ["test.ngc", "test.tbl"]);
|
||||
assertG10RegressionStaging("g10-l1-l10", ["test.ngc", "test.tbl"], g10L1L10Dir);
|
||||
verifyExpectedOutput(
|
||||
"interp_g10_l1_l10_wasm",
|
||||
interp.runFileWithIni(`${g10L1L10Dir}/test.ngc`, `${g10L1L10Dir}/test.ini`),
|
||||
@@ -3415,6 +3432,7 @@ verifyExpectedOutput(
|
||||
);
|
||||
|
||||
const g10L11Dir = writeG10RegressionFiles("g10-l11", ["test.ngc", "test.tbl"]);
|
||||
assertG10RegressionStaging("g10-l11", ["test.ngc", "test.tbl"], g10L11Dir);
|
||||
verifyExpectedOutput(
|
||||
"interp_g10_l11_wasm",
|
||||
interp.runFileWithIni(`${g10L11Dir}/test.ngc`, `${g10L11Dir}/test.ini`),
|
||||
@@ -3432,17 +3450,7 @@ verifyExpectedOutput(
|
||||
);
|
||||
|
||||
const g10L2WhileActiveDir = writeG10RegressionFiles("g10-l2-while-active", ["test.ngc"]);
|
||||
assert.deepEqual(
|
||||
[
|
||||
`${g10L1L10Dir}/test.ngc`,
|
||||
`${g10L11Dir}/test.ngc`,
|
||||
`${g10L2WhileActiveDir}/test.ngc`,
|
||||
],
|
||||
g10RegressionFiles
|
||||
.slice(0, 3)
|
||||
.map((file) => `/work/interp/g10/${file}`),
|
||||
"interp g10 initial staging manifest drift",
|
||||
);
|
||||
assertG10RegressionStaging("g10-l2-while-active", ["test.ngc"], g10L2WhileActiveDir);
|
||||
verifyExpectedOutput(
|
||||
"interp_g10_l2_while_active_wasm",
|
||||
interp.runFile(`${g10L2WhileActiveDir}/test.ngc`),
|
||||
@@ -3461,6 +3469,7 @@ verifyExpectedOutput(
|
||||
);
|
||||
|
||||
const g10L20WhileActiveDir = writeG10RegressionFiles("g10-l20-while-active", ["test.ngc"]);
|
||||
assertG10RegressionStaging("g10-l20-while-active", ["test.ngc"], g10L20WhileActiveDir);
|
||||
verifyExpectedOutput(
|
||||
"interp_g10_l20_while_active_wasm",
|
||||
interp.runFile(`${g10L20WhileActiveDir}/test.ngc`),
|
||||
@@ -3478,16 +3487,7 @@ verifyExpectedOutput(
|
||||
);
|
||||
|
||||
const g10WithG92Dir = writeG10RegressionFiles("g10-with-g92", ["test.ngc", "test.tbl"]);
|
||||
assert.deepEqual(
|
||||
[
|
||||
`${g10L20WhileActiveDir}/test.ngc`,
|
||||
`${g10WithG92Dir}/test.ngc`,
|
||||
],
|
||||
g10RegressionFiles
|
||||
.slice(3, 5)
|
||||
.map((file) => `/work/interp/g10/${file}`),
|
||||
"interp g10 final staging manifest drift",
|
||||
);
|
||||
assertG10RegressionStaging("g10-with-g92", ["test.ngc", "test.tbl"], g10WithG92Dir);
|
||||
verifyExpectedOutput(
|
||||
"interp_g10_with_g92_wasm",
|
||||
interp.runFileWithIni(`${g10WithG92Dir}/test.ngc`, `${g10WithG92Dir}/test.ini`),
|
||||
|
||||
Reference in New Issue
Block a user