Skip to content

Implement XCTExpectFailure() #438

@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

Activity

AnthonyLatsis

AnthonyLatsis commented on Apr 19, 2023

@AnthonyLatsis

cc @parkera @compnerd (sorry, not sure who to ping about XCTest)

It seems like ExpectedFailure is Darwin-only for some reason.

compnerd

compnerd commented on Apr 19, 2023

@compnerd
Member

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.

transferred this issue fromswiftlang/swifton Apr 19, 2023
changed the title [-]test that calls XCTExpectFailure does not compile on linux[/-] [+]Implement `XCTExpectFailure()`[/+] on Sep 5, 2023
grynspan

grynspan commented on Sep 12, 2023

@grynspan
Contributor

Blocked by #348

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @compnerd@grynspan@turboturnip@AnthonyLatsis

        Issue actions

          Implement `XCTExpectFailure()` · Issue #438 · swiftlang/swift-corelibs-xctest