From aa09c062aa02e650560535eaf0e649ba32fe2de2 Mon Sep 17 00:00:00 2001 From: marcprux Date: Tue, 10 Mar 2026 23:57:37 -0400 Subject: [PATCH 1/2] Support Swift Testing --- Package.swift | 2 +- Plugins/SkipPlugin/SkipPlugin.swift | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index 59ab637..9890e40 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.9 +// swift-tools-version: 5.10 import PackageDescription let package = Package( diff --git a/Plugins/SkipPlugin/SkipPlugin.swift b/Plugins/SkipPlugin/SkipPlugin.swift index 6a8c0a0..e83b49d 100644 --- a/Plugins/SkipPlugin/SkipPlugin.swift +++ b/Plugins/SkipPlugin/SkipPlugin.swift @@ -267,7 +267,7 @@ import PackagePlugin let sourceBase = URL(fileURLWithPath: isTest ? "src/test" : "src/main", isDirectory: true, relativeTo: outputBase) var buildArguments = [ - "transpile", + "skipstone", "--project", swiftSourceTarget.directory.string, "--skip-folder", skipFolder.string, "--sourcehash", sourcehashOutputPath.string, @@ -344,6 +344,17 @@ import PackagePlugin appendArguments(["--skip-bridge-output", skipBridgeOutputDir.string]) } + // auto-generate XCSkipTests.swift test harness for test targets that don't already have one + if isTest { + let hasTestHarness = target.sourceFiles(withSuffix: "swift").contains(where: { $0.path.lastComponent == "XCSkipTests.swift" }) + if !hasTestHarness { + let testHarnessOutputDir = outputFolder.appending(subpath: "SkipTestHarness") + let testHarnessPath = testHarnessOutputDir.appending(subpath: "XCSkipTests.swift") + outputFiles.append(testHarnessPath) + appendArguments(["--test-harness-output", testHarnessPath.string]) + } + } + appendArguments(buildModuleArgs) //Diagnostics.remark("invoke skip \(buildArguments.joined(separator: " "))") From 56b8a72a595f6e45cf75a73965c3a5f5b50aa907 Mon Sep 17 00:00:00 2001 From: marcprux Date: Wed, 11 Mar 2026 01:57:22 -0400 Subject: [PATCH 2/2] Update tests --- Tests/SkipDriveTests/SkipDriveTests.swift | 73 +++++++++++------------ 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/Tests/SkipDriveTests/SkipDriveTests.swift b/Tests/SkipDriveTests/SkipDriveTests.swift index 242a7b8..637a577 100644 --- a/Tests/SkipDriveTests/SkipDriveTests.swift +++ b/Tests/SkipDriveTests/SkipDriveTests.swift @@ -212,9 +212,8 @@ class SkipCommandTests : XCTestCase { ├─ HelloSkipTests.swift ├─ Resources │ └─ TestData.json - ├─ Skip - │ └─ skip.yml - └─ XCSkipTests.swift + └─ Skip + └─ skip.yml """) } @@ -326,9 +325,8 @@ class SkipCommandTests : XCTestCase { ├─ DemoTests.swift ├─ Resources │ └─ TestData.json - ├─ Skip - │ └─ skip.yml - └─ XCSkipTests.swift + └─ Skip + └─ skip.yml """) @@ -448,9 +446,9 @@ class SkipCommandTests : XCTestCase { │ ├─ DemoTests.swift │ ├─ Resources │ │ └─ TestData.json - │ ├─ Skip - │ │ └─ skip.yml - │ └─ XCSkipTests.swift + │ └─ Skip + │ └─ skip.yml + │ └─ empty.png """) @@ -576,9 +574,9 @@ class SkipCommandTests : XCTestCase { │ ├─ DemoTests.swift │ ├─ Resources │ │ └─ TestData.json - │ ├─ Skip - │ │ └─ skip.yml - │ └─ XCSkipTests.swift + │ └─ Skip + │ └─ skip.yml + │ └─ empty.png """) @@ -721,9 +719,9 @@ class SkipCommandTests : XCTestCase { │ ├─ DemoTests.swift │ ├─ Resources │ │ └─ TestData.json - │ ├─ Skip - │ │ └─ skip.yml - │ └─ XCSkipTests.swift + │ └─ Skip + │ └─ skip.yml + │ └─ empty.png """) @@ -888,16 +886,15 @@ class SkipCommandTests : XCTestCase { │ ├─ HelloSkipModelTests.swift │ ├─ Resources │ │ └─ TestData.json - │ ├─ Skip - │ │ └─ skip.yml - │ └─ XCSkipTests.swift + │ └─ Skip + │ └─ skip.yml + │ └─ HelloSkipTests ├─ HelloSkipTests.swift ├─ Resources │ └─ TestData.json - ├─ Skip - │ └─ skip.yml - └─ XCSkipTests.swift + └─ Skip + └─ skip.yml """) @@ -966,37 +963,36 @@ class SkipCommandTests : XCTestCase { │ ├─ CoolATests.swift │ ├─ Resources │ │ └─ TestData.json - │ ├─ Skip - │ │ └─ skip.yml - │ └─ XCSkipTests.swift + │ └─ Skip + │ └─ skip.yml + │ ├─ CoolBTests │ ├─ CoolBTests.swift │ ├─ Resources │ │ └─ TestData.json - │ ├─ Skip - │ │ └─ skip.yml - │ └─ XCSkipTests.swift + │ └─ Skip + │ └─ skip.yml + │ ├─ CoolCTests │ ├─ CoolCTests.swift │ ├─ Resources │ │ └─ TestData.json - │ ├─ Skip - │ │ └─ skip.yml - │ └─ XCSkipTests.swift + │ └─ Skip + │ └─ skip.yml + │ ├─ CoolDTests │ ├─ CoolDTests.swift │ ├─ Resources │ │ └─ TestData.json - │ ├─ Skip - │ │ └─ skip.yml - │ └─ XCSkipTests.swift + │ └─ Skip + │ └─ skip.yml + │ └─ CoolETests ├─ CoolETests.swift ├─ Resources │ └─ TestData.json - ├─ Skip - │ └─ skip.yml - └─ XCSkipTests.swift + └─ Skip + └─ skip.yml """) } @@ -1045,9 +1041,8 @@ class SkipCommandTests : XCTestCase { ├─ NeatATests.swift ├─ Resources │ └─ TestData.json - ├─ Skip - │ └─ skip.yml - └─ XCSkipTests.swift + └─ Skip + └─ skip.yml """) }