11// Flags: --experimental-modules
22import '../common/index.mjs' ;
33import assert from 'assert' ;
4+ import { syncBuiltinESMExports } from 'module' ;
45
56import fs , { readFile , readFileSync } from 'fs' ;
67import events , { defaultMaxListeners } from 'events' ;
@@ -14,10 +15,12 @@ const s = Symbol();
1415const fn = ( ) => s ;
1516
1617Reflect . deleteProperty ( fs , 'readFile' ) ;
18+ syncBuiltinESMExports ( ) ;
1719
1820assert . deepStrictEqual ( [ fs . readFile , readFile ] , [ undefined , undefined ] ) ;
1921
2022fs . readFile = fn ;
23+ syncBuiltinESMExports ( ) ;
2124
2225assert . deepStrictEqual ( [ fs . readFile ( ) , readFile ( ) ] , [ s , s ] ) ;
2326
@@ -26,10 +29,12 @@ Reflect.defineProperty(fs, 'readFile', {
2629configurable : true ,
2730writable : true ,
2831} ) ;
32+ syncBuiltinESMExports ( ) ;
2933
3034assert . deepStrictEqual ( [ fs . readFile ( ) , readFile ( ) ] , [ s , s ] ) ;
3135
3236Reflect . deleteProperty ( fs , 'readFile' ) ;
37+ syncBuiltinESMExports ( ) ;
3338
3439assert . deepStrictEqual ( [ fs . readFile , readFile ] , [ undefined , undefined ] ) ;
3540
@@ -39,10 +44,14 @@ Reflect.defineProperty(fs, 'readFile', {
3944get ( ) { return count ; } ,
4045configurable : true ,
4146} ) ;
47+ syncBuiltinESMExports ( ) ;
48+
49+ assert . deepStrictEqual ( [ readFile , fs . readFile ] , [ 0 , 0 ] ) ;
4250
4351count ++ ;
52+ syncBuiltinESMExports ( ) ;
4453
45- assert . deepStrictEqual ( [ readFile , fs . readFile , readFile ] , [ 0 , 1 , 1 ] ) ;
54+ assert . deepStrictEqual ( [ fs . readFile , readFile ] , [ 1 , 1 ] ) ;
4655
4756let otherValue ;
4857
@@ -62,6 +71,7 @@ Reflect.defineProperty(fs, 'readFileSync', {
6271} ) ;
6372
6473fs . readFile = 2 ;
74+ syncBuiltinESMExports ( ) ;
6575
6676assert . deepStrictEqual ( [ readFile , readFileSync ] , [ undefined , 2 ] ) ;
6777
@@ -86,17 +96,23 @@ Reflect.defineProperty(Function.prototype, 'defaultMaxListeners', {
8696} ) ;
8797} ,
8898} ) ;
99+ syncBuiltinESMExports ( ) ;
89100
90101assert . strictEqual ( defaultMaxListeners , originDefaultMaxListeners ) ;
91102assert . strictEqual ( events . defaultMaxListeners , originDefaultMaxListeners ) ;
92103
93- assert . strictEqual ( ++ events . defaultMaxListeners ,
104+ events . defaultMaxListeners += 1 ;
105+
106+ assert . strictEqual ( events . defaultMaxListeners ,
94107originDefaultMaxListeners + 1 ) ;
95108
109+ syncBuiltinESMExports ( ) ;
110+
96111assert . strictEqual ( defaultMaxListeners , originDefaultMaxListeners + 1 ) ;
97112assert . strictEqual ( Function . prototype . defaultMaxListeners , 1 ) ;
98113
99114Function . prototype . defaultMaxListeners = 'foo' ;
115+ syncBuiltinESMExports ( ) ;
100116
101117assert . strictEqual ( Function . prototype . defaultMaxListeners , 'foo' ) ;
102118assert . strictEqual ( events . defaultMaxListeners , originDefaultMaxListeners + 1 ) ;
@@ -117,16 +133,19 @@ const p = {
117133} ;
118134
119135util . __proto__ = p ; // eslint-disable-line no-proto
136+ syncBuiltinESMExports ( ) ;
120137
121138assert . strictEqual ( util . foo , 1 ) ;
122139
123140util . foo = 'bar' ;
141+ syncBuiltinESMExports ( ) ;
124142
125143assert . strictEqual ( count , 1 ) ;
126144assert . strictEqual ( util . foo , 'bar' ) ;
127145assert . strictEqual ( p . foo , 2 ) ;
128146
129147p . foo = 'foo' ;
148+ syncBuiltinESMExports ( ) ;
130149
131150assert . strictEqual ( p . foo , 'foo' ) ;
132151
@@ -135,6 +154,7 @@ util.__proto__ = utilProto; // eslint-disable-line no-proto
135154
136155Reflect . deleteProperty ( util , 'foo' ) ;
137156Reflect . deleteProperty ( Function . prototype , 'defaultMaxListeners' ) ;
157+ syncBuiltinESMExports ( ) ;
138158
139159assert . throws (
140160( ) => Object . defineProperty ( events , 'defaultMaxListeners' , { value : 3 } ) ,
0 commit comments