@@ -2,7 +2,7 @@ import * as common from '../common/index.mjs';
2
2
import tmpdir from '../common/tmpdir.js' ;
3
3
import { resolve , dirname , sep , relative , join , isAbsolute } from 'node:path' ;
4
4
import { mkdir , writeFile , symlink , glob as asyncGlob } from 'node:fs/promises' ;
5
- import { glob , globSync , Dirent } from 'node:fs' ;
5
+ import { glob , globSync , Dirent , chmodSync } from 'node:fs' ;
6
6
import { test , describe } from 'node:test' ;
7
7
import { pathToFileURL } from 'node:url' ;
8
8
import { promisify } from 'node:util' ;
@@ -518,3 +518,24 @@ describe('fsPromises glob - exclude', function() {
518
518
} ) ;
519
519
}
520
520
} ) ;
521
+
522
+ describe ( 'glob - with restricted directory' , function ( ) {
523
+ test ( '*' , async ( ) => {
524
+ const restrictedDir = tmpdir . resolve ( 'restricted' ) ;
525
+ await mkdir ( restrictedDir , { recursive : true } ) ;
526
+ chmodSync ( restrictedDir , 0o000 ) ;
527
+ try {
528
+ const results = [ ] ;
529
+ for await ( const match of asyncGlob ( '*' , { cwd : restrictedDir } ) ) {
530
+ results . push ( match ) ;
531
+ }
532
+ assert . ok ( true , 'glob completed without throwing on readdir error' ) ;
533
+ } finally {
534
+ try {
535
+ chmodSync ( restrictedDir , 0o755 ) ;
536
+ } catch {
537
+ // ignore
538
+ }
539
+ }
540
+ } ) ;
541
+ } ) ;
0 commit comments