From 1dbf4c643d34935a48d1d17edf1adb8b8b17c51b Mon Sep 17 00:00:00 2001 From: Thibaut Schmitt Date: Wed, 30 Apr 2025 12:03:57 +0200 Subject: [PATCH] Fix tests for Jenkins that always build for iOS --- Sources/ResgenSwift/Strings/Twine/Twine.swift | 10 ++++- Sources/ToolCore/Shell.swift | 37 +++++-------------- Sources/ToolCore/StringExtensions.swift | 4 ++ .../Analytics/AnalyticsDefinitionTests.swift | 4 ++ .../Analytics/AnalyticsGeneratorTests.swift | 10 +++-- .../Analytics/AnalyticsSectionTests.swift | 4 ++ Tests/ResgenSwiftTests/ResgenSwiftTests.swift | 5 +-- 7 files changed, 38 insertions(+), 36 deletions(-) diff --git a/Sources/ResgenSwift/Strings/Twine/Twine.swift b/Sources/ResgenSwift/Strings/Twine/Twine.swift index 7af478d..b45ef00 100644 --- a/Sources/ResgenSwift/Strings/Twine/Twine.swift +++ b/Sources/ResgenSwift/Strings/Twine/Twine.swift @@ -22,8 +22,14 @@ struct Twine: ParsableCommand { static let toolName = "Twine" static let defaultExtensionName = "String" - static let twineExecutable = "\(FileManager.default.homeDirectoryForCurrentUser.relativePath)/scripts/twine/twine" - + static let twineExecutable: String = { + #if os(macOS) + "\(FileManager.default.homeDirectoryForCurrentUser.relativePath)/scripts/twine/twine" + #else + fatalError("This command should run on Mac only") + #endif + }() + // MARK: - Command Options @OptionGroup var options: TwineOptions diff --git a/Sources/ToolCore/Shell.swift b/Sources/ToolCore/Shell.swift index 0bcefdc..806d202 100644 --- a/Sources/ToolCore/Shell.swift +++ b/Sources/ToolCore/Shell.swift @@ -12,35 +12,13 @@ public class Shell { public static var environment: [String: String] { ProcessInfo.processInfo.environment } - -// @discardableResult -// public static func shell(launchPath: String = "/usr/bin/env", _ args: String...) -> (terminationStatus: Int32, output: String?) { -// let task = Process() -// task.launchPath = launchPath -// task.arguments = args -// -// var currentEnv = ProcessInfo.processInfo.environment -// for (key, value) in environment { -// currentEnv[key] = value -// } -// task.environment = currentEnv -// -// let pipe = Pipe() -// task.standardOutput = pipe -// try? task.run() -// task.waitUntilExit() -// -// let data = pipe.fileHandleForReading.readDataToEndOfFile() -// -// guard let output: String = String(data: data, encoding: .utf8) else { -// return (terminationStatus: task.terminationStatus, output: nil) -// } -// -// return (terminationStatus: task.terminationStatus, output: output) -// } - + @discardableResult - public static func shell(launchPath: String = "/usr/bin/env", _ args: [String]) -> (terminationStatus: Int32, output: String?) { + public static func shell( + launchPath: String = "/usr/bin/env", + _ args: [String] + ) -> (terminationStatus: Int32, output: String?) { + #if os(macOS) let task = Process() task.launchPath = launchPath task.arguments = args @@ -63,5 +41,8 @@ public class Shell { } return (terminationStatus: task.terminationStatus, output: output) + #else + fatalError("Shell is only available on Mac") + #endif } } diff --git a/Sources/ToolCore/StringExtensions.swift b/Sources/ToolCore/StringExtensions.swift index 401f7a7..4878290 100644 --- a/Sources/ToolCore/StringExtensions.swift +++ b/Sources/ToolCore/StringExtensions.swift @@ -60,7 +60,11 @@ public extension String { func replaceTiltWithHomeDirectoryPath() -> Self { // See NSString.expandingTildeInPath + #if os(macOS) replacingOccurrences(of: "~", with: "\(FileManager.default.homeDirectoryForCurrentUser.relativePath)") + #else + fatalError("This command should run on Mac only") + #endif } func colorComponent() -> (alpha: String, red: String, green: String, blue: String) { diff --git a/Tests/ResgenSwiftTests/Analytics/AnalyticsDefinitionTests.swift b/Tests/ResgenSwiftTests/Analytics/AnalyticsDefinitionTests.swift index 4ed4bbe..acd0a1d 100644 --- a/Tests/ResgenSwiftTests/Analytics/AnalyticsDefinitionTests.swift +++ b/Tests/ResgenSwiftTests/Analytics/AnalyticsDefinitionTests.swift @@ -5,6 +5,8 @@ // Created by Loris Perret on 06/12/2023. // +#if os(macOS) + import Foundation import XCTest @@ -135,3 +137,5 @@ final class AnalyticsDefinitionTests: XCTestCase { XCTAssertEqual(propertyEvent.adaptForXCTest(), expectEvent.adaptForXCTest()) } } + +#endif diff --git a/Tests/ResgenSwiftTests/Analytics/AnalyticsGeneratorTests.swift b/Tests/ResgenSwiftTests/Analytics/AnalyticsGeneratorTests.swift index 6d98221..f85522f 100644 --- a/Tests/ResgenSwiftTests/Analytics/AnalyticsGeneratorTests.swift +++ b/Tests/ResgenSwiftTests/Analytics/AnalyticsGeneratorTests.swift @@ -5,6 +5,8 @@ // Created by Thibaut Schmitt on 06/09/2022. // +#if os(macOS) + import Foundation import XCTest import ToolCore @@ -58,7 +60,7 @@ final class AnalyticsGeneratorTests: XCTestCase { extensionName: "GenAnalytics") // Expect Analytics let expect = """ - // Generated by ResgenSwift.Analytics 1.2 + // Generated by ResgenSwift.Analytics \(ResgenSwiftVersion) import FirebaseAnalytics @@ -229,7 +231,7 @@ final class AnalyticsGeneratorTests: XCTestCase { extensionName: "GenAnalytics") // Expect Analytics let expect = """ - // Generated by ResgenSwift.Analytics 1.2 + // Generated by ResgenSwift.Analytics \(ResgenSwiftVersion) import MatomoTracker @@ -422,7 +424,7 @@ final class AnalyticsGeneratorTests: XCTestCase { extensionName: "GenAnalytics") // Expect Analytics let expect = """ - // Generated by ResgenSwift.Analytics 1.2 + // Generated by ResgenSwift.Analytics \(ResgenSwiftVersion) import MatomoTracker import FirebaseAnalytics @@ -633,3 +635,5 @@ final class AnalyticsGeneratorTests: XCTestCase { XCTAssertEqual(extensionContent.adaptForXCTest(), expect.adaptForXCTest()) } } + +#endif diff --git a/Tests/ResgenSwiftTests/Analytics/AnalyticsSectionTests.swift b/Tests/ResgenSwiftTests/Analytics/AnalyticsSectionTests.swift index 47447e7..49dcd93 100644 --- a/Tests/ResgenSwiftTests/Analytics/AnalyticsSectionTests.swift +++ b/Tests/ResgenSwiftTests/Analytics/AnalyticsSectionTests.swift @@ -5,6 +5,8 @@ // Created by Loris Perret on 06/12/2023. // +#if os(macOS) + import Foundation import XCTest @@ -70,3 +72,5 @@ final class AnalyticsSectionTests: XCTestCase { XCTAssertFalse(match3) } } + +#endif diff --git a/Tests/ResgenSwiftTests/ResgenSwiftTests.swift b/Tests/ResgenSwiftTests/ResgenSwiftTests.swift index 508d37b..54e4dcc 100644 --- a/Tests/ResgenSwiftTests/ResgenSwiftTests.swift +++ b/Tests/ResgenSwiftTests/ResgenSwiftTests.swift @@ -14,9 +14,8 @@ final class ResgenCLITests: XCTestCase { return } - // Mac Catalyst won't have `Process`, but it is supported for executables. - #if !targetEnvironment(macCatalyst) - + // Process available on Mac only + #if os(macOS) let fooBinary = productsDirectory.appendingPathComponent("ResgenSwift") let process = Process()