Skip to content

Commit 97c21b9

Browse files
authored
Simplify the dynamic library loading. (#15)
* Simplify the dynamic library loading. * use lazy
1 parent ac3af5f commit 97c21b9

File tree

1 file changed

+4
-11
lines changed

1 file changed

+4
-11
lines changed

Sources/XCTestDynamicOverlay/XCTFail.swift

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -71,23 +71,16 @@
7171
/// - Parameter message: An optional description of the assertion, for inclusion in test
7272
/// results.
7373
public func XCTFail(_ message: String = "", file: StaticString, line: UInt) {
74-
guard let _XCTFailureHandler = _XCTFailureHandler
75-
else { return }
76-
7774
_XCTFailureHandler(nil, true, "\(file)", line, "\(message.isEmpty ? "failed" : message)", nil)
7875
}
7976

8077
private typealias XCTFailureHandler = @convention(c) (
8178
AnyObject?, Bool, UnsafePointer<CChar>, UInt, String, String?
8279
) -> Void
83-
private let XCTest = NSClassFromString("XCTest")
84-
.flatMap(Bundle.init(for:))
85-
.flatMap { $0.executablePath }
86-
.flatMap { dlopen($0, RTLD_NOW) }
87-
private let _XCTFailureHandler =
88-
XCTest
89-
.flatMap { dlsym($0, "_XCTFailureHandler") }
90-
.map { unsafeBitCast($0, to: XCTFailureHandler.self) }
80+
private let _XCTFailureHandler = unsafeBitCast(
81+
dlsym(dlopen(nil, RTLD_LAZY), "_XCTFailureHandler"),
82+
to: XCTFailureHandler.self
83+
)
9184
#else
9285
// NB: It seems to be safe to import XCTest on Linux
9386
@_exported import func XCTest.XCTFail

0 commit comments

Comments
 (0)