@@ -152,11 +152,10 @@ describe("tool.write", () => {
152152 } )
153153
154154 describe ( "file permissions" , ( ) => {
155- test ( "sets file permissions when writing sensitive data" , async ( ) => {
155+ async function writeAndCheckMode ( umask : number , expected : number ) {
156156 await using tmp = await tmpdir ( )
157157 const filepath = path . join ( tmp . path , "sensitive.json" )
158-
159- const prevUmask = process . umask ( 0o022 )
158+ const prev = process . umask ( umask )
160159 try {
161160 await Instance . provide ( {
162161 directory : tmp . path ,
@@ -170,17 +169,20 @@ describe("tool.write", () => {
170169 ctx ,
171170 )
172171
173- // On Unix systems, check permissions
174172 if ( process . platform !== "win32" ) {
175173 const stats = await fs . stat ( filepath )
176- expect ( stats . mode & 0o777 ) . toBe ( 0o644 )
174+ expect ( stats . mode & 0o777 ) . toBe ( expected )
177175 }
178176 } ,
179177 } )
180178 } finally {
181- process . umask ( prevUmask )
179+ process . umask ( prev )
182180 }
183- } )
181+ }
182+
183+ test ( "base mode is 0o644 before umask masking" , ( ) => writeAndCheckMode ( 0o000 , 0o644 ) )
184+ test ( "respects umask 0o022 → 0o644" , ( ) => writeAndCheckMode ( 0o022 , 0o644 ) )
185+ test ( "respects umask 0o077 → 0o600" , ( ) => writeAndCheckMode ( 0o077 , 0o600 ) )
184186 } )
185187
186188 describe ( "content types" , ( ) => {
0 commit comments