🛠️ Tuist Run Report 🛠️
Tests 🧪
| Scheme | Status | Cache hit rate | Tests | Skipped | Ran | Commit |
|---|---|---|---|---|---|---|
| TuistUnitTests | ✅ | 7 % | 1904 | 29 | 1875 | 7b4c57bc5 |
Builds 🔨
| Scheme | Status | Duration | Commit |
|---|---|---|---|
| TuistAcceptanceTests | ✅ | 2m 30s | 7b4c57bc5 |
| TuistUnitTests | ✅ | 2m 47s | 7b4c57bc5 |
Hive
GitHub issue · Closed
.directory C-target header mapping so public headers are enumerated explicitly instead of as one recursive public glob.spm_headers/nanopb/pb.h.PR #11622 intentionally surfaced SwiftPM C-target headers so sibling shim modules would not break when imported. Directory-style module maps still need public headers because consumers import them as <Module/Header.h>, but the recursive public glob also copied every matching public header into Framework.framework/Headers after Xcode flattened the copy destination.
Packages shaped like firebase/nanopb contain top-level wrapper headers and nested module headers with the same basenames, for example spm_headers/pb.h and spm_headers/nanopb/pb.h. Marking both as Public makes Xcode schedule two copy commands for nanopb.framework/Headers/pb.h, which fails the build with a “Multiple commands produce” error.
The mapper now resolves the module name alongside module-map generation and uses it when classifying .directory public headers. Public headers are globbed from the SwiftPM public headers directory, filtered with SwiftPM excludes, grouped by basename, and reduced to one framework destination header. When a duplicate exists, the nested module directory wins first, then deeper paths, then lexical ordering for determinism.
This keeps the SwiftPM import surface that directory module maps require while avoiding duplicate framework header copy outputs.
xcodebuild test -workspace Tuist.xcworkspace -scheme TuistUnitTests -destination platform=macOS,arch=arm64 -only-testing:TuistLoaderTests/PackageInfoMapperTests -parallel-testing-enabled NO -quiet CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= COMPILATION_CACHE_ENABLE_CACHING=NOxcodebuild test -workspace Tuist.xcworkspace -scheme TuistAcceptanceTests -destination platform=macOS,arch=arm64 -only-testing:TuistGeneratorAcceptanceTests/GenerateAcceptanceTestAppWithSPMCTargetDuplicatePublicHeaders -parallel-testing-enabled NO -quiet CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= COMPILATION_CACHE_ENABLE_CACHING=NOxcodebuild exit 65.git diff --checkInvestigate, reproduce, or fix this item in an isolated repository. Each Flight preserves its outcome and agent session.
Start a Flight and preserve its objective, outcome, and session here.
| Scheme | Status | Cache hit rate | Tests | Skipped | Ran | Commit |
|---|---|---|---|---|---|---|
| TuistUnitTests | ✅ | 7 % | 1904 | 29 | 1875 | 7b4c57bc5 |
| Scheme | Status | Duration | Commit |
|---|---|---|---|
| TuistAcceptanceTests | ✅ | 2m 30s | 7b4c57bc5 |
| TuistUnitTests | ✅ | 2m 47s | 7b4c57bc5 |