From 2fe8ead143f641c7cf684601fa195cf8f36f485f Mon Sep 17 00:00:00 2001 From: giginet Date: Tue, 10 Oct 2023 10:48:48 +0900 Subject: [PATCH 1/3] Add test case to check Info.plist keys --- Tests/ScipioKitTests/RunnerTests.swift | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Tests/ScipioKitTests/RunnerTests.swift b/Tests/ScipioKitTests/RunnerTests.swift index 5a3ca228..84c06a24 100644 --- a/Tests/ScipioKitTests/RunnerTests.swift +++ b/Tests/ScipioKitTests/RunnerTests.swift @@ -15,11 +15,25 @@ private let clangPackagePath = fixturePath.appendingPathComponent("ClangPackage" private let clangPackageWithCustomModuleMapPath = fixturePath.appendingPathComponent("ClangPackageWithCustomModuleMap") private let clangPackageWithUmbrellaDirectoryPath = fixturePath.appendingPathComponent("ClangPackageWithUmbrellaDirectory") +private struct InfoPlist: Decodable { + var bundleVersion: String + var shortVersionString: String + var bundleExecutable: String + + enum CodingKeys: String, CodingKey { + case bundleVersion = "CFBundleVersion" + case shortVersionString = "CFShortVersionString" + case bundleExecutable = "CFBundleExecutable" + } +} + final class RunnerTests: XCTestCase { private let fileManager: FileManager = .default lazy var tempDir = fileManager.temporaryDirectory lazy var frameworkOutputDir = tempDir.appendingPathComponent("XCFrameworks") + private let plistDecoder: PropertyListDecoder = .init() + override class func setUp() { LoggingSystem.bootstrap { _ in SwiftLogNoOpLogHandler() } @@ -75,6 +89,15 @@ final class RunnerTests: XCTestCase { "Binary should be a dynamic library" ) + let infoPlistPath = deviceFramework.appendingPathComponent("Info.plist") + let infoPlistData = try XCTUnwrap( + fileManager.contents(atPath: infoPlistPath.path), + "Info.plist should be exist" + ) + + let infoPlist = try plistDecoder.decode(InfoPlist.self, from: infoPlistData) + XCTAssertEqual(infoPlist.bundleExecutable, library) + XCTAssertFalse(fileManager.fileExists(atPath: simulatorFramework.path), "Should not create Simulator framework") } From 557061e130d93ea70937902bf72342e3db630458 Mon Sep 17 00:00:00 2001 From: giginet Date: Tue, 10 Oct 2023 11:00:32 +0900 Subject: [PATCH 2/3] Set versions to Info.plist --- Sources/ScipioKit/Producer/PIF/PIFGenerator.swift | 4 ++++ Tests/ScipioKitTests/RunnerTests.swift | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Sources/ScipioKit/Producer/PIF/PIFGenerator.swift b/Sources/ScipioKit/Producer/PIF/PIFGenerator.swift index 2ee69136..db84ac88 100644 --- a/Sources/ScipioKit/Producer/PIF/PIFGenerator.swift +++ b/Sources/ScipioKit/Producer/PIF/PIFGenerator.swift @@ -210,7 +210,11 @@ private struct PIFLibraryTargetModifier { settings[.SKIP_INSTALL] = "NO" settings[.INSTALL_PATH] = "/usr/local/lib" settings[.ONLY_ACTIVE_ARCH] = "NO" + settings[.GENERATE_INFOPLIST_FILE] = "YES" + // These values are required to ship built frameworks to AppStore as embedded frameworks + settings[.MARKETING_VERSION] = "1.0" + settings[.CURRENT_PROJECT_VERSION] = "1" // Set framework type switch buildOptions.frameworkType { diff --git a/Tests/ScipioKitTests/RunnerTests.swift b/Tests/ScipioKitTests/RunnerTests.swift index 84c06a24..7c6ff4e1 100644 --- a/Tests/ScipioKitTests/RunnerTests.swift +++ b/Tests/ScipioKitTests/RunnerTests.swift @@ -17,12 +17,12 @@ private let clangPackageWithUmbrellaDirectoryPath = fixturePath.appendingPathCom private struct InfoPlist: Decodable { var bundleVersion: String - var shortVersionString: String + var bundleShortVersionString: String var bundleExecutable: String enum CodingKeys: String, CodingKey { case bundleVersion = "CFBundleVersion" - case shortVersionString = "CFShortVersionString" + case bundleShortVersionString = "CFBundleShortVersionString" case bundleExecutable = "CFBundleExecutable" } } From 42dfdbbcc3da0d74c7d5c45cf3ba8b4660a9affb Mon Sep 17 00:00:00 2001 From: giginet Date: Tue, 10 Oct 2023 11:09:39 +0900 Subject: [PATCH 3/3] Check versionString --- Tests/ScipioKitTests/RunnerTests.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Tests/ScipioKitTests/RunnerTests.swift b/Tests/ScipioKitTests/RunnerTests.swift index 7c6ff4e1..776a56a7 100644 --- a/Tests/ScipioKitTests/RunnerTests.swift +++ b/Tests/ScipioKitTests/RunnerTests.swift @@ -97,6 +97,8 @@ final class RunnerTests: XCTestCase { let infoPlist = try plistDecoder.decode(InfoPlist.self, from: infoPlistData) XCTAssertEqual(infoPlist.bundleExecutable, library) + XCTAssertEqual(infoPlist.bundleVersion, "1") + XCTAssertEqual(infoPlist.bundleShortVersionString, "1.0") XCTAssertFalse(fileManager.fileExists(atPath: simulatorFramework.path), "Should not create Simulator framework")