diff --git a/tests/fixtures/node-force-builtin/function.js b/tests/fixtures/node-force-builtin/function.js new file mode 100644 index 000000000..8dd4f2712 --- /dev/null +++ b/tests/fixtures/node-force-builtin/function.js @@ -0,0 +1,5 @@ +const stream = require('node:stream/web') + +module.exports = () => { + return Boolean(stream.ReadableStream) +} diff --git a/tests/main.js b/tests/main.js index a76b7b233..cfe82ae31 100644 --- a/tests/main.js +++ b/tests/main.js @@ -2250,6 +2250,35 @@ testMany( }, ) +testMany( + 'Handles built-in modules imported with the `node:` prefix', + ['bundler_default', 'bundler_default_nft', 'bundler_nft', 'bundler_esbuild', 'bundler_esbuild_zisi'], + async (options, t) => { + t.plan(3) + const { tmpDir, files } = await zipFixture(t, 'node-force-builtin', { + opts: { config: { '*': { ...options } } }, + }) + + await unzipFiles(files) + + if (semver.satisfies(nodeVersion, '>=16')) { + const func = require(`${tmpDir}/function`) + t.true(func()) + } else { + try { + require(`${tmpDir}/function`) + } catch (error) { + t.is( + error.message, + semver.satisfies(nodeVersion, '>10') + ? 'No such built-in module: node:stream/web' + : "Cannot find module 'node:stream/web'", + ) + } + } + }, +) + testMany( 'Returns a `size` property with the size of each generated archive', ['bundler_default', 'bundler_esbuild', 'bundler_nft'],