@@ -108,7 +108,6 @@ struct StaticAnswer: Question {
108
108
109
109
110
110
final class RmTrashTests : XCTestCase {
111
-
112
111
113
112
func testForceConfig( ) {
114
113
@@ -328,7 +327,6 @@ final class RmTrashTests: XCTestCase {
328
327
assertFileStructure ( fileManager, at: url, expectedFiles: [ ] )
329
328
}
330
329
331
-
332
330
func testRemoveSymlink( ) {
333
331
334
332
let ( fileManager, url) = FileManager . createTempDirectory ( )
@@ -356,6 +354,59 @@ final class RmTrashTests: XCTestCase {
356
354
XCTAssertTrue ( trash. removeMultiple ( paths: [ " sym.link " ] ) )
357
355
XCTAssertNil ( fileManager. fileType ( link) )
358
356
}
357
+
358
+ func testMultipleFilesRemoval( ) {
359
+ let ( fileManager, url) = FileManager . createTempDirectory ( )
360
+ defer { try ? fileManager. removeItem ( at: url) }
361
+
362
+ let mockFiles : [ FileNode ] = [
363
+ . file( name: " test1.txt " ) ,
364
+ . file( name: " test2.txt " ) ,
365
+ . file( name: " test3.txt " ) ,
366
+ . directory( name: " dir1 " , sub: [
367
+ . file( name: " file1.txt " )
368
+ ] ) ,
369
+ . directory( name: " dir2 " , sub: [ ] )
370
+ ]
371
+ fileManager. createFileStructure ( nodes: mockFiles, at: url)
372
+
373
+ // Test removing multiple files together
374
+ let trash = makeTrash (
375
+ force: true ,
376
+ recursive: true ,
377
+ emptyDirs: true ,
378
+ fileManager: fileManager
379
+ )
380
+ XCTAssertTrue ( trash. removeMultiple ( paths: [
381
+ " ./test1.txt " ,
382
+ " ./test2.txt " ,
383
+ " ./dir1 " ,
384
+ " ./dir2 "
385
+ ] ) )
386
+
387
+ assertFileStructure ( fileManager, at: url, expectedFiles: [
388
+ . file( name: " test3.txt " )
389
+ ] )
390
+ }
391
+
392
+ func testNonExistentFiles( ) {
393
+ let ( fileManager, url) = FileManager . createTempDirectory ( )
394
+ defer { try ? fileManager. removeItem ( at: url) }
395
+
396
+ // Test with force = false
397
+ let trashNoForce = makeTrash (
398
+ force: false ,
399
+ fileManager: fileManager
400
+ )
401
+ XCTAssertFalse ( trashNoForce. removeMultiple ( paths: [ " ./nonexistent.txt " ] ) )
402
+
403
+ // Test with force = true
404
+ let trashForce = makeTrash (
405
+ force: true ,
406
+ fileManager: fileManager
407
+ )
408
+ XCTAssertTrue ( trashForce. removeMultiple ( paths: [ " ./nonexistent.txt " ] ) )
409
+ }
359
410
}
360
411
361
412
extension RmTrashTests {
@@ -399,4 +450,5 @@ extension RmTrashTests {
399
450
XCTFail ( " Expected directory, found file " , file: file, line: line)
400
451
}
401
452
}
453
+
402
454
}
0 commit comments