fix(javascript): preserve exact native-addon extension dispatch (#10083)

fix(javascript): preserve native addon extension spelling
This commit is contained in:
morluto authored and GitHub committed 2026-11-11 18:16:43 +08:00
1 parent 0ece957589
commit f7d564f436
3 files changed
+89 -4

No files matched your search

@@ -177,3 +177,33 @@ it("does not prove native bindings through a replaced aliased loader member", ()
);
expect(analysis.electron.native_addon_bindings).toEqual([]);
});
it.each(
["node", "NODE", "Node"].flatMap((extension) =>
["require", "import", "commonjs-export", "esm-export"].map((kind) => ({
extension,
kind,
})),
),
)(
"preserves native extension dispatch for $kind with .$extension",
({ extension, kind }) => {
const specifier = `./AddOn-É.${extension}`;
const source =
kind === "require"
? `const addon = require(${JSON.stringify(specifier)});`
: kind === "import"
? `import addon from ${JSON.stringify(specifier)};`
: kind === "commonjs-export"
? `module.exports = require(${JSON.stringify(specifier)});`
: `export { default } from ${JSON.stringify(specifier)};`;
const analysis =
kind === "require" || kind === "commonjs-export"
? analyzeCommonJsStaticFixture(source)
: analyzeJavaScriptStaticSource(source);
expect(analysis.parse_error_count).toBe(0);
expect(analysis.electron.native_addon_bindings).toEqual(
extension === "node" ? [expect.objectContaining({ specifier })] : [],
);
},
);