Xcode 8 Beta - Convert to Current Swift Syntax Failed: Could not find test host
Asked Answered
T

7

118

I am receiving an error message when I try to use Xcode 8's Convert Wizard. After trying rebooting, downloading fresh code, and deleting my DerivedData files I cannot escape this error:

Convert to Current Swift Syntax Failed: Could not find test host

I have tried both options which are: Swift 2.3 and Swift 3. After I select a version I instantly get that error.

Here is a screenshot of the error:

Xcode 8 Convert Error Message

Typewrite answered 16/6, 2016 at 0:10 Comment(4)
I have the same issue here. Another, smaller, project converts fine.Cutlor
I am not sure what could be causing it. It lets me select the modules to convert. All modules produce the same error.Typewrite
What is the "test host"? It shows the file DerivedData/ding/Build/Products/Debug-iphoneos/ding.app/ding which does not exist after Deleting DerivedData folder.Cutlor
You can also check on Swift language version on the Build settings. Try to use a lower version of it.Loyola
R
313

This worked for me:

  1. Select the Xcode project in the lefthand browser.
  2. Click on your test target in the Project's General tab.
  3. Disclose "Testing". In my project the "Host Application" pulldown button was blank. Select your appropriate host application.
  4. Try building your test target now. If that succeeds then converting syntax should as well.

I had this problem after installing the Xcode 8 beta so I assume this is related.

Picture Credit to @karthikkck enter image description here

Rosewood answered 16/6, 2016 at 16:43 Comment(9)
That worked for me. Thanks! For clarification: Click and select your test target on the selector to the left of the General tab title.Typewrite
Thanks, worked for me too. Noting here a crazy detail that may help others too: the "Host Application" field already had the correct value filled, but just toggling it off and back to its original value made it work.Kirkwall
For what it's worth my Host Application was set to "custom". Changing to the only available option fixed the issue. Thanks!Underling
Thanks. It worked on the Xcode 8 official released version tooSnorter
Where to find the one mentioned in step 3? @SnorterDiplegia
I don't have a testing section in my general tab??Strumpet
This has happened on every single project of mine, and the solution above fixes it every time. Xcode is so frustrating at times... this is basically a bug - or at the very least there should be more helpful directions.Glassful
The solution worked for me, however, it wasn't eloquently written and confused me for a while, I ended up checking the general tab under preferences, @Typewrite clarification is what helped mePrehensile
I did this still the error is same, when doing it from Swift 3.1 to Swift 4Confederacy
D
62

It cost me a bit of time to find the "Host Application" pulldown mentioned in the otherwise very helpful answer by iluvcapra.

So this is what he meant:

This is where you find the pulldown menu. Select your main target.

This is where you find the pulldown menu

Dode answered 27/9, 2016 at 20:7 Comment(0)
P
23

I find easy fix for this, just edit your Scheme and disable tests.

enter image description here

And run conversion again.

Princess answered 20/9, 2016 at 12:55 Comment(2)
thanks! this worked for me, while the accepted answer did not.Gwennie
This. Even though I already had the "Host Application" properly set, it didn't work. Neither could I run the tests (getting the same error message...). the project doesn't actively use unit tests right now, but will have to look into that at some point...Maddie
A
5

+1 iluvcapra

Alternatively, use text editor to remove the following two items from your MyAppSwift.xcodeproj/project.pbxproj file, search for TEST_HOST

Now, re-open your project and run the convert wizard again.

    4EFFFAE51B53D5D8003CD25A /* Debug */ = {
        isa = XCBuildConfiguration;
        buildSettings = {
            BUNDLE_LOADER = "$(TEST_HOST)";
            FRAMEWORK_SEARCH_PATHS = (
                "$(SDKROOT)/Developer/Library/Frameworks",
                "$(inherited)",
            );
            GCC_PREPROCESSOR_DEFINITIONS = (
                "DEBUG=1",
                "$(inherited)",
            );
            INFOPLIST_FILE = "AF SwiftTests/Info.plist";
            LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
            PRODUCT_NAME = "FA SwiftTests";
            TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AF Swift.app/AF Swift";
        };
        name = Debug;
    };
    4EFFFAE61B53D5D8003CD25A /* Release */ = {
        isa = XCBuildConfiguration;
        buildSettings = {
            BUNDLE_LOADER = "$(TEST_HOST)";
            FRAMEWORK_SEARCH_PATHS = (
                "$(SDKROOT)/Developer/Library/Frameworks",
                "$(inherited)",
            );
            INFOPLIST_FILE = "AF SwiftTests/Info.plist";
            LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
            PRODUCT_NAME = "FA SwiftTests";
            TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AF Swift.app/AF Swift";
        };
        name = Release;
    };
Archiplasm answered 17/9, 2016 at 8:57 Comment(0)
S
5

enter image description here

Please try these Steps:

  1. Select your project on the left side of Xcode.
  2. Go to Targets and select your Project Tests.
  3. Select the General Tab and select Host Application drop down and choose your Host Application.
  4. Convert or Run your project.

Trying these steps worked for me.

Stearn answered 28/9, 2017 at 5:20 Comment(0)
C
0

In my case I deleted my tests target, then re-added it using the + below targets and selecting "iOs Unit Testing Bundle"

For some reason this got a compile error, so I changed the "Per-configuration Intermediate Build Files Path: for my test target to $(PROJECT_TEMP_DIR)/$(CONFIGURATION) for both debug and release. This allowed the compile to work.

Chasteen answered 13/6, 2017 at 10:54 Comment(0)
C
-1

Fix this in 3 steps:

  1. First delete your test target
  2. The select Edit -> Convert -> To current Swift syntax... and perform the conversion
  3. Then add a new test target
Claybourne answered 26/7, 2017 at 7:33 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.