From 2f212d1386051dfb690532f03414ff34e2381ec1 Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Mon, 4 Jul 2022 16:39:33 -0700 Subject: [resolver] Add a test for self-referencing package.json exports --- test/bun.js/resolve.test.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'test/bun.js/resolve.test.js') diff --git a/test/bun.js/resolve.test.js b/test/bun.js/resolve.test.js index 56162de4f..4f1e3935b 100644 --- a/test/bun.js/resolve.test.js +++ b/test/bun.js/resolve.test.js @@ -71,6 +71,42 @@ it("Bun.resolveSync", () => { ); }); +it("self-referencing imports works", async () => { + await writePackageJSONExportsFixture(); + + const baz = await import.meta.resolve("package-json-exports/baz"); + const namespace = await import.meta.resolve( + "package-json-exports/references-baz" + ); + Loader.registry.delete(baz); + Loader.registry.delete(namespace); + var a = await import(baz); + var b = await import(namespace); + expect(a.bar).toBe(1); + expect(b.bar).toBe(1); + + Loader.registry.delete(baz); + Loader.registry.delete(namespace); + var a = await import("package-json-exports/baz"); + var b = await import("package-json-exports/references-baz"); + expect(a.bar).toBe(1); + expect(b.bar).toBe(1); + + Loader.registry.delete(baz); + Loader.registry.delete(namespace); + var a = import.meta.require("package-json-exports/baz"); + var b = import.meta.require("package-json-exports/references-baz"); + expect(a.bar).toBe(1); + expect(b.bar).toBe(1); + + Loader.registry.delete(baz); + Loader.registry.delete(namespace); + var a = import.meta.require(baz); + var b = import.meta.require(namespace); + expect(a.bar).toBe(1); + expect(b.bar).toBe(1); +}); + function writePackageJSONExportsFixture() { try { mkdirSync( @@ -84,6 +120,13 @@ function writePackageJSONExportsFixture() { join(import.meta.dir, "./node_modules/package-json-exports/foo/bar.js"), "export const bar = 1;" ); + writeFileSync( + join( + import.meta.dir, + "./node_modules/package-json-exports/foo/references-baz.js" + ), + "export {bar} from 'package-json-exports/baz';" + ); writeFileSync( join(import.meta.dir, "./node_modules/package-json-exports/package.json"), JSON.stringify( @@ -91,6 +134,7 @@ function writePackageJSONExportsFixture() { name: "package-json-exports", exports: { "./baz": "./foo/bar.js", + "./references-baz": "./foo/references-baz.js", }, }, null, -- cgit v1.2.3