diff --git a/tests/fixtures/node-module-symlinks/function.js b/tests/fixtures/node-module-symlinks/function.js new file mode 100644 index 000000000..3a1374753 --- /dev/null +++ b/tests/fixtures/node-module-symlinks/function.js @@ -0,0 +1,3 @@ +const isEven = require('is-even') + +module.exports = (number) => (isEven(number) ? `${number} is even` : `${number} is odd`) diff --git a/tests/fixtures/node-module-symlinks/node_modules/is-even b/tests/fixtures/node-module-symlinks/node_modules/is-even new file mode 120000 index 000000000..e02e86e4e --- /dev/null +++ b/tests/fixtures/node-module-symlinks/node_modules/is-even @@ -0,0 +1 @@ +../../node_modules/.pnpm/is-even@1.0.0/node_modules/is-even \ No newline at end of file diff --git a/tests/fixtures/node-module-symlinks/package.json b/tests/fixtures/node-module-symlinks/package.json new file mode 100644 index 000000000..a9bbc2d2b --- /dev/null +++ b/tests/fixtures/node-module-symlinks/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "is-even": "^1.0.0" + } +} diff --git a/tests/fixtures/node_modules/.pnpm/is-even@1.0.0/node_modules/is-even/index.js b/tests/fixtures/node_modules/.pnpm/is-even@1.0.0/node_modules/is-even/index.js new file mode 100644 index 000000000..d53967411 --- /dev/null +++ b/tests/fixtures/node_modules/.pnpm/is-even@1.0.0/node_modules/is-even/index.js @@ -0,0 +1,2 @@ +const isOdd = require('is-odd') +module.exports = (number) => !isOdd(number) diff --git a/tests/fixtures/node_modules/.pnpm/is-even@1.0.0/node_modules/is-even/package.json b/tests/fixtures/node_modules/.pnpm/is-even@1.0.0/node_modules/is-even/package.json new file mode 100644 index 000000000..0476882fb --- /dev/null +++ b/tests/fixtures/node_modules/.pnpm/is-even@1.0.0/node_modules/is-even/package.json @@ -0,0 +1,7 @@ +{ + "name": "is-even", + "main": "index.js", + "dependencies": { + "is-odd": "^1.0.0" + } +} diff --git a/tests/fixtures/node_modules/.pnpm/is-even@1.0.0/node_modules/is-odd b/tests/fixtures/node_modules/.pnpm/is-even@1.0.0/node_modules/is-odd new file mode 120000 index 000000000..be987a530 --- /dev/null +++ b/tests/fixtures/node_modules/.pnpm/is-even@1.0.0/node_modules/is-odd @@ -0,0 +1 @@ +../../is-odd@1.0.0/node_modules/is-odd \ No newline at end of file diff --git a/tests/fixtures/node_modules/.pnpm/is-odd@1.0.0/node_modules/is-odd/index.js b/tests/fixtures/node_modules/.pnpm/is-odd@1.0.0/node_modules/is-odd/index.js new file mode 100644 index 000000000..d93533856 --- /dev/null +++ b/tests/fixtures/node_modules/.pnpm/is-odd@1.0.0/node_modules/is-odd/index.js @@ -0,0 +1 @@ +module.exports = (number) => number % 2 === 1 diff --git a/tests/fixtures/node_modules/.pnpm/is-odd@1.0.0/node_modules/is-odd/package.json b/tests/fixtures/node_modules/.pnpm/is-odd@1.0.0/node_modules/is-odd/package.json new file mode 100644 index 000000000..a1098c13a --- /dev/null +++ b/tests/fixtures/node_modules/.pnpm/is-odd@1.0.0/node_modules/is-odd/package.json @@ -0,0 +1,4 @@ +{ + "name": "is-odd", + "main": "index.js" +} \ No newline at end of file diff --git a/tests/main.js b/tests/main.js index 779bf108d..5d6d87a3f 100644 --- a/tests/main.js +++ b/tests/main.js @@ -1976,3 +1976,14 @@ test('Creates a manifest file with the list of created functions if the `manifes t.is(fn.path, file.path) }) }) + +testBundlers('Correctly follows node_modules via symlink', [ESBUILD, ESBUILD_ZISI], async (bundler, t) => { + const { tmpDir } = await zipNode(t, 'node-module-symlinks', { + opts: { config: { '*': { nodeBundler: bundler } } }, + }) + + // eslint-disable-next-line import/no-dynamic-require, node/global-require + const isEven = require(`${tmpDir}/function`) + // eslint-disable-next-line no-magic-numbers + t.is(isEven(10), '10 is even') +})