Skip to content

Implement XCTExpectFailure() #438

Open
@turboturnip

Description

@turboturnip

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions