@@ -18,129 +18,138 @@ const {
18
18
defaultResolve : resolve
19
19
} = require ( 'internal/modules/esm/resolve' ) ;
20
20
21
- /**
22
- * ensure that resolving by full path does not return the format
23
- * with the defaultResolver
24
- */
25
- [ [ '/es-modules/package-type-module/index.js' , undefined ] ,
26
- [ '/es-modules/package-type-commonjs/index.js' , undefined ] ,
27
- [ '/es-modules/package-without-type/index.js' , undefined ] ,
28
- [ '/es-modules/package-without-pjson/index.js' , undefined ] ,
29
- ] . forEach ( ( testVariant ) => {
30
- const [ testScript , expectedType ] = testVariant ;
31
- const resolvedPath = path . resolve ( fixtures . path ( testScript ) ) ;
32
- const resolveResult = resolve ( resolvedPath ) ;
33
- assert . strictEqual ( resolveResult . format , expectedType ) ;
34
- } ) ;
35
-
36
- /**
37
- * create a test module and try to resolve it by module name.
38
- * check the result is as expected
39
- */
40
-
41
- ( async ( ) => {
42
- [ [ 'test-module-mainjs' , 'js' , 'module' , 'module' ] ,
43
- [ 'test-module-mainmjs' , 'mjs' , 'module' , 'module' ] ,
44
- [ 'test-module-cjs' , 'js' , 'commonjs' , 'commonjs' ] ,
45
- [ 'test-module-ne' , 'js' , undefined , undefined ] ,
21
+ const rel = ( file ) => path . join ( tmpdir . path , file ) ;
22
+ const previousCwd = process . cwd ( ) ;
23
+ try {
24
+ tmpdir . refresh ( ) ;
25
+ process . chdir ( tmpdir . path ) ;
26
+ /**
27
+ * ensure that resolving by full path does not return the format
28
+ * with the defaultResolver
29
+ */
30
+ [ [ '/es-modules/package-type-module/index.js' , undefined ] ,
31
+ [ '/es-modules/package-type-commonjs/index.js' , undefined ] ,
32
+ [ '/es-modules/package-without-type/index.js' , undefined ] ,
33
+ [ '/es-modules/package-without-pjson/index.js' , undefined ] ,
46
34
] . forEach ( ( testVariant ) => {
47
- const [ moduleName ,
48
- moduleExtenstion ,
49
- moduleType ,
50
- expectedResolvedType ] = testVariant ;
51
- tmpdir . refresh ( ) ;
52
- const rel = ( file ) => path . join ( process . cwd ( ) , file ) ;
53
- const createDir = ( path ) => {
54
- if ( ! fs . existsSync ( path ) ) {
55
- fs . mkdirSync ( path ) ;
56
- }
57
- } ;
58
-
59
- const nmDir = rel ( 'node_modules' ) ;
60
- const mDir = rel ( `node_modules/${ moduleName } ` ) ;
61
- const subDir = rel ( `node_modules/${ moduleName } /subdir` ) ;
62
- const pkg = rel ( `node_modules/${ moduleName } /package.json` ) ;
63
- const script = rel ( `node_modules/${ moduleName } /subdir/mainfile.${ moduleExtenstion } ` ) ;
64
-
65
- createDir ( nmDir ) ;
66
- createDir ( mDir ) ;
67
- createDir ( subDir ) ;
68
- const pkgJsonContent = {
69
- ...( moduleType !== undefined ) && { type : moduleType } ,
70
- main : `subdir/mainfile.${ moduleExtenstion } `
71
- } ;
72
- fs . writeFileSync ( pkg , JSON . stringify ( pkgJsonContent ) ) ;
73
- fs . writeFileSync ( script ,
74
- 'export function esm-resolve-tester() {return 42}' ) ;
75
-
76
- const resolveResult = resolve ( `${ moduleName } ` ) ;
77
- assert . strictEqual ( resolveResult . format , expectedResolvedType ) ;
78
-
79
- fs . unlinkSync ( script ) ;
80
- fs . unlinkSync ( pkg ) ;
81
- fs . rmdirSync ( subDir ) ;
82
- fs . rmdirSync ( mDir ) ;
83
- fs . rmdirSync ( nmDir ) ;
35
+ const [ testScript , expectedType ] = testVariant ;
36
+ const resolvedPath = path . resolve ( fixtures . path ( testScript ) ) ;
37
+ const resolveResult = resolve ( resolvedPath ) ;
38
+ assert . strictEqual ( resolveResult . format , expectedType ) ;
84
39
} ) ;
85
- } ) ( ) . then ( common . mustCall ( ) ) ;
86
-
87
- // Helpers
88
- const rel = ( file ) => path . join ( process . cwd ( ) , file ) ;
89
- const createDir = ( path ) => {
90
- if ( ! fs . existsSync ( path ) ) {
91
- fs . mkdirSync ( path ) ;
92
- }
93
- } ;
94
-
95
- // Create a dummy dual package
96
- const moduleName = 'my-dual-package' ;
97
-
98
- const nmDir = rel ( 'node_modules' ) ;
99
- const mDir = rel ( `node_modules/${ moduleName } ` ) ;
100
- const esSubDir = rel ( `node_modules/${ moduleName } /es` ) ;
101
- const cjsSubDir = rel ( `node_modules/${ moduleName } /lib` ) ;
102
- const pkg = rel ( `node_modules/${ moduleName } /package.json` ) ;
103
- const esmPkg = rel ( `node_modules/${ moduleName } /es/package.json` ) ;
104
- const esScript = rel ( `node_modules/${ moduleName } /es/index.js` ) ;
105
- const cjsScript = rel ( `node_modules/${ moduleName } /lib/index.js` ) ;
106
-
107
- createDir ( nmDir ) ;
108
- createDir ( mDir ) ;
109
- createDir ( esSubDir ) ;
110
- createDir ( cjsSubDir ) ;
111
-
112
- const mainPkgJsonContent = {
113
- type : 'commonjs' ,
114
- main : 'lib/mainfile.js' ,
115
- exports : {
116
- '.' : {
117
- 'require' : './lib/index.js' ,
118
- 'import' : './es/index.js'
119
- } ,
120
- './package.json' : './package.json' ,
121
- }
122
- } ;
123
- const esmPkgJsonContent = {
124
- type : 'module'
125
- } ;
126
-
127
- fs . writeFileSync ( pkg , JSON . stringify ( mainPkgJsonContent ) ) ;
128
- fs . writeFileSync ( esmPkg , JSON . stringify ( esmPkgJsonContent ) ) ;
129
- fs . writeFileSync ( esScript , 'export function esm-resolve-tester() {return 42}' ) ;
130
- fs . writeFileSync ( cjsScript ,
131
- 'module.exports = { esm-resolve-tester: () => {return 42}}' ) ;
132
-
133
-
134
- // test the resolve
135
- const resolveResult = resolve ( `${ moduleName } ` ) ;
136
- assert . strictEqual ( resolveResult . format , 'module' ) ;
137
-
138
- // cleanup
139
- fs . unlinkSync ( esScript ) ;
140
- fs . unlinkSync ( cjsScript ) ;
141
- fs . unlinkSync ( pkg ) ;
142
- fs . unlinkSync ( esmPkg ) ;
143
- fs . rmdirSync ( esSubDir ) ;
144
- fs . rmdirSync ( cjsSubDir ) ;
145
- fs . rmdirSync ( mDir ) ;
146
- fs . rmdirSync ( nmDir ) ;
40
+
41
+ /**
42
+ * create a test module and try to resolve it by module name.
43
+ * check the result is as expected
44
+ */
45
+
46
+ ( async ( ) => {
47
+ [ [ 'test-module-mainjs' , 'js' , 'module' , 'module' ] ,
48
+ [ 'test-module-mainmjs' , 'mjs' , 'module' , 'module' ] ,
49
+ [ 'test-module-cjs' , 'js' , 'commonjs' , 'commonjs' ] ,
50
+ [ 'test-module-ne' , 'js' , undefined , undefined ] ,
51
+ ] . forEach ( ( testVariant ) => {
52
+ const [ moduleName ,
53
+ moduleExtenstion ,
54
+ moduleType ,
55
+ expectedResolvedType ] = testVariant ;
56
+ tmpdir . refresh ( ) ;
57
+ const createDir = ( path ) => {
58
+ if ( ! fs . existsSync ( path ) ) {
59
+ fs . mkdirSync ( path ) ;
60
+ }
61
+ } ;
62
+
63
+ const nmDir = rel ( 'node_modules' ) ;
64
+ const mDir = rel ( `node_modules/${ moduleName } ` ) ;
65
+ const subDir = rel ( `node_modules/${ moduleName } /subdir` ) ;
66
+ const pkg = rel ( `node_modules/${ moduleName } /package.json` ) ;
67
+ const script = rel ( `node_modules/${ moduleName } /subdir/mainfile.${ moduleExtenstion } ` ) ;
68
+
69
+ createDir ( nmDir ) ;
70
+ createDir ( mDir ) ;
71
+ createDir ( subDir ) ;
72
+ const pkgJsonContent = {
73
+ ...( moduleType !== undefined ) && { type : moduleType } ,
74
+ main : `subdir/mainfile.${ moduleExtenstion } `
75
+ } ;
76
+ fs . writeFileSync ( pkg , JSON . stringify ( pkgJsonContent ) ) ;
77
+ fs . writeFileSync ( script ,
78
+ 'export function esm-resolve-tester() {return 42}' ) ;
79
+
80
+ const resolveResult = resolve ( `${ moduleName } ` ) ;
81
+ assert . strictEqual ( resolveResult . format , expectedResolvedType ) ;
82
+
83
+ fs . unlinkSync ( script ) ;
84
+ fs . unlinkSync ( pkg ) ;
85
+ fs . rmdirSync ( subDir ) ;
86
+ fs . rmdirSync ( mDir ) ;
87
+ fs . rmdirSync ( nmDir ) ;
88
+ } ) ;
89
+ } ) ( ) . then ( common . mustCall ( ) ) ;
90
+
91
+ // Helpers
92
+ const createDir = ( path ) => {
93
+ if ( ! fs . existsSync ( path ) ) {
94
+ fs . mkdirSync ( path ) ;
95
+ }
96
+ } ;
97
+
98
+ // Create a dummy dual package
99
+ const moduleName = 'my-dual-package' ;
100
+
101
+ const nmDir = rel ( 'node_modules' ) ;
102
+ const mDir = rel ( `node_modules/${ moduleName } ` ) ;
103
+ const esSubDir = rel ( `node_modules/${ moduleName } /es` ) ;
104
+ const cjsSubDir = rel ( `node_modules/${ moduleName } /lib` ) ;
105
+ const pkg = rel ( `node_modules/${ moduleName } /package.json` ) ;
106
+ const esmPkg = rel ( `node_modules/${ moduleName } /es/package.json` ) ;
107
+ const esScript = rel ( `node_modules/${ moduleName } /es/index.js` ) ;
108
+ const cjsScript = rel ( `node_modules/${ moduleName } /lib/index.js` ) ;
109
+
110
+ createDir ( nmDir ) ;
111
+ createDir ( mDir ) ;
112
+ createDir ( esSubDir ) ;
113
+ createDir ( cjsSubDir ) ;
114
+
115
+ const mainPkgJsonContent = {
116
+ type : 'commonjs' ,
117
+ main : 'lib/mainfile.js' ,
118
+ exports : {
119
+ '.' : {
120
+ 'require' : './lib/index.js' ,
121
+ 'import' : './es/index.js'
122
+ } ,
123
+ './package.json' : './package.json' ,
124
+ }
125
+ } ;
126
+ const esmPkgJsonContent = {
127
+ type : 'module'
128
+ } ;
129
+
130
+ fs . writeFileSync ( pkg , JSON . stringify ( mainPkgJsonContent ) ) ;
131
+ fs . writeFileSync ( esmPkg , JSON . stringify ( esmPkgJsonContent ) ) ;
132
+ fs . writeFileSync ( esScript ,
133
+ 'export function esm-resolve-tester() {return 42}' ) ;
134
+ fs . writeFileSync ( cjsScript ,
135
+ `module.exports = {
136
+ esm-resolve-tester: () => {return 42}}`
137
+ ) ;
138
+
139
+
140
+ // test the resolve
141
+ const resolveResult = resolve ( `${ moduleName } ` ) ;
142
+ assert . strictEqual ( resolveResult . format , 'module' ) ;
143
+
144
+ // cleanup
145
+ fs . unlinkSync ( esScript ) ;
146
+ fs . unlinkSync ( cjsScript ) ;
147
+ fs . unlinkSync ( pkg ) ;
148
+ fs . unlinkSync ( esmPkg ) ;
149
+ fs . rmdirSync ( esSubDir ) ;
150
+ fs . rmdirSync ( cjsSubDir ) ;
151
+ fs . rmdirSync ( mDir ) ;
152
+ fs . rmdirSync ( nmDir ) ;
153
+ } finally {
154
+ process . chdir ( previousCwd ) ;
155
+ }
0 commit comments