Skip to content

Commit 9fc4a2b

Browse files
committed
Merge remote-tracking branch 'origin/main' into with-expected-issue-crash
2 parents 9eafd94 + e5afd30 commit 9fc4a2b

File tree

13 files changed

+234
-58
lines changed

13 files changed

+234
-58
lines changed

.github/workflows/ci.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,10 @@ jobs:
135135
# - name: Run tests (debug only)
136136
# run: swift test
137137

138-
android:
139-
name: Android
140-
runs-on: ubuntu-latest
141-
steps:
142-
- uses: actions/checkout@v4
143-
- name: "Test Swift Package on Android"
144-
uses: skiptools/swift-android-action@v2
138+
# android:
139+
# name: Android
140+
# runs-on: ubuntu-latest
141+
# steps:
142+
# - uses: actions/checkout@v4
143+
# - name: "Test Swift Package on Android"
144+
# uses: skiptools/swift-android-action@v2

Examples/Examples.xcodeproj/project.pbxproj

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
CA1972D72DB1836900351823 /* TraitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA1972D62DB1836900351823 /* TraitTests.swift */; };
11+
CA1972D92DB1847200351823 /* ExampleTrait.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA1972D82DB1847200351823 /* ExampleTrait.swift */; };
1012
CADE79AE2C4A9D2C005A85F7 /* ExamplesApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = CADE79AD2C4A9D2C005A85F7 /* ExamplesApp.swift */; };
1113
CADE79B22C4A9D2D005A85F7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CADE79B12C4A9D2D005A85F7 /* Assets.xcassets */; };
1214
CADE79DA2C4A9D3A005A85F7 /* IssueReporting in Frameworks */ = {isa = PBXBuildFile; productRef = CADE79D92C4A9D3A005A85F7 /* IssueReporting */; };
1315
CADE79DD2C4A9E59005A85F7 /* SwiftTestingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CADE79DB2C4A9E59005A85F7 /* SwiftTestingTests.swift */; };
1416
CADE79DE2C4A9E59005A85F7 /* XCTestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CADE79DC2C4A9E59005A85F7 /* XCTestTests.swift */; };
1517
CADE79E02C4ABD94005A85F7 /* Examples.xctestplan in Resources */ = {isa = PBXBuildFile; fileRef = CADE79DF2C4ABD94005A85F7 /* Examples.xctestplan */; };
16-
CADE79E22C4ABE90005A85F7 /* IssueReporting in Frameworks */ = {isa = PBXBuildFile; productRef = CADE79E12C4ABE90005A85F7 /* IssueReporting */; };
1718
/* End PBXBuildFile section */
1819

1920
/* Begin PBXContainerItemProxy section */
@@ -26,7 +27,32 @@
2627
};
2728
/* End PBXContainerItemProxy section */
2829

30+
/* Begin PBXCopyFilesBuildPhase section */
31+
CA1972DD2DB1854600351823 /* Embed Frameworks */ = {
32+
isa = PBXCopyFilesBuildPhase;
33+
buildActionMask = 2147483647;
34+
dstPath = "";
35+
dstSubfolderSpec = 10;
36+
files = (
37+
);
38+
name = "Embed Frameworks";
39+
runOnlyForDeploymentPostprocessing = 0;
40+
};
41+
CA1972E12DB186BC00351823 /* Embed Frameworks */ = {
42+
isa = PBXCopyFilesBuildPhase;
43+
buildActionMask = 2147483647;
44+
dstPath = "";
45+
dstSubfolderSpec = 10;
46+
files = (
47+
);
48+
name = "Embed Frameworks";
49+
runOnlyForDeploymentPostprocessing = 0;
50+
};
51+
/* End PBXCopyFilesBuildPhase section */
52+
2953
/* Begin PBXFileReference section */
54+
CA1972D62DB1836900351823 /* TraitTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TraitTests.swift; sourceTree = "<group>"; };
55+
CA1972D82DB1847200351823 /* ExampleTrait.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleTrait.swift; sourceTree = "<group>"; };
3056
CADE79AA2C4A9D2C005A85F7 /* Examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Examples.app; sourceTree = BUILT_PRODUCTS_DIR; };
3157
CADE79AD2C4A9D2C005A85F7 /* ExamplesApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExamplesApp.swift; sourceTree = "<group>"; };
3258
CADE79B12C4A9D2D005A85F7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
@@ -50,7 +76,6 @@
5076
isa = PBXFrameworksBuildPhase;
5177
buildActionMask = 2147483647;
5278
files = (
53-
CADE79E22C4ABE90005A85F7 /* IssueReporting in Frameworks */,
5479
);
5580
runOnlyForDeploymentPostprocessing = 0;
5681
};
@@ -80,6 +105,7 @@
80105
isa = PBXGroup;
81106
children = (
82107
CADE79AD2C4A9D2C005A85F7 /* ExamplesApp.swift */,
108+
CA1972D82DB1847200351823 /* ExampleTrait.swift */,
83109
CADE79B12C4A9D2D005A85F7 /* Assets.xcassets */,
84110
CADE79B32C4A9D2D005A85F7 /* Examples.entitlements */,
85111
);
@@ -92,6 +118,7 @@
92118
CADE79DF2C4ABD94005A85F7 /* Examples.xctestplan */,
93119
CADE79DB2C4A9E59005A85F7 /* SwiftTestingTests.swift */,
94120
CADE79DC2C4A9E59005A85F7 /* XCTestTests.swift */,
121+
CA1972D62DB1836900351823 /* TraitTests.swift */,
95122
);
96123
path = ExamplesTests;
97124
sourceTree = "<group>";
@@ -113,6 +140,7 @@
113140
CADE79A62C4A9D2C005A85F7 /* Sources */,
114141
CADE79A72C4A9D2C005A85F7 /* Frameworks */,
115142
CADE79A82C4A9D2C005A85F7 /* Resources */,
143+
CA1972E12DB186BC00351823 /* Embed Frameworks */,
116144
);
117145
buildRules = (
118146
);
@@ -133,6 +161,7 @@
133161
CADE79B72C4A9D2D005A85F7 /* Sources */,
134162
CADE79B82C4A9D2D005A85F7 /* Frameworks */,
135163
CADE79B92C4A9D2D005A85F7 /* Resources */,
164+
CA1972DD2DB1854600351823 /* Embed Frameworks */,
136165
);
137166
buildRules = (
138167
);
@@ -141,7 +170,6 @@
141170
);
142171
name = ExamplesTests;
143172
packageProductDependencies = (
144-
CADE79E12C4ABE90005A85F7 /* IssueReporting */,
145173
);
146174
productName = ExamplesTests;
147175
productReference = CADE79BB2C4A9D2D005A85F7 /* ExamplesTests.xctest */;
@@ -210,6 +238,7 @@
210238
buildActionMask = 2147483647;
211239
files = (
212240
CADE79AE2C4A9D2C005A85F7 /* ExamplesApp.swift in Sources */,
241+
CA1972D92DB1847200351823 /* ExampleTrait.swift in Sources */,
213242
);
214243
runOnlyForDeploymentPostprocessing = 0;
215244
};
@@ -219,6 +248,7 @@
219248
files = (
220249
CADE79DD2C4A9E59005A85F7 /* SwiftTestingTests.swift in Sources */,
221250
CADE79DE2C4A9E59005A85F7 /* XCTestTests.swift in Sources */,
251+
CA1972D72DB1836900351823 /* TraitTests.swift in Sources */,
222252
);
223253
runOnlyForDeploymentPostprocessing = 0;
224254
};
@@ -504,10 +534,6 @@
504534
isa = XCSwiftPackageProductDependency;
505535
productName = IssueReporting;
506536
};
507-
CADE79E12C4ABE90005A85F7 /* IssueReporting */ = {
508-
isa = XCSwiftPackageProductDependency;
509-
productName = IssueReporting;
510-
};
511537
/* End XCSwiftPackageProductDependency section */
512538
};
513539
rootObject = CADE79A22C4A9D2C005A85F7 /* Project object */;

Examples/Examples/ExampleTrait.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import IssueReporting
2+
3+
public struct ExampleTrait: Sendable {
4+
public init() {}
5+
6+
public static func hasTrait() -> Bool {
7+
switch TestContext.current {
8+
case .none, .some(.xcTest):
9+
return false
10+
case .some(.swiftTesting(let testing)):
11+
return testing?.test.traits.contains { $0 is Self } ?? false
12+
}
13+
}
14+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import Examples
2+
import IssueReporting
3+
import Testing
4+
5+
extension ExampleTrait: @retroactive SuiteTrait, @retroactive TestTrait {
6+
}
7+
8+
@Suite
9+
struct TraitTests {
10+
@Test(ExampleTrait()) func hasTrait() {
11+
#if DEBUG
12+
#expect(ExampleTrait.hasTrait())
13+
#else
14+
#expect(ExampleTrait.hasTrait() == false)
15+
#endif
16+
}
17+
18+
@Test func doesNotHaveTrait() {
19+
#expect(ExampleTrait.hasTrait() == false)
20+
}
21+
}

Package.swift

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,13 @@ let package = Package(
2222
],
2323
targets: [
2424
.target(
25-
name: "IssueReporting"
25+
name: "IssueReportingPackageSupport"
26+
),
27+
.target(
28+
name: "IssueReporting",
29+
dependencies: [
30+
"IssueReportingPackageSupport"
31+
]
2632
),
2733
.testTarget(
2834
name: "IssueReportingTests",
@@ -38,7 +44,10 @@ let package = Package(
3844
]
3945
),
4046
.target(
41-
name: "IssueReportingTestSupport"
47+
name: "IssueReportingTestSupport",
48+
dependencies: [
49+
"IssueReportingPackageSupport"
50+
]
4251
),
4352
.target(
4453
name: "XCTestDynamicOverlay",

Package@swift-6.0.swift

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@ let package = Package(
2121
],
2222
targets: [
2323
.target(
24-
name: "IssueReporting"
24+
name: "IssueReportingPackageSupport"
25+
),
26+
.target(
27+
name: "IssueReporting",
28+
dependencies: [
29+
"IssueReportingPackageSupport"
30+
]
2531
),
2632
.testTarget(
2733
name: "IssueReportingTests",
@@ -37,7 +43,10 @@ let package = Package(
3743
]
3844
),
3945
.target(
40-
name: "IssueReportingTestSupport"
46+
name: "IssueReportingTestSupport",
47+
dependencies: [
48+
"IssueReportingPackageSupport"
49+
]
4150
),
4251
.target(
4352
name: "XCTestDynamicOverlay",

Sources/IssueReporting/Internal/SwiftTesting.swift

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import IssueReportingPackageSupport
23

34
#if canImport(WinSDK)
45
import WinSDK
@@ -313,17 +314,21 @@ func _withKnownIssue(
313314
#endif
314315

315316
@usableFromInline
316-
func _currentTestID() -> AnyHashable? {
317-
guard let function = function(for: "$s25IssueReportingTestSupport08_currentC2IDypyF")
317+
func _currentTest() -> _Test? {
318+
guard let function = function(for: "$s25IssueReportingTestSupport08_currentC0ypyF")
318319
else {
319320
#if DEBUG
320-
return Test.current?.id
321+
return Test.current.map { _Test(id: $0.id, traits: $0.traits) }
321322
#else
322323
return nil
323324
#endif
324325
}
325326

326-
return (function as! @Sendable () -> AnyHashable?)()
327+
return withUnsafePointer(to: function) {
328+
$0.withMemoryRebound(to: (@Sendable () -> _Test?).self, capacity: 1) {
329+
$0.pointee()
330+
}
331+
}
327332
}
328333

329334
#if DEBUG
@@ -446,7 +451,7 @@ func _currentTestID() -> AnyHashable? {
446451
struct Case {}
447452
private var name: String
448453
private var displayName: String?
449-
private var traits: [any Trait]
454+
fileprivate var traits: [any Trait]
450455
private var sourceLocation: SourceLocation
451456
private var containingTypeInfo: TypeInfo?
452457
private var xcTestCompatibleSelector: __XCTestCompatibleSelector?

0 commit comments

Comments
 (0)