summaryrefslogtreecommitdiff
path: root/node_modules/@esbuild-plugins/node-globals-polyfill/src/index.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@esbuild-plugins/node-globals-polyfill/src/index.test.ts')
-rw-r--r--node_modules/@esbuild-plugins/node-globals-polyfill/src/index.test.ts155
1 files changed, 155 insertions, 0 deletions
diff --git a/node_modules/@esbuild-plugins/node-globals-polyfill/src/index.test.ts b/node_modules/@esbuild-plugins/node-globals-polyfill/src/index.test.ts
new file mode 100644
index 0000000..62e530e
--- /dev/null
+++ b/node_modules/@esbuild-plugins/node-globals-polyfill/src/index.test.ts
@@ -0,0 +1,155 @@
+import { build } from 'esbuild'
+import { writeFiles } from 'test-support'
+import { NodeGlobalsPolyfillPlugin } from '.'
+
+require('debug').enable(require('../package.json').name)
+
+test('process works', async () => {
+ const {
+ unlink,
+ paths: [ENTRY],
+ } = await writeFiles({
+ 'entry.ts': `process.version`,
+ })
+ const res = await build({
+ entryPoints: [ENTRY],
+ write: false,
+ format: 'esm',
+ target: 'es2017',
+ bundle: true,
+ inject: [require.resolve('../process')],
+ })
+ const output = res.outputFiles[0].text
+ // console.log(output)
+ eval(output)
+ unlink()
+})
+
+test('process is tree shaken', async () => {
+ const {
+ unlink,
+ paths: [ENTRY],
+ } = await writeFiles({
+ 'entry.ts': `console.log('hei')`,
+ })
+ const res = await build({
+ entryPoints: [ENTRY],
+ write: false,
+ format: 'esm',
+ target: 'es2017',
+ bundle: true,
+ inject: [require.resolve('../process')],
+ })
+ const output = res.outputFiles[0].text
+ expect(output).not.toContain('process')
+ unlink()
+})
+
+// TODO esbuild cannot use virtual modules for inject: https://github.com/evanw/esbuild/issues/2762
+test('process env vars are replaced with ones from define', async () => {
+ const {
+ unlink,
+ paths: [ENTRY],
+ } = await writeFiles({
+ 'entry.ts': `if (process.env.VAR !== 'hello') { throw new Error('process.env.VAR not right: ' + process.env.VAR) }`,
+ })
+ const res = await build({
+ entryPoints: [ENTRY],
+ write: false,
+ format: 'esm',
+ target: 'es2017',
+ bundle: true,
+ define: {
+ 'process.env.VAR': '"hello"',
+ },
+ plugins: [NodeGlobalsPolyfillPlugin({})],
+ })
+ const output = res.outputFiles[0].text
+ eval(output)
+ unlink()
+})
+
+test('Buffer works', async () => {
+ const {
+ unlink,
+ paths: [ENTRY],
+ } = await writeFiles({
+ 'entry.ts': `console.log(Buffer.from('xxx').toString())`,
+ })
+ const res = await build({
+ entryPoints: [ENTRY],
+ write: false,
+ format: 'esm',
+ target: 'es2017',
+ bundle: true,
+ inject: [require.resolve('../Buffer')],
+ })
+ const output = res.outputFiles[0].text
+ // console.log(output)
+ eval(output)
+ unlink()
+})
+
+test('Buffer is tree shaken', async () => {
+ const {
+ unlink,
+ paths: [ENTRY],
+ } = await writeFiles({
+ 'entry.ts': `console.log('hei')`,
+ })
+ const res = await build({
+ entryPoints: [ENTRY],
+ write: false,
+ format: 'esm',
+ target: 'es2017',
+ bundle: true,
+ inject: [require.resolve('../Buffer')],
+ })
+ const output = res.outputFiles[0].text
+ expect(output).not.toContain('Buffer')
+ unlink()
+})
+
+test('Buffer works using plugin', async () => {
+ const {
+ unlink,
+ paths: [ENTRY],
+ } = await writeFiles({
+ 'entry.ts': `
+ let buf = new Buffer(256);
+ let len = buf.write("Simply Easy Learning");
+ console.log("Octets written : "+ len);`,
+ })
+ const res = await build({
+ entryPoints: [ENTRY],
+ write: false,
+ format: 'esm',
+ target: 'es2017',
+ bundle: true,
+ plugins: [NodeGlobalsPolyfillPlugin({ buffer: true })],
+ })
+ const output = res.outputFiles[0].text
+ // console.log(output)
+ eval(output)
+ unlink()
+})
+test('process works using plugin', async () => {
+ const {
+ unlink,
+ paths: [ENTRY],
+ } = await writeFiles({
+ 'entry.ts': `console.log(process.cwd())`,
+ })
+ const res = await build({
+ entryPoints: [ENTRY],
+ write: false,
+ format: 'esm',
+ target: 'es2017',
+ bundle: true,
+ plugins: [NodeGlobalsPolyfillPlugin({ process: true })],
+ })
+ const output = res.outputFiles[0].text
+ // console.log(output)
+ eval(output)
+ unlink()
+})