@@ -203,3 +203,87 @@ Deno.test(
203203 } ) ;
204204 } ,
205205) ;
206+
207+ Deno . test ( {
208+ name : "Dir.readSync throws ERR_DIR_CLOSED after closeSync" ,
209+ fn ( ) {
210+ const testDir : string = Deno . makeTempDirSync ( ) ;
211+ try {
212+ const dir = new Dir ( testDir ) ;
213+ dir . closeSync ( ) ;
214+ try {
215+ dir . readSync ( ) ;
216+ fail ( "Expected ERR_DIR_CLOSED to be thrown" ) ;
217+ } catch ( e ) {
218+ // deno-lint-ignore no-explicit-any
219+ assertEquals ( ( e as any ) . code , "ERR_DIR_CLOSED" ) ;
220+ }
221+ } finally {
222+ Deno . removeSync ( testDir , { recursive : true } ) ;
223+ }
224+ } ,
225+ } ) ;
226+
227+ Deno . test ( {
228+ name : "Dir.read rejects with ERR_DIR_CLOSED after close" ,
229+ async fn ( ) {
230+ const testDir : string = Deno . makeTempDirSync ( ) ;
231+ try {
232+ const dir = new Dir ( testDir ) ;
233+ await dir . close ( ) ;
234+ try {
235+ await dir . read ( ) ;
236+ fail ( "Expected ERR_DIR_CLOSED to be thrown" ) ;
237+ } catch ( e ) {
238+ // deno-lint-ignore no-explicit-any
239+ assertEquals ( ( e as any ) . code , "ERR_DIR_CLOSED" ) ;
240+ }
241+ } finally {
242+ Deno . removeSync ( testDir , { recursive : true } ) ;
243+ }
244+ } ,
245+ } ) ;
246+
247+ Deno . test ( {
248+ name : "Dir.readSync throws ERR_DIR_CLOSED after async close" ,
249+ async fn ( ) {
250+ const testDir : string = Deno . makeTempDirSync ( ) ;
251+ try {
252+ const dir = new Dir ( testDir ) ;
253+ await dir . close ( ) ;
254+ try {
255+ dir . readSync ( ) ;
256+ fail ( "Expected ERR_DIR_CLOSED to be thrown" ) ;
257+ } catch ( e ) {
258+ // deno-lint-ignore no-explicit-any
259+ assertEquals ( ( e as any ) . code , "ERR_DIR_CLOSED" ) ;
260+ }
261+ } finally {
262+ Deno . removeSync ( testDir , { recursive : true } ) ;
263+ }
264+ } ,
265+ } ) ;
266+
267+ Deno . test ( {
268+ name : "Dir.read callback receives ERR_DIR_CLOSED after close" ,
269+ async fn ( ) {
270+ const testDir : string = Deno . makeTempDirSync ( ) ;
271+ try {
272+ const dir = new Dir ( testDir ) ;
273+ await dir . close ( ) ;
274+ await new Promise < void > ( ( resolve , reject ) => {
275+ // deno-lint-ignore no-explicit-any
276+ dir . read ( ( err : any ) => {
277+ try {
278+ assertEquals ( err . code , "ERR_DIR_CLOSED" ) ;
279+ resolve ( ) ;
280+ } catch ( e ) {
281+ reject ( e ) ;
282+ }
283+ } ) ;
284+ } ) ;
285+ } finally {
286+ Deno . removeSync ( testDir , { recursive : true } ) ;
287+ }
288+ } ,
289+ } ) ;
0 commit comments