Skip to content

Commit cdaaf0a

Browse files
authored
Fix diagnoseInvalidResource (#3320)
This changes `diagnoseInvalidResource` to work off the declared resources instead of the ones we found rules for. Also amended some of the tests with a check for a count of diagnostics since they could pass with zero diagnostics being emitted.
1 parent 1bc50ad commit cdaaf0a

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

Sources/PackageLoading/TargetSourcesBuilder.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ public struct TargetSourcesBuilder {
167167
diagnoseLocalizedAndUnlocalizedVariants(in: resources)
168168
diagnoseMissingDevelopmentRegionResource(in: resources)
169169
diagnoseInfoPlistConflicts(in: resources)
170-
diagnoseInvalidResource(in: resources)
170+
diagnoseInvalidResource(in: target.resources)
171171

172172
// It's an error to contain mixed language source files.
173173
if sources.containsMixedLanguage {
@@ -345,9 +345,10 @@ public struct TargetSourcesBuilder {
345345
}
346346
}
347347

348-
private func diagnoseInvalidResource(in resources: [Resource]) {
348+
private func diagnoseInvalidResource(in resources: [TargetDescription.Resource]) {
349349
resources.forEach { resource in
350-
if let message = validTargetPath(at: resource.path) {
350+
let resourcePath = self.targetPath.appending(RelativePath(resource.path))
351+
if let message = validTargetPath(at: resourcePath) {
351352
let warning = "Invalid Resource '\(resource.path)': \(message)."
352353
self.diags.emit(warning: warning)
353354
}

Tests/PackageLoadingTests/TargetSourcesBuilderTests.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ class TargetSourcesBuilderTests: XCTestCase {
518518
diags: diags
519519
)
520520

521+
XCTAssertEqual(diags.diagnostics.count, 2)
521522
diags.diagnostics.forEach { XCTAssert($0.description.contains("Invalid Exclude")) }
522523
}
523524

@@ -551,8 +552,9 @@ class TargetSourcesBuilderTests: XCTestCase {
551552
fs: fs,
552553
diags: diags
553554
)
555+
_ = try builder.run()
554556

555-
let _ = builder.computeContents().map{ $0.pathString }.sorted()
557+
XCTAssertEqual(diags.diagnostics.count, 2)
556558
diags.diagnostics.forEach { XCTAssert($0.description.contains("Invalid Resource")) }
557559
}
558560

@@ -588,6 +590,7 @@ class TargetSourcesBuilderTests: XCTestCase {
588590
diags: diags
589591
)
590592

593+
XCTAssertEqual(diags.diagnostics.count, 3)
591594
diags.diagnostics.forEach { XCTAssert($0.description.contains("Invalid Source")) }
592595
}
593596
}

0 commit comments

Comments
 (0)