-
Notifications
You must be signed in to change notification settings - Fork 265
Open
Description
Description
test that calls XCTExpectFailure does not compile on linux
Steps to reproduce
create a simple test such as one showed on documentation:
import XCTest
class XfailTests: XCTestCase {
func testExpectedFailure() throws {
let thingThatFails = false
XCTExpectFailure("Working on a fix for this problem.")
XCTAssertTrue(thingThatFails, "This is not working right now.")
}
}
create Package.swift with the test above as test target and run
swift test
Expected behavior
This should compile and run, tested working on macOS 12.5
but on linux (tested on official docker image) this will fail to compile:
root@50ad2ae7e8d5:/usr/src/test# swift --version
Swift version 5.8 (swift-5.8-RELEASE)
Target: x86_64-unknown-linux-gnu
root@50ad2ae7e8d5:/usr/src/test# swift test --vv
debug: /usr/bin/swiftc -print-target-info
debug: /usr/bin/swiftc -print-target-info
debug: /usr/bin/swift-frontend -frontend -print-target-info
debug: /usr/bin/swift-frontend -frontend -print-target-info
debug: /usr/bin/swift-frontend -frontend -emit-supported-features /tmp/TemporaryDirectory.oJfRMR/dummyInput-1.swift
debug: /usr/bin/swiftc -print-target-info
debug: /usr/bin/swift-frontend -frontend -print-target-info
debug: /usr/bin/swift-frontend -frontend -print-target-info
debug: /usr/bin/swift-frontend -frontend -emit-supported-features /tmp/TemporaryDirectory.n23bCG/dummyInput-2.swift
debug: /usr/bin/swift-frontend -frontend -print-target-info
debug: /usr/bin/swift-frontend -frontend -print-target-info
debug: /usr/bin/swift-frontend -frontend -emit-supported-features /tmp/TemporaryDirectory.BIEzQk/dummyInput-3.swift
debug: registering 'repository fetching' with terminator
debug: registering 'registry downloads' with terminator
debug: registering 'binary artifacts downloads' with terminator
debug: registering 'plugin runner' with terminator
debug: registering 'build system' with terminator
Planning build
debug: 'test': loading manifest for 'test' v. unknown from cache
Building for debugging...
/usr/bin/swiftc -module-name ExpectedFailureTest -incremental -emit-dependencies -emit-module -emit-module-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ExpectedFailureTest.swiftmodule -output-file-map /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ExpectedFailureTest.build/output-file-map.json -parse-as-library -c /usr/src/test/Tests/ExpectedFailureTest/ExpectedFailureTest.swift -I /usr/src/test/.build/x86_64-unknown-linux-gnu/debug -target x86_64-unknown-linux-gnu -swift-version 5 -enable-batch-mode -index-store-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/index/store -Onone -enable-testing -g -j48 -DSWIFT_PACKAGE -DDEBUG -module-cache-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -parseable-output -parse-as-library -color-diagnostics -v
Swift version 5.8 (swift-5.8-RELEASE)
Target: x86_64-unknown-linux-gnu
/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types /usr/src/test/Tests/ExpectedFailureTest/ExpectedFailureTest.swift -target x86_64-unknown-linux-gnu -disable-objc-interop -I /usr/src/test/.build/x86_64-unknown-linux-gnu/debug -color-diagnostics -enable-testing -g -module-cache-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -swift-version 5 -Onone -D SWIFT_PACKAGE -D DEBUG -new-driver-path /usr/bin/swift-driver -empty-abi-descriptor -resource-dir /usr/lib/swift -enable-anonymous-context-mangled-names -module-name ExpectedFailureTest -emit-module-doc-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ExpectedFailureTest.swiftdoc -emit-module-source-info-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ExpectedFailureTest.swiftsourceinfo -emit-dependencies-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ExpectedFailureTest.build/ExpectedFailureTest.emit-module.d -parse-as-library -o /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ExpectedFailureTest.swiftmodule
/usr/bin/swift-frontend -frontend -c -primary-file /usr/src/test/Tests/ExpectedFailureTest/ExpectedFailureTest.swift -emit-dependencies-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ExpectedFailureTest.build/ExpectedFailureTest.d -emit-reference-dependencies-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ExpectedFailureTest.build/ExpectedFailureTest.swiftdeps -target x86_64-unknown-linux-gnu -disable-objc-interop -I /usr/src/test/.build/x86_64-unknown-linux-gnu/debug -color-diagnostics -enable-testing -g -module-cache-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -swift-version 5 -Onone -D SWIFT_PACKAGE -D DEBUG -new-driver-path /usr/bin/swift-driver -empty-abi-descriptor -resource-dir /usr/lib/swift -enable-anonymous-context-mangled-names -module-name ExpectedFailureTest -parse-as-library -o /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/ExpectedFailureTest.build/ExpectedFailureTest.swift.o -index-store-path /usr/src/test/.build/x86_64-unknown-linux-gnu/debug/index/store -index-system-modules
/usr/src/test/Tests/ExpectedFailureTest/ExpectedFailureTest.swift:6:9: error: cannot find 'XCTExpectFailure' in scope
XCTExpectFailure("Working on a fix for this problem.")
^~~~~~~~~~~~~~~~
error: fatalError
It compiles and runs fine once you comment out the ExpectedFailure call.
Environment
Latest swift docker:
root@50ad2ae7e8d5:/# swift --version
Swift version 5.8 (swift-5.8-RELEASE)
Target: x86_64-unknown-linux-gnu
Activity
AnthonyLatsis commentedon Apr 19, 2023
cc @parkera @compnerd (sorry, not sure who to ping about XCTest)
It seems like
ExpectedFailure
is Darwin-only for some reason.compnerd commentedon Apr 19, 2023
Hmm, I suspect that this is just API divergence and swift-corelibs-xctest has not been updated for the API changes for Xcode 12.5+. We should be able to support this.
[-]test that calls XCTExpectFailure does not compile on linux[/-][+]Implement `XCTExpectFailure()`[/+]grynspan commentedon Sep 12, 2023
Blocked by #348
XCTExpectFailure
pointfreeco/swift-issue-reporting#75