|
1 | 1 | import path from 'node:path' |
2 | 2 | import fs from 'node:fs/promises' |
3 | 3 |
|
4 | | -const base = await fs.readFile(path.join('test', 'core.js')) |
| 4 | +const base = await fs.readFile(path.join('test', 'core.js'), 'utf8') |
5 | 5 |
|
6 | | -const lines = String(base) |
7 | | - .replace(/\bresolve(?=\(|,)/g, 'import.meta.resolve') |
8 | | - .split('\n') |
| 6 | +const asyncLines = base |
| 7 | + // Special baseline test for Node < 20, that doesn't support sync `import.meta.resolve` |
| 8 | + .replace(/\bresolve(?=\()/g, 'await import.meta.resolve') |
| 9 | + .replace(/\bresolve(?=,)/g, 'import.meta.resolve') |
| 10 | + .replace( |
| 11 | + /const run = .*$/g, |
| 12 | + 'const run = async (/** @type {() => Promise<void>} */ f) => f()' |
| 13 | + ) |
| 14 | + .replace(/run\(/g, 'await run(async ') |
9 | 15 |
|
10 | | -await fs.writeFile(path.join('test', 'baseline.js'), lines.join('\n')) |
| 16 | +await fs.writeFile(path.join('test', 'baseline-async.js'), asyncLines) |
| 17 | + |
| 18 | +const syncLines = base |
| 19 | + // Node < 20 does not support sync import.meta.resolve, so skipping these tests if so |
| 20 | + .replace(/\bresolve(?=\()/g, 'import.meta.resolve') |
| 21 | + .replace(/\bresolve(?=,)/g, 'import.meta.resolve') |
| 22 | + .replace( |
| 23 | + '{skip: false}', |
| 24 | + "{skip: semver.lt(process.versions.node, '20.0.0')}" |
| 25 | + ) |
| 26 | + .replace( |
| 27 | + /const run = .*$/g, |
| 28 | + 'const run = (/** @type {() => void} */ f) => f()' |
| 29 | + ) |
| 30 | + .replace(/run\(/g, 'run(async ') |
| 31 | + |
| 32 | +await fs.writeFile(path.join('test', 'baseline.js'), syncLines) |
0 commit comments