Skip to content

Commit

Permalink
test: support node:test in node 18 (#62)
Browse files Browse the repository at this point in the history
  • Loading branch information
privatenumber committed Jul 12, 2022
1 parent c2eed03 commit 019fbf5
Show file tree
Hide file tree
Showing 21 changed files with 878 additions and 412 deletions.
6 changes: 3 additions & 3 deletions package.json
Expand Up @@ -36,9 +36,9 @@
"prepublishOnly": "npm test"
},
"dependencies": {
"@esbuild-kit/cjs-loader": "^2.3.0",
"@esbuild-kit/core-utils": "^2.0.2",
"@esbuild-kit/esm-loader": "^2.4.0"
"@esbuild-kit/cjs-loader": "^2.3.1",
"@esbuild-kit/core-utils": "^2.1.0",
"@esbuild-kit/esm-loader": "^2.4.1"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
Expand Down
28 changes: 14 additions & 14 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

73 changes: 53 additions & 20 deletions tests/fixtures/lib/cjs-ext-cjs/index.cjs
@@ -1,23 +1,56 @@
const fs = require('node:fs');

console.log(
'loaded cjs-ext-cjs/index.cjs',
JSON.stringify({
nodePrefix: Boolean(fs),
hasDynamicImport: Boolean(import('fs')),
dirname: typeof __dirname === 'string',
...(() => {
let nameInError;
try {
nameInError();
} catch (error) {
return {
nameInError: error.message.includes('nameInError'),
sourceMap: error.stack.includes(':12:5'),
};
}
})(),
}),
async function test(description, testFunction) {
try {
const result = await testFunction();
if (!result) { throw result; }
console.log(`✔ ${description}`);
} catch (error) {
console.log(`✖ ${description}: ${error.toString().split('\n').shift()}`);
}
}

console.log('loaded cjs-ext-cjs/index.cjs');

test(
'has CJS context',
() => typeof require !== 'undefined' || typeof module !== 'undefined',
);

// esbuild uses import.meta as a signal for ESM
// test(
// 'import.meta.url',
// () => Boolean(import.meta.url),
// );

test(
'name in error',
() => {
let nameInError;
try {
nameInError();
} catch (error) {
return error.message.includes('nameInError');
}
},
);

test(
'sourcemaps',
() => new Error().stack.includes(':38:'),
);

test(
'resolves optional node prefix',
() => Boolean(require('node:fs')),
);

test(
'resolves required node prefix',
() => Boolean(require('node:test')),
);

test(
'has dynamic import',
() => import('fs').then(Boolean),
);

module.exports = 1234;
78 changes: 57 additions & 21 deletions tests/fixtures/lib/cjs-ext-js/index.js
@@ -1,23 +1,59 @@
const fs = require('node:fs');

console.log(
'loaded cjs-ext-js/index.js',
JSON.stringify({
nodePrefix: Boolean(fs),
hasDynamicImport: Boolean(import('fs')),
dirname: typeof __dirname === 'string',
...(() => {
let nameInError;
try {
nameInError();
} catch (error) {
return {
nameInError: error.message.includes('nameInError'),
sourceMap: error.stack.includes(':12:5'),
};
}
})(),
}),
async function test(description, testFunction) {
try {
const result = await testFunction();
if (!result) { throw result; }
console.log(`✔ ${description}`);
} catch (error) {
console.log(`✖ ${description}: ${error.toString().split('\n').shift()}`);
}
}

console.log('loaded cjs-ext-js/index.js');

test(
'has CJS context',
() => typeof require !== 'undefined' || typeof module !== 'undefined',
);

// esbuild uses import.meta as a signal for ESM
// test(
// 'import.meta.url',
// () => Boolean(import.meta.url),
// );

test(
'name in error',
() => {
let nameInError;
try {
nameInError();
} catch (error) {
return error.message.includes('nameInError');
}
},
);

test(
'sourcemaps',
() => new Error().stack.includes(':38:'),
);

module.exports = 1234;
test(
'resolves optional node prefix',
() => Boolean(require('node:fs')),
);

test(
'resolves required node prefix',
() => Boolean(require('node:test')),
);

test(
'has dynamic import',
() => import('fs').then(Boolean),
);

test(
'module exports',
() => module.exports = 1234,
);
72 changes: 52 additions & 20 deletions tests/fixtures/lib/esm-ext-js/index.js
@@ -1,23 +1,55 @@
import fs from 'node:fs';

console.log(
'loaded esm-ext-js/index.js',
JSON.stringify({
nodePrefix: Boolean(fs),
hasDynamicImport: Boolean(import('fs')),
dirname: typeof __dirname === 'string',
...(() => {
let nameInError;
try {
nameInError();
} catch (error) {
return {
nameInError: error.message.includes('nameInError'),
sourceMap: error.stack.includes(':12:5'),
};
}
})(),
}),
async function test(description, testFunction) {
try {
const result = await testFunction();
if (!result) { throw result; }
console.log(`✔ ${description}`);
} catch (error) {
console.log(`✖ ${description}: ${error.toString().split('\n').shift()}`);
}
}

console.log('loaded esm-ext-js/index.js');

test(
'has CJS context',
() => typeof require !== 'undefined' || typeof module !== 'undefined',
);

test(
'import.meta.url',
() => Boolean(import.meta.url),
);

test(
'name in error',
() => {
let nameInError;
try {
nameInError();
} catch (error) {
return error.message.includes('nameInError');
}
},
);

test(
'sourcemaps',
() => new Error().stack.includes(':37:'),
);

test(
'has dynamic import',
() => import('fs').then(Boolean),
);

test(
'resolves optional node prefix',
() => import('node:fs').then(Boolean),
);

test(
'resolves required node prefix',
() => import('node:test').then(Boolean),
);

export default 1234;
72 changes: 52 additions & 20 deletions tests/fixtures/lib/esm-ext-mjs/index.mjs
@@ -1,23 +1,55 @@
import fs from 'node:fs';

console.log(
'loaded esm-ext-mjs/index.mjs',
JSON.stringify({
nodePrefix: Boolean(fs),
hasDynamicImport: Boolean(import('fs')),
dirname: typeof __dirname === 'string',
...(() => {
let nameInError;
try {
nameInError();
} catch (error) {
return {
nameInError: error.message.includes('nameInError'),
sourceMap: error.stack.includes(':12:5'),
};
}
})(),
}),
async function test(description, testFunction) {
try {
const result = await testFunction();
if (!result) { throw result; }
console.log(`✔ ${description}`);
} catch (error) {
console.log(`✖ ${description}: ${error.toString().split('\n').shift()}`);
}
}

console.log('loaded esm-ext-mjs/index.mjs');

test(
'has CJS context',
() => typeof require !== 'undefined' || typeof module !== 'undefined',
);

test(
'import.meta.url',
() => Boolean(import.meta.url),
);

test(
'name in error',
() => {
let nameInError;
try {
nameInError();
} catch (error) {
return error.message.includes('nameInError');
}
},
);

test(
'sourcemaps',
() => new Error().stack.includes(':37:'),
);

test(
'has dynamic import',
() => import('fs').then(Boolean),
);

test(
'resolves optional node prefix',
() => import('node:fs').then(Boolean),
);

test(
'resolves required node prefix',
() => import('node:test').then(Boolean),
);

export default 1234;

0 comments on commit 019fbf5

Please sign in to comment.