From db837d0ad35f15631a7f26bf613a1fc0e36b60fd Mon Sep 17 00:00:00 2001 From: kravetsone <57632712+kravetsone@users.noreply.github.com> Date: Sun, 5 Jan 2025 14:15:52 +0300 Subject: [PATCH] chore: add fixture and test for https://github.com/privatenumber/pkgroll/issues/104 --- tests/fixtures.ts | 18 ++++++++++++++++++ tests/specs/builds/output-commonjs.ts | 22 ++++++++++++++++++++++ tests/specs/builds/output-module.ts | 22 ++++++++++++++++++++++ 3 files changed, 62 insertions(+) diff --git a/tests/fixtures.ts b/tests/fixtures.ts index cef610a..5652e02 100644 --- a/tests/fixtures.ts +++ b/tests/fixtures.ts @@ -257,3 +257,21 @@ export const fixtureDynamicImports: FileTree = { }, }, }; + +// https://github.com/privatenumber/pkgroll/issues/104 +export const fixtureDynamicImportsError: FileTree = { + 'package.json': createPackageJson({ + main: './dist/dynamic-imports.js', + }), + src: { + 'dynamic-imports.js': outdent` + function importModule(path) { + // who knows what will be imported here? + return import(path); + } + + importModule('./should-fail.js'); + `, + 'should-fail.js': 'console.log(123)', + }, +}; diff --git a/tests/specs/builds/output-commonjs.ts b/tests/specs/builds/output-commonjs.ts index b72954f..0dcd8f7 100644 --- a/tests/specs/builds/output-commonjs.ts +++ b/tests/specs/builds/output-commonjs.ts @@ -4,6 +4,7 @@ import { createFixture } from 'fs-fixture'; import { pkgroll } from '../../utils.js'; import { packageFixture, createPackageJson, createTsconfigJson, fixtureDynamicImports, + fixtureDynamicImportsError, } from '../../fixtures.js'; export default testSuite(({ describe }, nodePath: string) => { @@ -204,5 +205,26 @@ export default testSuite(({ describe }, nodePath: string) => { expect(files[1]).toMatch(/^bbb-/); expect(files[2]).toMatch(/^ccc-/); }); + + // https://github.com/privatenumber/pkgroll/issues/104 + test('dynamic imports warning', async () => { + await using fixture = await createFixture({ + ...fixtureDynamicImportsError, + 'package.json': createPackageJson({ + exports: './dist/dynamic-imports.cjs', + }), + }); + + const pkgrollProcess = await pkgroll([], { + cwd: fixture.path, + nodePath, + }); + + expect(pkgrollProcess.exitCode).toBe(0); + expect(pkgrollProcess.stderr).toContain('[plugin rollup-plugin-dynamic-import-variables]'); + + const content = await fixture.readFile('dist/dynamic-imports.cjs', 'utf8'); + expect(content).toMatch('import('); + }); }); }); diff --git a/tests/specs/builds/output-module.ts b/tests/specs/builds/output-module.ts index 428b4a1..fa32870 100644 --- a/tests/specs/builds/output-module.ts +++ b/tests/specs/builds/output-module.ts @@ -4,6 +4,7 @@ import { createFixture } from 'fs-fixture'; import { pkgroll } from '../../utils.js'; import { packageFixture, createPackageJson, createTsconfigJson, fixtureDynamicImports, + fixtureDynamicImportsError, } from '../../fixtures.js'; export default testSuite(({ describe }, nodePath: string) => { @@ -272,5 +273,26 @@ export default testSuite(({ describe }, nodePath: string) => { expect(files[1]).toMatch(/^bbb-/); expect(files[2]).toMatch(/^ccc-/); }); + + // https://github.com/privatenumber/pkgroll/issues/104 + test('dynamic imports warning', async () => { + await using fixture = await createFixture({ + ...fixtureDynamicImportsError, + 'package.json': createPackageJson({ + exports: './dist/dynamic-imports.mjs', + }), + }); + + const pkgrollProcess = await pkgroll([], { + cwd: fixture.path, + nodePath, + }); + + expect(pkgrollProcess.exitCode).toBe(0); + expect(pkgrollProcess.stderr).toContain('[plugin rollup-plugin-dynamic-import-variables]'); + + const content = await fixture.readFile('dist/dynamic-imports.mjs', 'utf8'); + expect(content).toMatch('import('); + }); }); });