|
3 | 3 | import '../common'; |
4 | 4 | import assert from 'assert'; |
5 | 5 |
|
| 6 | +const fixtures = import.meta.require('../common/fixtures'); |
| 7 | + |
6 | 8 | assert.strictEqual(Object.getPrototypeOf(import.meta), null); |
7 | 9 |
|
8 | | -const keys = ['url']; |
| 10 | +const keys = ['url', 'require']; |
9 | 11 | assert.deepStrictEqual(Reflect.ownKeys(import.meta), keys); |
10 | 12 |
|
11 | 13 | const descriptors = Object.getOwnPropertyDescriptors(import.meta); |
| 14 | + |
12 | 15 | for (const descriptor of Object.values(descriptors)) { |
13 | 16 | delete descriptor.value; // Values are verified below. |
14 | | - assert.deepStrictEqual(descriptor, { |
15 | | - enumerable: true, |
16 | | - writable: true, |
17 | | - configurable: true |
18 | | - }); |
19 | 17 | } |
20 | 18 |
|
| 19 | +assert.deepStrictEqual(descriptors.url, { |
| 20 | + enumerable: true, |
| 21 | + writable: true, |
| 22 | + configurable: true |
| 23 | +}); |
| 24 | + |
| 25 | +assert.deepStrictEqual(descriptors.require, { |
| 26 | + get: descriptors.require.get, |
| 27 | + set: undefined, |
| 28 | + enumerable: true, |
| 29 | + configurable: true |
| 30 | +}); |
| 31 | + |
| 32 | +assert.strictEqual(import.meta.require.cache, undefined); |
| 33 | +assert.strictEqual(import.meta.require.extensions, undefined); |
| 34 | +assert.strictEqual(import.meta.require.main, undefined); |
| 35 | +assert.strictEqual(import.meta.require.paths, undefined); |
| 36 | + |
21 | 37 | const urlReg = /^file:\/\/\/.*\/test\/es-module\/test-esm-import-meta\.mjs$/; |
22 | 38 | assert(import.meta.url.match(urlReg)); |
| 39 | + |
| 40 | +const a = import.meta.require( |
| 41 | + fixtures.path('module-require', 'relative', 'dot.js') |
| 42 | +); |
| 43 | +const b = import.meta.require( |
| 44 | + fixtures.path('module-require', 'relative', 'dot-slash.js') |
| 45 | +); |
| 46 | + |
| 47 | +assert.strictEqual(a.value, 42); |
| 48 | +// require(".") should resolve like require("./") |
| 49 | +assert.strictEqual(a, b); |
0 commit comments