| 
1 | 1 | 'use strict';  | 
2 | 2 | 
 
  | 
3 | 3 | const path = require('path');  | 
4 |  | -const { pathToFileURL, fileURLToPath } = require('url');  | 
 | 4 | +const { pathToFileURL } = require('url');  | 
5 | 5 | const common = require('../common');  | 
6 | 6 | const assert = require('assert');  | 
7 | 7 | const bench = common.createBenchmark(main, {  | 
8 | 8 |   n: [1000],  | 
 | 9 | +  valuesToRead: [  | 
 | 10 | +    'dirname-and-filename',  | 
 | 11 | +    'dirname',  | 
 | 12 | +    'filename',  | 
 | 13 | +  ],  | 
9 | 14 | });  | 
10 | 15 | 
 
  | 
11 |  | -const file = pathToFileURL(  | 
12 |  | -  path.resolve(__filename, '../../fixtures/esm-dir-file.mjs'),  | 
13 |  | -);  | 
14 |  | -async function load(array, n) {  | 
 | 16 | +const fixtureDir = path.resolve(__filename, '../../fixtures');  | 
 | 17 | +const fixtureDirURL = pathToFileURL(fixtureDir);  | 
 | 18 | +async function load(array, n, valuesToRead) {  | 
15 | 19 |   for (let i = 0; i < n; i++) {  | 
16 |  | -    array[i] = await import(`${file}?i=${i}`);  | 
 | 20 | +    array[i] = await import(`${fixtureDirURL}/import-meta-${valuesToRead}.mjs?i=${i}`);  | 
17 | 21 |   }  | 
18 | 22 |   return array;  | 
19 | 23 | }  | 
20 | 24 | 
 
  | 
21 |  | -function main({ n }) {  | 
 | 25 | +function main({ n, valuesToRead }) {  | 
22 | 26 |   const array = [];  | 
23 | 27 |   for (let i = 0; i < n; ++i) {  | 
24 | 28 |     array.push({ dirname: '', filename: '', i: 0 });  | 
25 | 29 |   }  | 
26 | 30 | 
 
  | 
27 | 31 |   bench.start();  | 
28 |  | -  load(array, n).then((arr) => {  | 
 | 32 | +  load(array, n, valuesToRead).then((arr) => {  | 
29 | 33 |     bench.end(n);  | 
30 |  | -    assert.strictEqual(arr[n - 1].filename, fileURLToPath(file));  | 
 | 34 | +    if (valuesToRead.includes('dirname')) assert.strictEqual(arr[n - 1].dirname, fixtureDir);  | 
 | 35 | +    if (valuesToRead.includes('filename')) assert.strictEqual(arr[n - 1].filename, path.join(fixtureDir, `import-meta-${valuesToRead}.mjs`));  | 
31 | 36 |   });  | 
32 | 37 | }  | 
0 commit comments