@@ -10,7 +10,9 @@ const fsPromises = fs.promises;
10
10
const {
11
11
access,
12
12
chmod,
13
+ chown,
13
14
copyFile,
15
+ lchown,
14
16
link,
15
17
lchmod,
16
18
lstat,
@@ -107,6 +109,33 @@ function verifyStatObject(stat) {
107
109
await chmod ( dest , ( 0o10777 ) ) ;
108
110
await handle . chmod ( 0o10777 ) ;
109
111
112
+ if ( ! common . isWindows ) {
113
+ await chown ( dest , process . getuid ( ) , process . getgid ( ) ) ;
114
+ await handle . chown ( process . getuid ( ) , process . getgid ( ) ) ;
115
+ }
116
+
117
+ assert . rejects (
118
+ async ( ) => {
119
+ await chown ( dest , 1 , - 1 ) ;
120
+ } ,
121
+ {
122
+ code : 'ERR_OUT_OF_RANGE' ,
123
+ name : 'RangeError [ERR_OUT_OF_RANGE]' ,
124
+ message : 'The value of "gid" is out of range. ' +
125
+ 'It must be >= 0 && < 4294967296. Received -1'
126
+ } ) ;
127
+
128
+ assert . rejects (
129
+ async ( ) => {
130
+ await handle . chown ( 1 , - 1 ) ;
131
+ } ,
132
+ {
133
+ code : 'ERR_OUT_OF_RANGE' ,
134
+ name : 'RangeError [ERR_OUT_OF_RANGE]' ,
135
+ message : 'The value of "gid" is out of range. ' +
136
+ 'It must be >= 0 && < 4294967296. Received -1'
137
+ } ) ;
138
+
110
139
await utimes ( dest , new Date ( ) , new Date ( ) ) ;
111
140
112
141
try {
@@ -130,6 +159,9 @@ function verifyStatObject(stat) {
130
159
if ( common . canCreateSymLink ( ) ) {
131
160
const newLink = path . resolve ( tmpDir , 'baz3.js' ) ;
132
161
await symlink ( newPath , newLink ) ;
162
+ if ( ! common . isWindows ) {
163
+ await lchown ( newLink , process . getuid ( ) , process . getgid ( ) ) ;
164
+ }
133
165
stats = await lstat ( newLink ) ;
134
166
verifyStatObject ( stats ) ;
135
167
0 commit comments