Files
Recordly/electron/mainCjsNormalize.test.mjs
T

47 lines
1.6 KiB
JavaScript

import { describe, expect, it } from "vitest";
import {
findElectronMainCjsEsmSyntax,
normalizeElectronMainCjsSource,
} from "../scripts/normalize-electron-main-cjs.mjs";
describe("Electron main CJS normalizer", () => {
it("converts Rollup named export blocks to CommonJS assignments", () => {
const source = [
'const MAIN_DIST = "dist-electron";',
'const RENDERER_DIST = "dist";',
"const VITE_DEV_SERVER_URL = process.env.VITE_DEV_SERVER_URL;",
"export {",
" MAIN_DIST,",
" RENDERER_DIST,",
" VITE_DEV_SERVER_URL",
"};",
].join("\n");
const result = normalizeElectronMainCjsSource(source);
expect(result.changed).toBe(true);
expect(result.source).toContain("exports.MAIN_DIST = MAIN_DIST;");
expect(result.source).toContain("exports.RENDERER_DIST = RENDERER_DIST;");
expect(result.source).toContain("exports.VITE_DEV_SERVER_URL = VITE_DEV_SERVER_URL;");
expect(findElectronMainCjsEsmSyntax(result.source)).toEqual([]);
});
it("converts single-line aliased named exports to CommonJS assignments", () => {
const source = "export { VITE_DEV_SERVER_URL as devServerUrl };";
const result = normalizeElectronMainCjsSource(source);
expect(result.changed).toBe(true);
expect(result.source).toBe("exports.devServerUrl = VITE_DEV_SERVER_URL;");
expect(findElectronMainCjsEsmSyntax(result.source)).toEqual([]);
});
it("reports unsupported ESM export syntax that cannot be normalized safely", () => {
const source = "export default MAIN_DIST;";
expect(findElectronMainCjsEsmSyntax(source)).toEqual([
{ line: 1, text: "export default MAIN_DIST;" },
]);
});
});