Skip to content

Commit 740b7f0

Browse files
committed
wip
1 parent 6935499 commit 740b7f0

File tree

264 files changed

+139
-25085
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

264 files changed

+139
-25085
lines changed

Package.swift

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ let package = Package(
1616
],
1717
targets: [
1818
.target(
19-
name: "IssueReporting"
19+
name: "IssueReporting",
20+
resources: [
21+
.process("Resources/509"),
22+
]
2023
),
2124
.testTarget(
2225
name: "IssueReportingTests",
@@ -33,43 +36,6 @@ let package = Package(
3336
]
3437
)
3538

36-
let testSupportVersion: Version = "0.1.0"
37-
#if os(macOS)
38-
package.targets.append(
39-
.binaryTarget(
40-
name: "IssueReportingTestSupport",
41-
// url: "https://github.com/pointfreeco/swift-issue-reporting-support/release/\(testSupportVersion)/TODO",
42-
// checksum: "TODO"
43-
path: "Sources/IssueReportingTestSupport.509.xcframework"
44-
)
45-
)
46-
#else
47-
// package.dependencies.append(
48-
// .package(
49-
// url: "https://github.com/pointfreeco/swift-issue-reporting-support",
50-
// from: testSupportVersion
51-
// )
52-
// )
53-
package.targets.append(
54-
.target(
55-
name: "IssueReportingTestSupport"
56-
)
57-
)
58-
#endif
59-
60-
for target in package.targets {
61-
if target.name == "IssueReporting" {
62-
#if os(macOS)
63-
target.dependencies.append("IssueReportingTestSupport")
64-
#else
65-
// target.dependencies.append(
66-
// .product(name: "IssueReportingTestSupport", package: "swift-issue-reporting-support")
67-
// )
68-
target.dependencies.append("IssueReportingTestSupport")
69-
#endif
70-
}
71-
}
72-
7339
#if !os(Windows)
7440
// Add the documentation compiler plugin if possible
7541
package.dependencies.append(

[email protected]

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ let package = Package(
1616
],
1717
targets: [
1818
.target(
19-
name: "IssueReporting"
19+
name: "IssueReporting",
20+
resources: [
21+
.process("Resources/600"),
22+
]
2023
),
2124
.testTarget(
2225
name: "IssueReportingTests",
@@ -34,37 +37,6 @@ let package = Package(
3437
swiftLanguageVersions: [.v6]
3538
)
3639

37-
let testSupportVersion: Version = "0.1.0"
38-
#if os(macOS)
39-
package.targets.append(
40-
.binaryTarget(
41-
name: "IssueReportingTestSupport",
42-
// url: "https://github.com/pointfreeco/swift-issue-reporting-support/release/\(testSupportVersion)/TODO",
43-
// checksum: "TODO"
44-
path: "Sources/IssueReportingTestSupport.600.xcframework"
45-
)
46-
)
47-
#else
48-
// package.dependencies.append(
49-
// .package(
50-
// url: "https://github.com/pointfreeco/swift-issue-reporting-support",
51-
// from: testSupportVersion
52-
// )
53-
// )
54-
#endif
55-
56-
for target in package.targets {
57-
if target.name == "IssueReporting" {
58-
// #if os(macOS)
59-
target.dependencies.append("IssueReportingTestSupport")
60-
// #else
61-
// target.dependencies.append(
62-
// .product(name: "IssueReportingTestSupport", package: "swift-issue-reporting-support")
63-
// )
64-
// #endif
65-
}
66-
}
67-
6840
#if !os(Windows)
6941
// Add the documentation compiler plugin if possible
7042
package.dependencies.append(

Sources/IssueReporting/Internal/RuntimeWarning.swift

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 113 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,135 @@
1-
@_silgen_name(
2-
"$s25IssueReportingTestSupport07_recordA07message6fileID0G4Path4line6columnySSSg_S2SS2itF"
3-
)
1+
import Foundation
2+
43
@usableFromInline
54
func _recordIssue(
65
message: String?,
76
fileID: String,
87
filePath: String,
98
line: Int,
109
column: Int
11-
)
10+
) {
11+
guard let pointer = pointer(for: "IssueReportingTestSupport_RecordIssue")
12+
else { fatalError() }
13+
14+
let recordIssue = withUnsafePointer(to: pointer) {
15+
UnsafeRawPointer($0).assumingMemoryBound(
16+
to: (@convention(c) () -> Any).self
17+
)
18+
}
19+
.pointee() as! (String?, String, String, Int, Int) -> Void
20+
21+
recordIssue(message, fileID, filePath, line, column)
22+
}
1223

13-
@_silgen_name(
14-
"$s25IssueReportingTestSupport010_withKnownA0_14isIntermittent_ySSSg_SbyyKXEtF"
15-
)
1624
@usableFromInline
1725
func _withKnownIssue(
1826
_ message: String?,
1927
isIntermittent: Bool,
2028
_ body: () throws -> Void
21-
)
29+
) {
30+
guard let pointer = pointer(for: "IssueReportingTestSupport_WithKnownIssue")
31+
else { fatalError() }
32+
33+
let withKnownIssue = withUnsafePointer(to: pointer) {
34+
UnsafeRawPointer($0).assumingMemoryBound(
35+
to: (@convention(c) () -> Any).self
36+
)
37+
}
38+
.pointee() as! (String?, Bool, () throws -> Void) -> Void
39+
40+
withKnownIssue(message, isIntermittent, body)
41+
}
2242

23-
@_silgen_name("$s25IssueReportingTestSupport20_testCurrentIsNotNilSbyF")
24-
func _testCurrentIsNotNil() -> Bool
2543

26-
@_silgen_name(
27-
"$s25IssueReportingTestSupport8_XCTFail_4file4lineySS_s12StaticStringVSutF"
28-
)
2944
@usableFromInline
30-
func _XCTFail(_ message: String, file: StaticString, line: UInt)
45+
func _currentTestIsNotNil() -> Bool {
46+
guard let pointer = pointer(for: "IssueReportingTestSupport_CurrentTestIsNotNil")
47+
else { fatalError() }
48+
49+
let currentTestIsNotNil = withUnsafePointer(to: pointer) {
50+
UnsafeRawPointer($0).assumingMemoryBound(
51+
to: (@convention(c) () -> Any).self
52+
)
53+
}
54+
.pointee() as! () -> Bool
55+
56+
return currentTestIsNotNil()
57+
}
58+
59+
@usableFromInline
60+
func _XCTFail(_ message: String, file: StaticString, line: UInt) {
61+
guard let pointer = pointer(for: "IssueReportingTestSupport_XCTFail")
62+
else { fatalError() }
63+
64+
let XCTFail = withUnsafePointer(to: pointer) {
65+
UnsafeRawPointer($0).assumingMemoryBound(
66+
to: (@convention(c) () -> Any).self
67+
)
68+
}
69+
.pointee() as! (String, StaticString, UInt) -> Void
70+
71+
XCTFail(message, file, line)
72+
}
3173

32-
@_silgen_name(
33-
"$s25IssueReportingTestSupport17_XCTExpectFailure_6strict12failingBlockySSSg_SbSgyyKXEtKF"
34-
)
3574
@usableFromInline
3675
func _XCTExpectFailure(
3776
_ failureReason: String?,
3877
strict: Bool?,
3978
failingBlock: () throws -> Void
40-
) rethrows
79+
) rethrows {
80+
guard let pointer = pointer(for: "IssueReportingTestSupport_XCTExpectFailure")
81+
else { fatalError() }
82+
83+
let XCTExpectFailure = withUnsafePointer(to: pointer) {
84+
UnsafeRawPointer($0).assumingMemoryBound(
85+
to: (@convention(c) () -> Any).self
86+
)
87+
}
88+
.pointee() as! (String?, Bool?, () throws -> Void) throws -> Void
89+
90+
// TODO: Traffic `rethrows`
91+
try? XCTExpectFailure(failureReason, strict, failingBlock)
92+
}
93+
94+
private func pointer(for symbol: String) -> UnsafeMutableRawPointer? {
95+
guard
96+
let prefix,
97+
let path = Bundle.module
98+
.path(forResource: "\(prefix)_IssueReportingTestSupport", ofType: nil),
99+
let handle = dlopen(path, RTLD_LAZY),
100+
let pointer = dlsym(handle, symbol)
101+
else { return nil }
102+
return pointer
103+
}
104+
105+
private let prefix: String? = {
106+
#if targetEnvironment(macCatalyst)
107+
return "ios-arm64_x86_64-maccatalyst"
108+
#elseif os(iOS)
109+
#if targetEnvironment(simulator)
110+
return "ios-arm64_x86_64-simulator"
111+
#else
112+
return "ios-arm64"
113+
#endif
114+
#elseif os(tvOS)
115+
#if targetEnvironment(simulator)
116+
return "tvos-arm64_x86_64-simulator"
117+
#else
118+
return "tvos-arm64"
119+
#endif
120+
#elseif os(visionOS)
121+
#if targetEnvironment(simulator)
122+
return "xros-arm64_x86_64-simulator"
123+
#else
124+
return "xros-arm64"
125+
#endif
126+
#elseif os(watchOS)
127+
#if targetEnvironment(simulator)
128+
return "watchos-arm64_x86_64-simulator"
129+
#else
130+
return "watchos-arm64_arm64_32_armv7k"
131+
#endif
132+
#else
133+
return nil
134+
#endif
135+
}()

0 commit comments

Comments
 (0)