|
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