diff --git a/.github/workflows/CI-iOS.yml b/.github/workflows/CI-iOS.yml index 7aa055f7..7032f78f 100644 --- a/.github/workflows/CI-iOS.yml +++ b/.github/workflows/CI-iOS.yml @@ -12,7 +12,7 @@ jobs: # This workflow contains a single job called "build-and-test" build-and-test: # The type of runner that the job will run on - runs-on: macos-15-xlarge + runs-on: macos-26-xlarge timeout-minutes: 8 @@ -22,10 +22,10 @@ jobs: - uses: actions/checkout@v4 - name: Select Xcode - run: sudo xcode-select -switch /Applications/Xcode_16.2.app + run: sudo xcode-select -switch /Applications/Xcode_26.0.app - name: Xcode version run: /usr/bin/xcodebuild -version - name: Build and Test - run: xcodebuild clean build test -workspace EssentialApp/EssentialApp.xcworkspace -scheme "CI_iOS" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -sdk iphonesimulator -destination "platform=iOS Simulator,name=iPhone 16 Pro,OS=18.2" ONLY_ACTIVE_ARCH=YES + run: xcodebuild clean build test -workspace EssentialApp/EssentialApp.xcworkspace -scheme "CI_iOS" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -sdk iphonesimulator -destination "platform=iOS Simulator,name=iPhone 17 Pro,OS=26.0" ONLY_ACTIVE_ARCH=YES diff --git a/.github/workflows/CI-macOS.yml b/.github/workflows/CI-macOS.yml index eaa4a21c..dd5e0baa 100644 --- a/.github/workflows/CI-macOS.yml +++ b/.github/workflows/CI-macOS.yml @@ -12,7 +12,7 @@ jobs: # This workflow contains a single job called "build-and-test" build-and-test: # The type of runner that the job will run on - runs-on: macos-15 + runs-on: macos-26 timeout-minutes: 8 @@ -22,7 +22,7 @@ jobs: - uses: actions/checkout@v4 - name: Select Xcode - run: sudo xcode-select -switch /Applications/Xcode_16.2.app + run: sudo xcode-select -switch /Applications/Xcode_26.0.app - name: Xcode version run: /usr/bin/xcodebuild -version diff --git a/.github/workflows/Deploy.yml b/.github/workflows/Deploy.yml index 825edb0a..3e6fbef3 100644 --- a/.github/workflows/Deploy.yml +++ b/.github/workflows/Deploy.yml @@ -12,7 +12,7 @@ jobs: # This workflow contains a single job called "build-and-deploy" build-and-deploy: # The type of runner that the job will run on - runs-on: macos-15 + runs-on: macos-26 # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -36,7 +36,7 @@ jobs: security set-key-partition-list -S apple-tool:,apple: -s -k "" ~/Library/Keychains/build.keychain - name: Select Xcode - run: sudo xcode-select -switch /Applications/Xcode_16.2.app + run: sudo xcode-select -switch /Applications/Xcode_26.0.app - name: Xcode version run: /usr/bin/xcodebuild -version diff --git a/EssentialApp/EssentialApp.xcodeproj/project.pbxproj b/EssentialApp/EssentialApp.xcodeproj/project.pbxproj index 432b7726..6b7dadb1 100644 --- a/EssentialApp/EssentialApp.xcodeproj/project.pbxproj +++ b/EssentialApp/EssentialApp.xcodeproj/project.pbxproj @@ -248,7 +248,7 @@ attributes = { BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 1120; - LastUpgradeCheck = 1620; + LastUpgradeCheck = 2600; ORGANIZATIONNAME = "Essential Developer"; TargetAttributes = { 0895DA82234B3B950031BB2D = { @@ -420,7 +420,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -479,7 +479,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; diff --git a/EssentialApp/EssentialApp.xcworkspace/xcshareddata/xcschemes/CI_iOS.xcscheme b/EssentialApp/EssentialApp.xcworkspace/xcshareddata/xcschemes/CI_iOS.xcscheme index 99bad1cf..862bfbe7 100644 --- a/EssentialApp/EssentialApp.xcworkspace/xcshareddata/xcschemes/CI_iOS.xcscheme +++ b/EssentialApp/EssentialApp.xcworkspace/xcshareddata/xcschemes/CI_iOS.xcscheme @@ -1,6 +1,6 @@ ListViewController { + ) throws -> ListViewController { let sut = SceneDelegate(httpClient: httpClient, store: store) - sut.window = UIWindow(frame: CGRect(x: 0, y: 0, width: 390, height: 1)) + let dummyScene = try XCTUnwrap((UIWindowScene.self as NSObject.Type).init() as? UIWindowScene) + sut.window = UIWindow(windowScene: dummyScene) + sut.window?.frame = CGRect(x: 0, y: 0, width: 390, height: 1) sut.configureWindow() let nav = sut.window?.rootViewController as? UINavigationController diff --git a/EssentialApp/EssentialAppTests/SceneDelegateTests.swift b/EssentialApp/EssentialAppTests/SceneDelegateTests.swift index 8a81a217..a5dc02f2 100644 --- a/EssentialApp/EssentialAppTests/SceneDelegateTests.swift +++ b/EssentialApp/EssentialAppTests/SceneDelegateTests.swift @@ -8,9 +8,10 @@ import EssentialFeediOS class SceneDelegateTests: XCTestCase { - func test_configureWindow_setsWindowAsKeyAndVisible() { - let window = UIWindowSpy() + func test_configureWindow_setsWindowAsKeyAndVisible() throws { let sut = SceneDelegate() + + let window = try UIWindowSpy.make() sut.window = window sut.configureWindow() @@ -18,10 +19,10 @@ class SceneDelegateTests: XCTestCase { XCTAssertEqual(window.makeKeyAndVisibleCallCount, 1, "Expected to make window key and visible") } - func test_configureWindow_configuresRootViewController() { + func test_configureWindow_configuresRootViewController() throws { let sut = SceneDelegate() - sut.window = UIWindowSpy() - + sut.window = try UIWindowSpy.make() + sut.configureWindow() let root = sut.window?.rootViewController @@ -35,6 +36,11 @@ class SceneDelegateTests: XCTestCase { private class UIWindowSpy: UIWindow { var makeKeyAndVisibleCallCount = 0 + static func make() throws -> UIWindowSpy { + let dummyScene = try XCTUnwrap((UIWindowScene.self as NSObject.Type).init() as? UIWindowScene) + return UIWindowSpy(windowScene: dummyScene) + } + override func makeKeyAndVisible() { makeKeyAndVisibleCallCount += 1 } diff --git a/EssentialFeed/EssentialFeed.xcodeproj/project.pbxproj b/EssentialFeed/EssentialFeed.xcodeproj/project.pbxproj index b48e5b95..a048d9ac 100644 --- a/EssentialFeed/EssentialFeed.xcodeproj/project.pbxproj +++ b/EssentialFeed/EssentialFeed.xcodeproj/project.pbxproj @@ -1054,7 +1054,7 @@ attributes = { BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 1020; - LastUpgradeCheck = 1620; + LastUpgradeCheck = 2600; ORGANIZATIONNAME = "Essential Developer"; TargetAttributes = { 080EDEF021B6DA7E00813479 = { @@ -1438,8 +1438,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - MACOSX_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; + MACOSX_DEPLOYMENT_TARGET = 26.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -1503,8 +1503,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - MACOSX_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; + MACOSX_DEPLOYMENT_TARGET = 26.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; diff --git a/EssentialFeed/EssentialFeed.xcodeproj/xcshareddata/xcschemes/CI_macOS.xcscheme b/EssentialFeed/EssentialFeed.xcodeproj/xcshareddata/xcschemes/CI_macOS.xcscheme index c58f521f..80144bc0 100644 --- a/EssentialFeed/EssentialFeed.xcodeproj/xcshareddata/xcschemes/CI_macOS.xcscheme +++ b/EssentialFeed/EssentialFeed.xcodeproj/xcshareddata/xcschemes/CI_macOS.xcscheme @@ -1,6 +1,6 @@