Skip to content

Commit aa1e9e6

Browse files
committed
test: unit test
1 parent 04c0f60 commit aa1e9e6

File tree

2 files changed

+59
-2
lines changed

2 files changed

+59
-2
lines changed

packages/core/src/util/esm.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* Node.js v18.19 and above we are not supporting --experimental-loader flag
1111
*/
1212
exports.hasExperimentalLoaderFlag = function hasExperimentalLoaderFlag() {
13-
return (
13+
return !!(
1414
(process.env.NODE_OPTIONS && process.env.NODE_OPTIONS.includes('--experimental-loader')) ||
1515
(process.execArgv[0] && process.execArgv[0].includes('--experimental-loader'))
1616
);
@@ -21,7 +21,7 @@ exports.hasExperimentalLoaderFlag = function hasExperimentalLoaderFlag() {
2121
* @returns {boolean} - True if esm-loader.mjs is present in Node options or execArgv, false otherwise.
2222
*/
2323
exports.hasEsmLoaderFile = function hasEsmLoaderFile() {
24-
return (
24+
return !!(
2525
(process.env.NODE_OPTIONS && process.env.NODE_OPTIONS.includes('esm-loader.mjs')) ||
2626
process.execArgv.some(arg => arg.includes('esm-loader.mjs'))
2727
);
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* (c) Copyright IBM Corp. 2025
3+
*/
4+
5+
'use strict';
6+
7+
const expect = require('chai').expect;
8+
const { hasExperimentalLoaderFlag, hasEsmLoaderFile } = require('../../src/util/esm');
9+
10+
describe('util.esm', () => {
11+
afterEach(() => {
12+
delete process.env.NODE_OPTIONS;
13+
});
14+
15+
describe('hasExperimentalLoaderFlag', () => {
16+
it('should return true when --experimental-loader is in NODE_OPTIONS', () => {
17+
process.env.NODE_OPTIONS = '--experimental-loader ./loader.mjs';
18+
expect(hasExperimentalLoaderFlag()).to.be.true;
19+
});
20+
21+
it('should return false when --experimental-loader is not present', () => {
22+
delete process.env.NODE_OPTIONS;
23+
expect(hasExperimentalLoaderFlag()).to.be.false;
24+
});
25+
26+
it('should return false when NODE_OPTIONS has other flags', () => {
27+
process.env.NODE_OPTIONS = '--max-old-space-size=4096';
28+
expect(hasExperimentalLoaderFlag()).to.be.false;
29+
});
30+
});
31+
32+
describe('hasEsmLoaderFile', () => {
33+
it('should return true when esm-loader.mjs is in NODE_OPTIONS', () => {
34+
process.env.NODE_OPTIONS = '--experimental-loader ./esm-loader.mjs';
35+
expect(hasEsmLoaderFile()).to.be.true;
36+
});
37+
38+
it('should return true when esm-loader.mjs is in NODE_OPTIONS with other flags', () => {
39+
process.env.NODE_OPTIONS = '--max-old-space-size=4096 --experimental-loader./esm-loader.mjs';
40+
expect(hasEsmLoaderFile()).to.be.true;
41+
});
42+
43+
it('should return false when NODE_OPTIONS is not set', () => {
44+
expect(hasEsmLoaderFile()).to.be.false;
45+
});
46+
47+
it('should return false when NODE_OPTIONS has other loader files', () => {
48+
process.env.NODE_OPTIONS = '--import ./esm-register.mjs';
49+
expect(hasEsmLoaderFile()).to.be.false;
50+
});
51+
52+
it('should return false when NODE_OPTIONS is empty', () => {
53+
process.env.NODE_OPTIONS = '';
54+
expect(hasEsmLoaderFile()).to.be.false;
55+
});
56+
});
57+
});

0 commit comments

Comments
 (0)