Skip to content

Commit 1ea4736

Browse files
Merge pull request #2 from michaelversus/feature/exclude_spm_test_targets
Add excludeAllSPMTestTargets configuration option
2 parents 2224504 + 32f14a8 commit 1ea4736

6 files changed

Lines changed: 16 additions & 5 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ DerivedData/
55
.swiftpm/configuration/registries.json
66
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
77
.netrc
8+
.build/

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ For example, if you need to:
3636
- exclude `.build` and `.github` paths from scanning
3737
- exclude target `SomeTarget` from scanning
3838
- exclude package `SomePackage` from scanning
39+
- exclude all SPM test targets from scanning
3940
- exclude `someInternalPath` only for `SICDemoApp` target from scanning
4041
- exclude `SomeImport` import statements only for `SICDemoApp` target from scanning
4142
- throw error when scan finds `STLT` import statement only for `SICDemoApp` target
@@ -56,6 +57,7 @@ excludedTargets:
5657
- SomeTarget
5758
excludedPackages:
5859
- SomePackage
60+
excludeAllSPMTestTargets: false
5961
diagrams:
6062
regular:
6163
layers:

Sources/Configuration/Configuration.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,22 @@ struct Configurations: Codable, Equatable {
1313
let excludedPaths: [String]
1414
let excludedTargets: [String]
1515
let excludedPackages: [String]
16+
let excludeAllSPMTestTargets: Bool
1617
let diagrams: DiagramsConfiguration?
1718

1819
init(
1920
configurations: [String: Configuration] = [:],
2021
excludedTargets: [String] = [],
2122
excludedPaths: [String] = [],
2223
excludedPackages: [String] = [],
24+
excludeAllSPMTestTargets: Bool = false,
2325
diagrams: DiagramsConfiguration? = nil
2426
) {
2527
self.configurations = configurations
2628
self.excludedTargets = excludedTargets
2729
self.excludedPaths = excludedPaths
2830
self.excludedPackages = excludedPackages
31+
self.excludeAllSPMTestTargets = excludeAllSPMTestTargets
2932
self.diagrams = diagrams
3033
}
3134

@@ -34,6 +37,7 @@ struct Configurations: Codable, Equatable {
3437
case excludedPaths
3538
case excludedPackages
3639
case excludedTargets
40+
case excludeAllSPMTestTargets
3741
case diagrams
3842
}
3943

@@ -43,10 +47,12 @@ struct Configurations: Codable, Equatable {
4347
let excludedTargets = try? container.decode([String].self, forKey: .excludedTargets)
4448
let excludedPackages = try? container.decode([String].self, forKey: .excludedPackages)
4549
let excludedPaths = try? container.decode([String].self, forKey: .excludedPaths)
50+
let excludeAllSPMTestTargets = try? container.decode(Bool.self, forKey: .excludeAllSPMTestTargets)
4651
self.diagrams = try? container.decode(DiagramsConfiguration.self, forKey: .diagrams)
4752
self.excludedTargets = excludedTargets ?? []
4853
self.excludedPackages = excludedPackages ?? []
4954
self.excludedPaths = excludedPaths ?? []
55+
self.excludeAllSPMTestTargets = excludeAllSPMTestTargets ?? false
5056
self.configurations = configurations ?? [:]
5157
}
5258
}

Sources/SPMParsing/PackagesParser.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ final class PackagesParser {
4040
diagramBuilder.append(package: package)
4141
let targets = package.targets
4242
for target in targets {
43+
if configs.excludeAllSPMTestTargets && target.type == .test {
44+
continue
45+
}
4346
let config = configs.configurations[target.name] ?? .default
4447
print("Package: \(package.name) Target: \(target.name) - Type: \(target.type.rawValue)")
4548
guard target.duplicateDependencies.isEmpty else {

Tests/SwiftImportChecksTests/Configuration/ConfigFactoryTests.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ extension Configurations {
9898
)
9999
],
100100
excludedTargets: ["Tests"],
101-
excludedPackages: ["PackageTest"]
101+
excludedPackages: ["PackageTest"],
102+
excludeAllSPMTestTargets: false
102103
)
103104
}
104105
}

packages.html

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
group framework(vscode-icons:file-type-swift)[Framework]
88
junction _framework in framework
99
%% Foundation
10-
service examplemodule(vscode-icons:file-type-package)[ExampleModule] in foundation
11-
%% Framework
12-
service othermodule(vscode-icons:file-type-package)[OtherModule] in framework
10+
service testtarget(vscode-icons:file-type-package)[TestTarget] in foundation
1311
_framework:B -- T:_foundation
1412
</pre>
1513
<script type="module">
@@ -24,4 +22,4 @@
2422
]);
2523
</script>
2624
</body>
27-
</html>
25+
</html>

0 commit comments

Comments
 (0)