CommandLineToolkit
53 строки · 1.8 Кб
1import FileSystem
2import Foundation
3import TestHelpers
4import Tmp
5import XCTest
6
7// swiftlint:disable multiple_closures_with_trailing_closure
8final class GlobFileSystemEnumeratorTests: XCTestCase {
9lazy var tempFolder = assertDoesNotThrow { try TemporaryFolder() }
10
11override func setUpWithError() throws {
12try super.setUpWithError()
13
14try tempFolder.createFile(filename: "unrelated_file")
15try tempFolder.createFile(filename: "file.txt")
16try tempFolder.createFile(components: ["subfolder1"], filename: "file_in_subfolder1.txt")
17try tempFolder.createFile(components: ["subfolder1"], filename: "unrelated_file")
18try tempFolder.createFile(components: ["subfolder2"], filename: "file_in_subfolder2.txt")
19}
20
21func test___deep_glob() throws {
22let enumerator = GlobFileSystemEnumerator(
23pattern: .rootingAt(tempFolder.absolutePath).concat("/**/*.txt")
24)
25let paths = try enumerator.allPaths()
26
27assert {
28Set(paths)
29} equals: {
30Set([
31tempFolder.pathWith(components: ["file.txt"]),
32tempFolder.pathWith(components: ["subfolder1", "file_in_subfolder1.txt"]),
33tempFolder.pathWith(components: ["subfolder2", "file_in_subfolder2.txt"]),
34])
35}
36}
37
38func test___shallow_glob() throws {
39let enumerator = GlobFileSystemEnumerator(
40pattern: .rootingAt(tempFolder.absolutePath).concat("/subfolder*")
41)
42let paths = try enumerator.allPaths()
43
44assert {
45Set(paths)
46} equals: {
47Set([
48tempFolder.pathWith(components: ["subfolder1"]),
49tempFolder.pathWith(components: ["subfolder2"]),
50])
51}
52}
53}
54