Skip to content

Commit

Permalink
test: improve coverage for load hooks
Browse files Browse the repository at this point in the history
Refs: #43363 (comment)

PR-URL: #43374
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jacob Smith <[email protected]>
Reviewed-By: Geoffrey Booth <[email protected]>
Reviewed-By: Akhil Marsonya <[email protected]>
  • Loading branch information
aduh95 authored and targos committed Jul 12, 2022
1 parent 34e8331 commit 48ae00c
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 0 deletions.
65 changes: 65 additions & 0 deletions test/es-module/test-esm-loader-thenable.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import { mustCall } from '../common/index.mjs';
import { fileURL, path } from '../common/fixtures.mjs';
import { match, ok, notStrictEqual, strictEqual } from 'assert';
import { spawn } from 'child_process';
import { execPath } from 'process';

{
const child = spawn(execPath, [
'--experimental-loader',
fileURL('es-module-loaders', 'thenable-load-hook.mjs').href,
path('es-modules', 'test-esm-ok.mjs'),
]);

let stderr = '';
child.stderr.setEncoding('utf8');
child.stderr.on('data', (data) => {
stderr += data;
});
child.on('close', mustCall((code, _signal) => {
strictEqual(code, 0);
ok(!stderr.includes('must not call'));
}));
}

{
const child = spawn(execPath, [
'--experimental-loader',
fileURL('es-module-loaders', 'thenable-load-hook-rejected.mjs').href,
path('es-modules', 'test-esm-ok.mjs'),
]);

let stderr = '';
child.stderr.setEncoding('utf8');
child.stderr.on('data', (data) => {
stderr += data;
});
child.on('close', mustCall((code, _signal) => {
notStrictEqual(code, 0);

match(stderr, /\sError: must crash the process\r?\n/);

ok(!stderr.includes('must not call'));
}));
}

{
const child = spawn(execPath, [
'--experimental-loader',
fileURL('es-module-loaders', 'thenable-load-hook-rejected-no-arguments.mjs').href,
path('es-modules', 'test-esm-ok.mjs'),
]);

let stderr = '';
child.stderr.setEncoding('utf8');
child.stderr.on('data', (data) => {
stderr += data;
});
child.on('close', mustCall((code, _signal) => {
notStrictEqual(code, 0);

match(stderr, /\sundefined\r?\n/);

ok(!stderr.includes('must not call'));
}));
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export function load () {
let thenAlreadyAccessed = false;
return {
get then() {
if (thenAlreadyAccessed) throw new Error('must not call');
thenAlreadyAccessed = true;
return (_, reject) => reject();
}
};
}
10 changes: 10 additions & 0 deletions test/fixtures/es-module-loaders/thenable-load-hook-rejected.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export function load () {
let thenAlreadyAccessed = false;
return {
get then() {
if (thenAlreadyAccessed) throw new Error('must not call');
thenAlreadyAccessed = true;
return (_, reject) => reject(new Error('must crash the process'));
}
};
}
10 changes: 10 additions & 0 deletions test/fixtures/es-module-loaders/thenable-load-hook.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export function load(url, context, next) {
let thenAlreadyAccessed = false;
return {
get then() {
if (thenAlreadyAccessed) throw new Error('must not call');
thenAlreadyAccessed = true;
return (resolve) => resolve(next(url, context));
}
};
}

0 comments on commit 48ae00c

Please sign in to comment.