From 700a632f09f1d4fb6ec38bc872be781beb4a356b Mon Sep 17 00:00:00 2001 From: Dan Federman Date: Mon, 22 Apr 2024 22:40:49 -0700 Subject: [PATCH 1/4] Get watchOS tests running in CI --- .gitmodules | 3 - .../SecureEnclaveIntegrationTests.swift | 2 +- ...ePromptSecureEnclaveIntegrationTests.swift | 2 +- Tests/XCTest-watchOS | 1 - .../InterfaceController.swift | 15 +- Valet.xcodeproj/project.pbxproj | 258 +++++++++++++++--- .../xcschemes/Valet watchOS.xcscheme | 14 +- 7 files changed, 227 insertions(+), 68 deletions(-) delete mode 160000 Tests/XCTest-watchOS diff --git a/.gitmodules b/.gitmodules index 29ba6f23..e69de29b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "Tests/xctest-watchOS"] - path = Tests/XCTest-watchOS - url = https://github.com/dfed/XCTest-watchOS.git diff --git a/Tests/ValetIntegrationTests/SecureEnclaveIntegrationTests.swift b/Tests/ValetIntegrationTests/SecureEnclaveIntegrationTests.swift index f157fc1f..38bb4a2b 100644 --- a/Tests/ValetIntegrationTests/SecureEnclaveIntegrationTests.swift +++ b/Tests/ValetIntegrationTests/SecureEnclaveIntegrationTests.swift @@ -72,7 +72,7 @@ class SecureEnclaveIntegrationTests: XCTestCase func test_secureEnclaveSharedGroupValetsWithDifferingIdentifiers_canNotAccessSameData() throws { - guard testEnvironmentIsSigned() && testEnvironmentSupportsWhenPasscodeSet() else { + guard testEnvironmentIsSignedOrDoesNotRequireEntitlement() && testEnvironmentSupportsWhenPasscodeSet() else { return } diff --git a/Tests/ValetIntegrationTests/SinglePromptSecureEnclaveIntegrationTests.swift b/Tests/ValetIntegrationTests/SinglePromptSecureEnclaveIntegrationTests.swift index b9364303..4f803049 100644 --- a/Tests/ValetIntegrationTests/SinglePromptSecureEnclaveIntegrationTests.swift +++ b/Tests/ValetIntegrationTests/SinglePromptSecureEnclaveIntegrationTests.swift @@ -76,7 +76,7 @@ class SinglePromptSecureEnclaveIntegrationTests: XCTestCase func test_SinglePromptSecureEnclaveValetsWithDifferingIdentifiers_canNotAccessSameData() throws { - guard testEnvironmentIsSigned() && testEnvironmentSupportsWhenPasscodeSet() else { + guard testEnvironmentIsSignedOrDoesNotRequireEntitlement() && testEnvironmentSupportsWhenPasscodeSet() else { return } diff --git a/Tests/XCTest-watchOS b/Tests/XCTest-watchOS deleted file mode 160000 index 913a187a..00000000 --- a/Tests/XCTest-watchOS +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 913a187a1f946976ebe83181131caafd2a0782b6 diff --git a/Valet watchOS Test Host App Extension/InterfaceController.swift b/Valet watchOS Test Host App Extension/InterfaceController.swift index 7629802f..2aa3f4e2 100644 --- a/Valet watchOS Test Host App Extension/InterfaceController.swift +++ b/Valet watchOS Test Host App Extension/InterfaceController.swift @@ -16,19 +16,6 @@ import WatchKit import Foundation -import XCTest -class InterfaceController: WKInterfaceController { - - override func didAppear() { - super.didAppear() - - if XCTestCase.runAllTests() { - setTitle("Success!") - } else { - setTitle("Failure!") - } - } - -} +class InterfaceController: WKInterfaceController {} diff --git a/Valet.xcodeproj/project.pbxproj b/Valet.xcodeproj/project.pbxproj index 6d0b968b..f1f19eb4 100644 --- a/Valet.xcodeproj/project.pbxproj +++ b/Valet.xcodeproj/project.pbxproj @@ -162,7 +162,6 @@ 169E9A6F23D181DC001B69F5 /* VALSecureEnclaveValetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 169E9A6623D181DC001B69F5 /* VALSecureEnclaveValetTests.m */; }; 169FC990215ECFCE00C2D6BD /* Valet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; }; 169FC991215ECFCE00C2D6BD /* Valet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 169FC992215ECFCE00C2D6BD /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16D77541215BFC1D004F060C /* XCTest.framework */; }; 16B5856F1F71DBE00038EE30 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16B5856E1F71DBE00038EE30 /* AppDelegate.swift */; }; 16B585711F71DBE00038EE30 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16B585701F71DBE00038EE30 /* ViewController.swift */; }; 16B585731F71DBE00038EE30 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 16B585721F71DBE00038EE30 /* Assets.xcassets */; }; @@ -176,20 +175,22 @@ 16DF6B09204B496800F8E0A4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 16DF6B08204B496800F8E0A4 /* Assets.xcassets */; }; 16DF6B0D204B496800F8E0A4 /* Valet watchOS Test Host App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 16DF6AF3204B496800F8E0A4 /* Valet watchOS Test Host App.app */; }; 16DF6B1F204B4DA600F8E0A4 /* Valet.framework in Resources */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; }; - 3251BD06224C865E0007453B /* XCTest.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 16D77541215BFC1D004F060C /* XCTest.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 32644C24248313210037F517 /* SecItemTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FCFF22A9C95400FC1142 /* SecItemTests.swift */; }; - 32644C25248313210037F517 /* CloudIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0022A9C95400FC1142 /* CloudIntegrationTests.swift */; }; - 32644C2A248313210037F517 /* SinglePromptSecureEnclaveIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0622A9C95400FC1142 /* SinglePromptSecureEnclaveIntegrationTests.swift */; }; - 32644C2B248313210037F517 /* ValetIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0722A9C95400FC1142 /* ValetIntegrationTests.swift */; }; - 32644C2C248313210037F517 /* SecureEnclaveIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0822A9C95400FC1142 /* SecureEnclaveIntegrationTests.swift */; }; - 32644C2D248313210037F517 /* CloudAccessibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167E250623D62CAA00889121 /* CloudAccessibilityTests.swift */; }; - 32644C2E248313210037F517 /* SinglePromptSecureEnclaveTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0A22A9C95500FC1142 /* SinglePromptSecureEnclaveTests.swift */; }; - 32644C2F248313210037F517 /* SecureEnclaveTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0B22A9C95500FC1142 /* SecureEnclaveTests.swift */; }; - 32644C30248313210037F517 /* CloudTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0C22A9C95500FC1142 /* CloudTests.swift */; }; - 32644C31248313210037F517 /* ConfigurationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167E250F23D6328E00889121 /* ConfigurationTests.swift */; }; - 32644C32248313210037F517 /* ValetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0D22A9C95500FC1142 /* ValetTests.swift */; }; - 32644C33248313210037F517 /* MigrationErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167E250123D624EF00889121 /* MigrationErrorTests.swift */; }; - 32644C34248313210037F517 /* KeychainErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167E24FD23D6235000889121 /* KeychainErrorTests.swift */; }; + 321C3F9F2BD77F6600AB3952 /* SecItemTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FCFF22A9C95400FC1142 /* SecItemTests.swift */; }; + 321C3FA02BD77F6600AB3952 /* CloudIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0022A9C95400FC1142 /* CloudIntegrationTests.swift */; }; + 321C3FA12BD77F6600AB3952 /* KeychainIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DC88912475BA5F005A9BFA /* KeychainIntegrationTests.swift */; }; + 321C3FA22BD77F6600AB3952 /* SinglePromptSecureEnclaveIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0622A9C95400FC1142 /* SinglePromptSecureEnclaveIntegrationTests.swift */; }; + 321C3FA32BD77F6600AB3952 /* ValetIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0722A9C95400FC1142 /* ValetIntegrationTests.swift */; }; + 321C3FA42BD77F6600AB3952 /* SecureEnclaveIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0822A9C95400FC1142 /* SecureEnclaveIntegrationTests.swift */; }; + 321C3FA52BD77F6600AB3952 /* CloudAccessibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167E250623D62CAA00889121 /* CloudAccessibilityTests.swift */; }; + 321C3FA62BD77F6600AB3952 /* SinglePromptSecureEnclaveTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0A22A9C95500FC1142 /* SinglePromptSecureEnclaveTests.swift */; }; + 321C3FA72BD77F6600AB3952 /* SecureEnclaveTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0B22A9C95500FC1142 /* SecureEnclaveTests.swift */; }; + 321C3FA82BD77F6600AB3952 /* CloudTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0C22A9C95500FC1142 /* CloudTests.swift */; }; + 321C3FA92BD77F6600AB3952 /* ConfigurationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167E250F23D6328E00889121 /* ConfigurationTests.swift */; }; + 321C3FAA2BD77F6600AB3952 /* ValetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0D22A9C95500FC1142 /* ValetTests.swift */; }; + 321C3FAB2BD77F6600AB3952 /* MigrationErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167E250123D624EF00889121 /* MigrationErrorTests.swift */; }; + 321C3FAC2BD77F6600AB3952 /* KeychainErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167E24FD23D6235000889121 /* KeychainErrorTests.swift */; }; + 322CF5242BD77E6500B1F0D0 /* Valet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; }; + 322CF5252BD77E6500B1F0D0 /* Valet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 32DC88852475111D005A9BFA /* MigratableKeyValuePair.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DC88842475111D005A9BFA /* MigratableKeyValuePair.swift */; }; 32DC88862475111D005A9BFA /* MigratableKeyValuePair.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DC88842475111D005A9BFA /* MigratableKeyValuePair.swift */; }; 32DC88872475111D005A9BFA /* MigratableKeyValuePair.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DC88842475111D005A9BFA /* MigratableKeyValuePair.swift */; }; @@ -266,13 +267,6 @@ remoteGlobalIDString = 26E6827B1BA8B3F900EFF4EA; remoteInfo = "Valet iOS"; }; - 169FC994215ECFCF00C2D6BD /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16D7753C215BFC1D004F060C /* XCTest.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 16A0D5B92134D43E008D852B; - remoteInfo = XCTest; - }; 16C3B09D204B1E4C00B4D0B4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; @@ -308,6 +302,27 @@ remoteGlobalIDString = 16DF6AD9204B45EB00F8E0A4; remoteInfo = "Valet watchOS"; }; + 322CF5222BD77E2900B1F0D0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 16DF6AD9204B45EB00F8E0A4; + remoteInfo = "Valet watchOS"; + }; + 322CF5262BD77E6500B1F0D0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 16DF6AD9204B45EB00F8E0A4; + remoteInfo = "Valet watchOS"; + }; + 322CF5292BD77EAA00B1F0D0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 16DF6AFE204B496800F8E0A4; + remoteInfo = "Valet watchOS Test Host App Extension"; + }; 371150B81E2962FC004A45D4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; @@ -409,7 +424,6 @@ dstSubfolderSpec = 10; files = ( 169FC991215ECFCE00C2D6BD /* Valet.framework in Embed Frameworks */, - 3251BD06224C865E0007453B /* XCTest.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -436,6 +450,17 @@ name = "Embed Watch Content"; runOnlyForDeploymentPostprocessing = 0; }; + 322CF5282BD77E6500B1F0D0 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 322CF5252BD77E6500B1F0D0 /* Valet.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; 373E0A2628AD3CCC00024F8F /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -546,6 +571,8 @@ 16EB52701F71BE4100363869 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; 26E6827C1BA8B3F900EFF4EA /* Valet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Valet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 26E6828A1BA8B4B200EFF4EA /* Valet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Valet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 322CF5182BD77E1300B1F0D0 /* Valet watchOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Valet watchOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 322CF52B2BD77EBF00B1F0D0 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/WatchOS.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 32C1ED17224C85540063E91D /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/Interface.storyboard; sourceTree = ""; }; 32C1ED1B224C85660063E91D /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/Main.storyboard; sourceTree = ""; }; 32C1ED1C224C85820063E91D /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/Main.storyboard; sourceTree = ""; }; @@ -629,7 +656,6 @@ buildActionMask = 2147483647; files = ( 169FC990215ECFCE00C2D6BD /* Valet.framework in Frameworks */, - 169FC992215ECFCE00C2D6BD /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -647,6 +673,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 322CF5152BD77E1300B1F0D0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 322CF5242BD77E6500B1F0D0 /* Valet.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 371150A21E2962D8004A45D4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -808,6 +842,7 @@ 168909331F7199B50057F636 /* Frameworks */ = { isa = PBXGroup; children = ( + 322CF52B2BD77EBF00B1F0D0 /* XCTest.framework */, 16D7753C215BFC1D004F060C /* XCTest.xcodeproj */, 16EB52701F71BE4100363869 /* Security.framework */, 16EB526E1F71BE3D00363869 /* Security.framework */, @@ -938,6 +973,7 @@ 16DF6AFF204B496800F8E0A4 /* Valet watchOS Test Host App Extension.appex */, 1612FDD322A9CB2200FC1142 /* LegacyValet.framework */, 1612FE0822A9CC3E00FC1142 /* LegacyValet.framework */, + 322CF5182BD77E1300B1F0D0 /* Valet watchOS Tests.xctest */, ); name = Products; sourceTree = ""; @@ -1201,7 +1237,6 @@ ); dependencies = ( 16DF6B1D204B4AF800F8E0A4 /* PBXTargetDependency */, - 169FC995215ECFCF00C2D6BD /* PBXTargetDependency */, ); name = "Valet watchOS Test Host App Extension"; productName = "Valet watchOS Test Host App Extension"; @@ -1244,6 +1279,27 @@ productReference = 26E6828A1BA8B4B200EFF4EA /* Valet.framework */; productType = "com.apple.product-type.framework"; }; + 322CF5172BD77E1300B1F0D0 /* Valet watchOS Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 322CF5212BD77E1300B1F0D0 /* Build configuration list for PBXNativeTarget "Valet watchOS Tests" */; + buildPhases = ( + 322CF5142BD77E1300B1F0D0 /* Sources */, + 322CF5152BD77E1300B1F0D0 /* Frameworks */, + 322CF5162BD77E1300B1F0D0 /* Resources */, + 322CF5282BD77E6500B1F0D0 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 322CF5232BD77E2900B1F0D0 /* PBXTargetDependency */, + 322CF5272BD77E6500B1F0D0 /* PBXTargetDependency */, + 322CF52A2BD77EAA00B1F0D0 /* PBXTargetDependency */, + ); + name = "Valet watchOS Tests"; + productName = "Valet watchOS Tests"; + productReference = 322CF5182BD77E1300B1F0D0 /* Valet watchOS Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 371150A41E2962D8004A45D4 /* Valet iOS Test Host App */ = { isa = PBXNativeTarget; buildConfigurationList = 371150B41E2962D8004A45D4 /* Build configuration list for PBXNativeTarget "Valet iOS Test Host App" */; @@ -1333,7 +1389,7 @@ EA1E1F7B1A8C46080067C991 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0920; + LastSwiftUpdateCheck = 1530; LastUpgradeCheck = 1020; ORGANIZATIONNAME = "Square, Inc."; TargetAttributes = { @@ -1415,6 +1471,11 @@ LastSwiftMigration = 1100; ProvisioningStyle = Manual; }; + 322CF5172BD77E1300B1F0D0 = { + CreatedOnToolsVersion = 15.3; + ProvisioningStyle = Automatic; + TestTargetID = 16DF6AFE204B496800F8E0A4; + }; 371150A41E2962D8004A45D4 = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = 9XUJ7M53NG; @@ -1473,6 +1534,7 @@ 16C3B06C204B1DB800B4D0B4 /* Valet tvOS */, 16C3B096204B1E4C00B4D0B4 /* Valet tvOS Tests */, 16DF6AD9204B45EB00F8E0A4 /* Valet watchOS */, + 322CF5172BD77E1300B1F0D0 /* Valet watchOS Tests */, 371150A41E2962D8004A45D4 /* Valet iOS Test Host App */, 16B5856B1F71DBE00038EE30 /* Valet macOS Test Host App */, 165CDDC5204B26D400C96C2E /* Valet tvOS Test Host App */, @@ -1580,6 +1642,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 322CF5162BD77E1300B1F0D0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 371150A31E2962D8004A45D4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1731,19 +1800,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 32644C24248313210037F517 /* SecItemTests.swift in Sources */, - 32644C25248313210037F517 /* CloudIntegrationTests.swift in Sources */, - 32644C2A248313210037F517 /* SinglePromptSecureEnclaveIntegrationTests.swift in Sources */, - 32644C2B248313210037F517 /* ValetIntegrationTests.swift in Sources */, - 32644C2C248313210037F517 /* SecureEnclaveIntegrationTests.swift in Sources */, - 32644C2D248313210037F517 /* CloudAccessibilityTests.swift in Sources */, - 32644C2E248313210037F517 /* SinglePromptSecureEnclaveTests.swift in Sources */, - 32644C2F248313210037F517 /* SecureEnclaveTests.swift in Sources */, - 32644C30248313210037F517 /* CloudTests.swift in Sources */, - 32644C31248313210037F517 /* ConfigurationTests.swift in Sources */, - 32644C32248313210037F517 /* ValetTests.swift in Sources */, - 32644C33248313210037F517 /* MigrationErrorTests.swift in Sources */, - 32644C34248313210037F517 /* KeychainErrorTests.swift in Sources */, 16DF6B07204B496800F8E0A4 /* ExtensionDelegate.swift in Sources */, 16DF6B05204B496800F8E0A4 /* InterfaceController.swift in Sources */, ); @@ -1795,6 +1851,27 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 322CF5142BD77E1300B1F0D0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 321C3F9F2BD77F6600AB3952 /* SecItemTests.swift in Sources */, + 321C3FA02BD77F6600AB3952 /* CloudIntegrationTests.swift in Sources */, + 321C3FA12BD77F6600AB3952 /* KeychainIntegrationTests.swift in Sources */, + 321C3FA22BD77F6600AB3952 /* SinglePromptSecureEnclaveIntegrationTests.swift in Sources */, + 321C3FA32BD77F6600AB3952 /* ValetIntegrationTests.swift in Sources */, + 321C3FA42BD77F6600AB3952 /* SecureEnclaveIntegrationTests.swift in Sources */, + 321C3FA52BD77F6600AB3952 /* CloudAccessibilityTests.swift in Sources */, + 321C3FA62BD77F6600AB3952 /* SinglePromptSecureEnclaveTests.swift in Sources */, + 321C3FA72BD77F6600AB3952 /* SecureEnclaveTests.swift in Sources */, + 321C3FA82BD77F6600AB3952 /* CloudTests.swift in Sources */, + 321C3FA92BD77F6600AB3952 /* ConfigurationTests.swift in Sources */, + 321C3FAA2BD77F6600AB3952 /* ValetTests.swift in Sources */, + 321C3FAB2BD77F6600AB3952 /* MigrationErrorTests.swift in Sources */, + 321C3FAC2BD77F6600AB3952 /* KeychainErrorTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 371150A11E2962D8004A45D4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1903,11 +1980,6 @@ target = 26E6827B1BA8B3F900EFF4EA /* Valet iOS */; targetProxy = 1689093A1F7199D60057F636 /* PBXContainerItemProxy */; }; - 169FC995215ECFCF00C2D6BD /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = XCTest; - targetProxy = 169FC994215ECFCF00C2D6BD /* PBXContainerItemProxy */; - }; 16C3B09E204B1E4C00B4D0B4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 16C3B06C204B1DB800B4D0B4 /* Valet tvOS */; @@ -1928,6 +2000,21 @@ target = 16DF6AD9204B45EB00F8E0A4 /* Valet watchOS */; targetProxy = 16DF6B1C204B4AF800F8E0A4 /* PBXContainerItemProxy */; }; + 322CF5232BD77E2900B1F0D0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 16DF6AD9204B45EB00F8E0A4 /* Valet watchOS */; + targetProxy = 322CF5222BD77E2900B1F0D0 /* PBXContainerItemProxy */; + }; + 322CF5272BD77E6500B1F0D0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 16DF6AD9204B45EB00F8E0A4 /* Valet watchOS */; + targetProxy = 322CF5262BD77E6500B1F0D0 /* PBXContainerItemProxy */; + }; + 322CF52A2BD77EAA00B1F0D0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 16DF6AFE204B496800F8E0A4 /* Valet watchOS Test Host App Extension */; + targetProxy = 322CF5292BD77EAA00B1F0D0 /* PBXContainerItemProxy */; + }; 371150B91E2962FC004A45D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 371150A41E2962D8004A45D4 /* Valet iOS Test Host App */; @@ -2673,6 +2760,80 @@ }; name = Release; }; + 322CF51F2BD77E1300B1F0D0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.squareup.Valet-watchOS-Tests.Valet-watchOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = "watchos watchsimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Valet watchOS Test Host App Extension.appex/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Valet watchOS Test Host App Extension"; + WATCHOS_DEPLOYMENT_TARGET = 4.0; + }; + name = Debug; + }; + 322CF5202BD77E1300B1F0D0 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.squareup.Valet-watchOS-Tests.Valet-watchOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = "watchos watchsimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Valet watchOS Test Host App Extension.appex/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Valet watchOS Test Host App Extension"; + WATCHOS_DEPLOYMENT_TARGET = 4.0; + }; + name = Release; + }; 371150B51E2962D8004A45D4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3078,6 +3239,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 322CF5212BD77E1300B1F0D0 /* Build configuration list for PBXNativeTarget "Valet watchOS Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 322CF51F2BD77E1300B1F0D0 /* Debug */, + 322CF5202BD77E1300B1F0D0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 371150B41E2962D8004A45D4 /* Build configuration list for PBXNativeTarget "Valet iOS Test Host App" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Valet.xcodeproj/xcshareddata/xcschemes/Valet watchOS.xcscheme b/Valet.xcodeproj/xcshareddata/xcschemes/Valet watchOS.xcscheme index da5ff3a4..8f5edfac 100644 --- a/Valet.xcodeproj/xcshareddata/xcschemes/Valet watchOS.xcscheme +++ b/Valet.xcodeproj/xcshareddata/xcschemes/Valet watchOS.xcscheme @@ -28,9 +28,17 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> + + + + - - - - Date: Mon, 22 Apr 2024 22:44:57 -0700 Subject: [PATCH 2/4] Run the tests --- Scripts/build.swift | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Scripts/build.swift b/Scripts/build.swift index 7a14c9aa..8012ae54 100755 --- a/Scripts/build.swift +++ b/Scripts/build.swift @@ -133,15 +133,15 @@ enum Platform: String, CustomStringConvertible { .macOS_11, .macOS_12, .macOS_13, - .macOS_14: - return true - - case .watchOS_6, - .watchOS_7, + .macOS_14, .watchOS_8, .watchOS_9, .watchOS_10: - // watchOS does not support unit testing (yet?). + return true + + case .watchOS_6, + .watchOS_7: + // watchOS did not support unit testing prior to Xcode 12.5. return false } } From c6cf43a8caa863625a2d0075550b1f881ff04066 Mon Sep 17 00:00:00 2001 From: Dan Federman Date: Tue, 23 Apr 2024 08:25:42 -0700 Subject: [PATCH 3/4] Parallelize (#312) --- .github/workflows/ci.yml | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 41a9804c..518031f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,8 +17,12 @@ jobs: strategy: matrix: platforms: [ - 'iOS_14,tvOS_14,watchOS_7', - 'iOS_13,tvOS_13,watchOS_6', + 'iOS_14', + 'tvOS_14', + 'watchOS_7', + 'iOS_13', + 'tvOS_13', + 'watchOS_6', ] fail-fast: false timeout-minutes: 30 @@ -42,7 +46,9 @@ jobs: strategy: matrix: platforms: [ - 'iOS_15,tvOS_15,watchOS_8', + 'iOS_15', + 'tvOS_15', + 'watchOS_8', ] fail-fast: false timeout-minutes: 30 @@ -64,8 +70,12 @@ jobs: strategy: matrix: platforms: [ - 'iOS_16,tvOS_16,watchOS_9', - 'iOS_17,tvOS_17,watchOS_10', + 'iOS_16', + 'tvOS_16', + 'watchOS_9', + 'iOS_17', + 'tvOS_17', + 'watchOS_10', ] fail-fast: false timeout-minutes: 30 @@ -116,8 +126,12 @@ jobs: strategy: matrix: platforms: [ - 'iOS_14,tvOS_14,watchOS_7', - 'iOS_13,tvOS_13,watchOS_6', + 'iOS_14', + 'tvOS_14', + 'watchOS_7', + 'iOS_13', + 'tvOS_13', + 'watchOS_6', 'macOS_11', ] fail-fast: false @@ -145,7 +159,9 @@ jobs: strategy: matrix: platforms: [ - 'iOS_15,tvOS_15,watchOS_8', + 'iOS_15', + 'tvOS_15', + 'watchOS_8', 'macOS_12', ] fail-fast: false @@ -167,7 +183,9 @@ jobs: strategy: matrix: platforms: [ - 'iOS_16,tvOS_16,watchOS_9', + 'iOS_16', + 'tvOS_16', + 'watchOS_9', 'macOS_13', ] fail-fast: false @@ -189,7 +207,9 @@ jobs: strategy: matrix: platforms: [ - 'iOS_17,tvOS_17,watchOS_10', + 'iOS_17', + 'tvOS_17', + 'watchOS_10', 'macOS_14', ] fail-fast: false From a292670bf946ee35d17899e77f2c29860e65b061 Mon Sep 17 00:00:00 2001 From: Dan Federman Date: Tue, 23 Apr 2024 08:33:48 -0700 Subject: [PATCH 4/4] Actually fail CI when tests fail (#313) * Actually fail CI when tests fail * Throw when we encounter errors * Remove builds with Xcode that do not support Swift Concurrency * Use appropriate Xcode for the job * More tests require signed environments now * Fix macOS 14 test sdk * Use correct simulator name * Do not embed watchOS * Massage compiler * Remove unnecessary Valet watchOS Test Host App.app * New watch host target * simpler * stop testing watchOS_8 * Xcode 13 or later --- .github/workflows/ci.yml | 71 +-- README.md | 2 +- Scripts/build.swift | 103 +--- .../ValetIntegrationTests.swift | 30 +- .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../Assets.xcassets/Contents.json | 6 + .../ContentView.swift | 26 + .../Preview Assets.xcassets/Contents.json | 6 + .../Valet_watchOS_Test_Host_AppApp.swift | 26 + Valet.xcodeproj/project.pbxproj | 580 +++++++++--------- ...t watchOS Test Host App Extension.xcscheme | 2 +- 12 files changed, 428 insertions(+), 448 deletions(-) create mode 100644 Valet watchOS Test Host App Watch App/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 Valet watchOS Test Host App Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Valet watchOS Test Host App Watch App/Assets.xcassets/Contents.json create mode 100644 Valet watchOS Test Host App Watch App/ContentView.swift create mode 100644 Valet watchOS Test Host App Watch App/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 Valet watchOS Test Host App Watch App/Valet_watchOS_Test_Host_AppApp.swift diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 518031f9..bcef53bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,18 +11,14 @@ concurrency: cancel-in-progress: true jobs: - xcode-build-12: - name: Xcode 12 Build - runs-on: macOS-11 + xcode-build-13: + name: Xcode 13 Build + runs-on: macOS-12 strategy: matrix: platforms: [ - 'iOS_14', - 'tvOS_14', - 'watchOS_7', - 'iOS_13', - 'tvOS_13', - 'watchOS_6', + 'iOS_15', + 'tvOS_15', ] fail-fast: false timeout-minutes: 30 @@ -32,23 +28,21 @@ jobs: - name: Bundle Install run: bundle install - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_12.5.1.app/Contents/Developer - - name: Prepare Simulator Runtimes - run: Scripts/github/prepare-simulators.sh ${{ matrix.platforms }} + run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app/Contents/Developer - name: Build and Test Framework run: Scripts/build.swift ${{ matrix.platforms }} xcode - name: Upload Coverage Reports if: success() run: Scripts/upload-coverage-reports.sh ${{ matrix.platforms }} - xcode-build-13: - name: Xcode 13 Build - runs-on: macOS-12 + xcode-build-14: + name: Xcode 14 Build + runs-on: macOS-14 strategy: matrix: platforms: [ - 'iOS_15', - 'tvOS_15', - 'watchOS_8', + 'iOS_16', + 'tvOS_16', + 'watchOS_9', ] fail-fast: false timeout-minutes: 30 @@ -58,7 +52,7 @@ jobs: - name: Bundle Install run: bundle install - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app/Contents/Developer + run: sudo xcode-select --switch /Applications/Xcode_14.3.1.app/Contents/Developer - name: Build and Test Framework run: Scripts/build.swift ${{ matrix.platforms }} xcode - name: Upload Coverage Reports @@ -70,9 +64,6 @@ jobs: strategy: matrix: platforms: [ - 'iOS_16', - 'tvOS_16', - 'watchOS_9', 'iOS_17', 'tvOS_17', 'watchOS_10', @@ -119,40 +110,6 @@ jobs: run: brew outdated carthage || brew upgrade carthage - name: Build Framework run: carthage build --verbose --no-skip-current --use-xcframeworks - spm-11: - name: SPM Build macOS 11 - runs-on: macOS-11 - timeout-minutes: 30 - strategy: - matrix: - platforms: [ - 'iOS_14', - 'tvOS_14', - 'watchOS_7', - 'iOS_13', - 'tvOS_13', - 'watchOS_6', - 'macOS_11', - ] - fail-fast: false - steps: - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Bundle Install - run: bundle install - - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_12.5.1.app/Contents/Developer - if: ${{ matrix.platforms == 'iOS_14,tvOS_14,watchOS_7' }} - - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_12.5.1.app/Contents/Developer - if: ${{ matrix.platforms == 'iOS_13,tvOS_13,watchOS_6' }} - - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_12.5.1.app/Contents/Developer - if: ${{ matrix.platforms == 'macOS_11' }} - - name: Prepare Simulator Runtimes - run: Scripts/github/prepare-simulators.sh ${{ matrix.platforms }} - - name: Build Framework - run: Scripts/build.swift ${{ matrix.platforms }} spm spm-12: name: SPM Build macOS 12 runs-on: macOS-12 @@ -196,7 +153,7 @@ jobs: - name: Bundle Install run: bundle install - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_14.3.app/Contents/Developer + run: sudo xcode-select --switch /Applications/Xcode_14.3.1.app/Contents/Developer - name: Prepare Simulator Runtimes run: Scripts/github/prepare-simulators.sh ${{ matrix.platforms }} - name: Build Framework diff --git a/README.md b/README.md index c70aa5ca..c0c51bd4 100644 --- a/README.md +++ b/README.md @@ -239,7 +239,7 @@ Valet guarantees that reading and writing operations will succeed as long as wri ## Requirements -* Xcode 12.5 or later. +* Xcode 13.0 or later. * iOS 9 or later. * tvOS 9 or later. * watchOS 2 or later. diff --git a/Scripts/build.swift b/Scripts/build.swift index 8012ae54..eade7424 100755 --- a/Scripts/build.swift +++ b/Scripts/build.swift @@ -21,32 +21,21 @@ enum TaskError: Error { } enum Platform: String, CustomStringConvertible { - case iOS_13 - case iOS_14 case iOS_15 case iOS_16 case iOS_17 - case tvOS_13 - case tvOS_14 case tvOS_15 case tvOS_16 case tvOS_17 - case macOS_11 case macOS_12 case macOS_13 case macOS_14 - case watchOS_6 - case watchOS_7 case watchOS_8 case watchOS_9 case watchOS_10 var destination: String { switch self { - case .iOS_13: - return "platform=iOS Simulator,OS=13.7,name=iPad Pro (12.9-inch) (4th generation)" - case .iOS_14: - return "platform=iOS Simulator,OS=14.4,name=iPad Pro (12.9-inch) (4th generation)" case .iOS_15: return "platform=iOS Simulator,OS=15.5,name=iPad Pro (12.9-inch) (5th generation)" case .iOS_16: @@ -54,10 +43,6 @@ enum Platform: String, CustomStringConvertible { case .iOS_17: return "platform=iOS Simulator,OS=17.4,name=iPad Pro (12.9-inch) (6th generation)" - case .tvOS_13: - return "platform=tvOS Simulator,OS=13.4,name=Apple TV" - case .tvOS_14: - return "platform=tvOS Simulator,OS=14.3,name=Apple TV" case .tvOS_15: return "platform=tvOS Simulator,OS=15.4,name=Apple TV" case .tvOS_16: @@ -65,87 +50,46 @@ enum Platform: String, CustomStringConvertible { case .tvOS_17: return "platform=tvOS Simulator,OS=17.4,name=Apple TV" - case .macOS_11, - .macOS_12, + case .macOS_12, .macOS_13, .macOS_14: return "platform=OS X" - case .watchOS_6: - return "OS=6.2.1,name=Apple Watch Series 4 - 44mm" - case .watchOS_7: - return "OS=7.2,name=Apple Watch Series 6 - 44mm" case .watchOS_8: return "OS=8.5,name=Apple Watch Series 6 - 44mm" case .watchOS_9: - return "OS=9.4,name=Apple Watch Series 6 - 44mm" + return "OS=9.4,name=Apple Watch Series 6 (44mm)" case .watchOS_10: - return "OS=10.4,name=Apple Watch Series 6 - 44mm" + return "OS=10.4,name=Apple Watch Series 9 (45mm)" } } var sdk: String { switch self { - case .iOS_13, - .iOS_14, - .iOS_15, + case .iOS_15, .iOS_16, .iOS_17: return "iphonesimulator" - case .tvOS_13, - .tvOS_14, - .tvOS_15, + case .tvOS_15, .tvOS_16, .tvOS_17: return "appletvsimulator" - case .macOS_11: - return "macosx11.1" case .macOS_12: return "macosx12.3" case .macOS_13: return "macosx13.3" case .macOS_14: - return "macosx14.0" + return "macosx14.4" - case .watchOS_6, - .watchOS_7, - .watchOS_8, + case .watchOS_8, .watchOS_9, .watchOS_10: return "watchsimulator" } } - var shouldTest: Bool { - switch self { - case .iOS_13, - .iOS_14, - .iOS_15, - .iOS_16, - .iOS_17, - .tvOS_13, - .tvOS_14, - .tvOS_15, - .tvOS_16, - .tvOS_17, - .macOS_11, - .macOS_12, - .macOS_13, - .macOS_14, - .watchOS_8, - .watchOS_9, - .watchOS_10: - return true - - case .watchOS_6, - .watchOS_7: - // watchOS did not support unit testing prior to Xcode 12.5. - return false - } - } - /// Whether the platform's Xcode version requires modern SPM integration in xcodebuild, given the removal of generate-xcodeproj. var requiresModernSPMIntegration: Bool { switch self { @@ -163,29 +107,22 @@ enum Platform: String, CustomStringConvertible { var scheme: String { switch self { - case .iOS_13, - .iOS_14, - .iOS_15, + case .iOS_15, .iOS_16, .iOS_17: return "Valet iOS" - case .tvOS_13, - .tvOS_14, - .tvOS_15, + case .tvOS_15, .tvOS_16, .tvOS_17: return "Valet tvOS" - case .macOS_11, - .macOS_12, + case .macOS_12, .macOS_13, .macOS_14: return "Valet Mac" - case .watchOS_6, - .watchOS_7, - .watchOS_8, + case .watchOS_8, .watchOS_9, .watchOS_10: return "Valet watchOS" @@ -271,27 +208,27 @@ enum Task: String, CustomStringConvertible { // Our Package isn't set up with unit test targets, because SPM can't run unit tests in a codesigned environment. return false case .xcode: - return platform.shouldTest + return true } } } guard CommandLine.arguments.count > 2 else { print("Usage: build.swift platforms [spm|xcode]") - exit(0) + throw TaskError.code(1) } let rawPlatforms = CommandLine.arguments[1].components(separatedBy: ",") let rawTask = CommandLine.arguments[2] guard let task = Task(rawValue: rawTask) else { print("Received unknown task \(rawTask)") - exit(0) + throw TaskError.code(1) } -let platforms = rawPlatforms.map { rawPlatform -> Platform in +let platforms = try rawPlatforms.map { rawPlatform -> Platform in guard let platform = Platform(rawValue: rawPlatform) else { print("Received unknown platform type \(rawPlatform)") - exit(0) + throw TaskError.code(1) } return platform @@ -315,7 +252,7 @@ for platform in platforms { deletedXcodeproj = true } catch { print("Could not delete Valet.xcodeproj due to error: \(error)") - exit(0) + throw TaskError.code(1) } } @@ -349,11 +286,7 @@ for platform in platforms { xcodeBuildArguments.append("test") } - do { - try execute(commandPath: "/usr/bin/xcodebuild", arguments: xcodeBuildArguments) - } catch { - print("xcodebuild failed with error: \(error)") - } + try execute(commandPath: "/usr/bin/xcodebuild", arguments: xcodeBuildArguments) if deletedXcodeproj { do { diff --git a/Tests/ValetIntegrationTests/ValetIntegrationTests.swift b/Tests/ValetIntegrationTests/ValetIntegrationTests.swift index 1aac0be2..2d5e81f7 100644 --- a/Tests/ValetIntegrationTests/ValetIntegrationTests.swift +++ b/Tests/ValetIntegrationTests/ValetIntegrationTests.swift @@ -365,6 +365,10 @@ class ValetIntegrationTests: XCTestCase func test_stringForKey_withDifferingIdentifierInSameAccessGroup_throwsItemNotFound() throws { + guard testEnvironmentIsSignedOrDoesNotRequireEntitlement() else { + return + } + let valet1 = Valet.sharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet1")!, accessibility: vanillaValet.accessibility) let valet2 = Valet.sharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet2")!, accessibility: vanillaValet.accessibility) @@ -378,6 +382,10 @@ class ValetIntegrationTests: XCTestCase func test_stringForKey_withSameIdentifierInDifferentAccessGroup_throwsItemNotFound() throws { + guard testEnvironmentIsSignedOrDoesNotRequireEntitlement() else { + return + } + let valet1 = Valet.sharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet1")!, accessibility: vanillaValet.accessibility) let valet2 = Valet.sharedGroupValet(with: Self.sharedAccessGroupIdentifier2, identifier: Identifier(nonEmpty: "valet1")!, accessibility: vanillaValet.accessibility) @@ -391,6 +399,10 @@ class ValetIntegrationTests: XCTestCase func test_stringForKey_withDifferingIdentifierInSameiCloudGroup_throwsItemNotFound() throws { + guard testEnvironmentIsSignedOrDoesNotRequireEntitlement() else { + return + } + let valet1 = Valet.iCloudSharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet1")!, accessibility: .afterFirstUnlock) let valet2 = Valet.iCloudSharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet2")!, accessibility: .afterFirstUnlock) @@ -519,6 +531,10 @@ class ValetIntegrationTests: XCTestCase func test_objectForKey_withDifferingIdentifierInSameAccessGroup_throwsItemNotFound() throws { + guard testEnvironmentIsSignedOrDoesNotRequireEntitlement() else { + return + } + let valet1 = Valet.sharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet1")!, accessibility: vanillaValet.accessibility) let valet2 = Valet.sharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet2")!, accessibility: vanillaValet.accessibility) @@ -532,6 +548,10 @@ class ValetIntegrationTests: XCTestCase func test_objectForKey_withDifferingIdentifierInSameiCloudGroup_throwsItemNotFound() throws { + guard testEnvironmentIsSignedOrDoesNotRequireEntitlement() else { + return + } + let valet1 = Valet.iCloudSharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet1")!, accessibility: .afterFirstUnlock) let valet2 = Valet.iCloudSharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet2")!, accessibility: .afterFirstUnlock) @@ -763,6 +783,10 @@ class ValetIntegrationTests: XCTestCase func test_removeObjectForKey_isDistinctForDifferingIdentifierInSameAccessGroup() throws { + guard testEnvironmentIsSignedOrDoesNotRequireEntitlement() else { + return + } + let valet1 = Valet.sharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet1")!, accessibility: vanillaValet.accessibility) let valet2 = Valet.sharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet2")!, accessibility: vanillaValet.accessibility) @@ -779,6 +803,10 @@ class ValetIntegrationTests: XCTestCase func test_removeObjectForKey_isDistinctForDifferingIdentifierInSameiCloudGroup() throws { + guard testEnvironmentIsSignedOrDoesNotRequireEntitlement() else { + return + } + let valet1 = Valet.iCloudSharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet1")!, accessibility: .afterFirstUnlock) let valet2 = Valet.iCloudSharedGroupValet(with: Self.sharedAccessGroupIdentifier, identifier: Identifier(nonEmpty: "valet2")!, accessibility: .afterFirstUnlock) @@ -894,7 +922,7 @@ class ValetIntegrationTests: XCTestCase let identifier = "Keychain_With_Account_Name_As_NSData" // kSecAttrAccount entry is expected to be a CFString, but a CFDataRef can also be stored as a value. - let keychainData = [ + let keychainData: CFDictionary = [ kSecAttrService: identifier, kSecClass : kSecClassGenericPassword, kSecAttrAccount: passcodeData, diff --git a/Valet watchOS Test Host App Watch App/Assets.xcassets/AccentColor.colorset/Contents.json b/Valet watchOS Test Host App Watch App/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/Valet watchOS Test Host App Watch App/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Valet watchOS Test Host App Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json b/Valet watchOS Test Host App Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..49c81cd8 --- /dev/null +++ b/Valet watchOS Test Host App Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "watchos", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Valet watchOS Test Host App Watch App/Assets.xcassets/Contents.json b/Valet watchOS Test Host App Watch App/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/Valet watchOS Test Host App Watch App/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Valet watchOS Test Host App Watch App/ContentView.swift b/Valet watchOS Test Host App Watch App/ContentView.swift new file mode 100644 index 00000000..34c476d3 --- /dev/null +++ b/Valet watchOS Test Host App Watch App/ContentView.swift @@ -0,0 +1,26 @@ +// Created by Dan Federman on 4/23/24. +// Copyright © 2024 Block, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +//    http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI + +struct ContentView: View { + var body: some View { + VStack { + Text("Hello, world!") + } + .padding() + } +} diff --git a/Valet watchOS Test Host App Watch App/Preview Content/Preview Assets.xcassets/Contents.json b/Valet watchOS Test Host App Watch App/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/Valet watchOS Test Host App Watch App/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Valet watchOS Test Host App Watch App/Valet_watchOS_Test_Host_AppApp.swift b/Valet watchOS Test Host App Watch App/Valet_watchOS_Test_Host_AppApp.swift new file mode 100644 index 00000000..2db4dc7a --- /dev/null +++ b/Valet watchOS Test Host App Watch App/Valet_watchOS_Test_Host_AppApp.swift @@ -0,0 +1,26 @@ +// Created by Dan Federman on 4/23/24. +// Copyright © 2024 Block, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +//    http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI + +@main +struct Valet_watchOS_Test_Host_App_Watch_AppApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/Valet.xcodeproj/project.pbxproj b/Valet.xcodeproj/project.pbxproj index f1f19eb4..264268ff 100644 --- a/Valet.xcodeproj/project.pbxproj +++ b/Valet.xcodeproj/project.pbxproj @@ -160,21 +160,11 @@ 169E9A6D23D181DC001B69F5 /* VALSecureEnclaveValetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 169E9A6623D181DC001B69F5 /* VALSecureEnclaveValetTests.m */; }; 169E9A6E23D181DC001B69F5 /* VALSecureEnclaveValetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 169E9A6623D181DC001B69F5 /* VALSecureEnclaveValetTests.m */; }; 169E9A6F23D181DC001B69F5 /* VALSecureEnclaveValetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 169E9A6623D181DC001B69F5 /* VALSecureEnclaveValetTests.m */; }; - 169FC990215ECFCE00C2D6BD /* Valet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; }; - 169FC991215ECFCE00C2D6BD /* Valet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 16B5856F1F71DBE00038EE30 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16B5856E1F71DBE00038EE30 /* AppDelegate.swift */; }; 16B585711F71DBE00038EE30 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16B585701F71DBE00038EE30 /* ViewController.swift */; }; 16B585731F71DBE00038EE30 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 16B585721F71DBE00038EE30 /* Assets.xcassets */; }; 16B585761F71DBE00038EE30 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 16B585741F71DBE00038EE30 /* Main.storyboard */; }; 16C3B09C204B1E4C00B4D0B4 /* Valet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C3B06D204B1DB800B4D0B4 /* Valet.framework */; }; - 16DF6AF7204B496800F8E0A4 /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 16DF6AF5204B496800F8E0A4 /* Interface.storyboard */; }; - 16DF6AF9204B496800F8E0A4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 16DF6AF8204B496800F8E0A4 /* Assets.xcassets */; }; - 16DF6B00204B496800F8E0A4 /* Valet watchOS Test Host App Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 16DF6AFF204B496800F8E0A4 /* Valet watchOS Test Host App Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 16DF6B05204B496800F8E0A4 /* InterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16DF6B04204B496800F8E0A4 /* InterfaceController.swift */; }; - 16DF6B07204B496800F8E0A4 /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16DF6B06204B496800F8E0A4 /* ExtensionDelegate.swift */; }; - 16DF6B09204B496800F8E0A4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 16DF6B08204B496800F8E0A4 /* Assets.xcassets */; }; - 16DF6B0D204B496800F8E0A4 /* Valet watchOS Test Host App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 16DF6AF3204B496800F8E0A4 /* Valet watchOS Test Host App.app */; }; - 16DF6B1F204B4DA600F8E0A4 /* Valet.framework in Resources */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; }; 321C3F9F2BD77F6600AB3952 /* SecItemTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FCFF22A9C95400FC1142 /* SecItemTests.swift */; }; 321C3FA02BD77F6600AB3952 /* CloudIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0022A9C95400FC1142 /* CloudIntegrationTests.swift */; }; 321C3FA12BD77F6600AB3952 /* KeychainIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DC88912475BA5F005A9BFA /* KeychainIntegrationTests.swift */; }; @@ -189,8 +179,14 @@ 321C3FAA2BD77F6600AB3952 /* ValetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1612FD0D22A9C95500FC1142 /* ValetTests.swift */; }; 321C3FAB2BD77F6600AB3952 /* MigrationErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167E250123D624EF00889121 /* MigrationErrorTests.swift */; }; 321C3FAC2BD77F6600AB3952 /* KeychainErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 167E24FD23D6235000889121 /* KeychainErrorTests.swift */; }; + 321C3FB52BD796D500AB3952 /* Valet watchOS Test Host App Watch App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 321C3FB42BD796D500AB3952 /* Valet watchOS Test Host App Watch App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 321C3FBA2BD796D500AB3952 /* Valet_watchOS_Test_Host_AppApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321C3FB92BD796D500AB3952 /* Valet_watchOS_Test_Host_AppApp.swift */; }; + 321C3FBC2BD796D500AB3952 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321C3FBB2BD796D500AB3952 /* ContentView.swift */; }; + 321C3FBE2BD796D600AB3952 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 321C3FBD2BD796D600AB3952 /* Assets.xcassets */; }; + 321C3FC12BD796D600AB3952 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 321C3FC02BD796D600AB3952 /* Preview Assets.xcassets */; }; + 321C3FC92BD7970600AB3952 /* Valet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; }; + 321C3FCA2BD7970600AB3952 /* Valet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 322CF5242BD77E6500B1F0D0 /* Valet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; }; - 322CF5252BD77E6500B1F0D0 /* Valet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 32DC88852475111D005A9BFA /* MigratableKeyValuePair.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DC88842475111D005A9BFA /* MigratableKeyValuePair.swift */; }; 32DC88862475111D005A9BFA /* MigratableKeyValuePair.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DC88842475111D005A9BFA /* MigratableKeyValuePair.swift */; }; 32DC88872475111D005A9BFA /* MigratableKeyValuePair.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DC88842475111D005A9BFA /* MigratableKeyValuePair.swift */; }; @@ -215,8 +211,6 @@ 373E0A2828AD3CDE00024F8F /* Valet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 26E6828A1BA8B4B200EFF4EA /* Valet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 373E0A2B28AD3CEC00024F8F /* Valet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16C3B06D204B1DB800B4D0B4 /* Valet.framework */; }; 373E0A2C28AD3CEC00024F8F /* Valet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 16C3B06D204B1DB800B4D0B4 /* Valet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 373E0A2F28AD3CF900024F8F /* Valet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; }; - 373E0A3028AD3CF900024F8F /* Valet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; AC89A3EC1CC82426009A7121 /* ValetTouchIDTestAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC89A3EB1CC82426009A7121 /* ValetTouchIDTestAppDelegate.swift */; }; AC89A3EE1CC82738009A7121 /* ValetTouchIDTestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC89A3ED1CC82738009A7121 /* ValetTouchIDTestViewController.swift */; }; EAF894841B053E0500EDAD6C /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EAF894831B053E0500EDAD6C /* Images.xcassets */; }; @@ -281,21 +275,14 @@ remoteGlobalIDString = 16A0D5BA2134D43E008D852B; remoteInfo = XCTest; }; - 16DF6B01204B496800F8E0A4 /* PBXContainerItemProxy */ = { + 321C3FB62BD796D500AB3952 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; proxyType = 1; - remoteGlobalIDString = 16DF6AFE204B496800F8E0A4; - remoteInfo = "Valet watchOS Test Host App Extension"; + remoteGlobalIDString = 321C3FB32BD796D500AB3952; + remoteInfo = "Valet watchOS Test Host App Watch App"; }; - 16DF6B0B204B496800F8E0A4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 16DF6AF2204B496800F8E0A4; - remoteInfo = "Valet watchOS Test Host App"; - }; - 16DF6B1C204B4AF800F8E0A4 /* PBXContainerItemProxy */ = { + 321C3FCB2BD7970600AB3952 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; proxyType = 1; @@ -316,12 +303,12 @@ remoteGlobalIDString = 16DF6AD9204B45EB00F8E0A4; remoteInfo = "Valet watchOS"; }; - 322CF5292BD77EAA00B1F0D0 /* PBXContainerItemProxy */ = { + 32A039002BD797580067CCC3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; proxyType = 1; - remoteGlobalIDString = 16DF6AFE204B496800F8E0A4; - remoteInfo = "Valet watchOS Test Host App Extension"; + remoteGlobalIDString = 321C3FB32BD796D500AB3952; + remoteInfo = "Valet watchOS Test Host App Watch App"; }; 371150B81E2962FC004A45D4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -358,13 +345,6 @@ remoteGlobalIDString = 16C3B06C204B1DB800B4D0B4; remoteInfo = "Valet tvOS"; }; - 373E0A3128AD3CF900024F8F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 16DF6AD9204B45EB00F8E0A4; - remoteInfo = "Valet watchOS"; - }; AC80E0A01F6DABB80091D04D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = EA1E1F7B1A8C46080067C991 /* Project object */; @@ -417,46 +397,34 @@ name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; - 169FC996215ECFCF00C2D6BD /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 169FC991215ECFCE00C2D6BD /* Valet.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; - 16DF6B11204B496800F8E0A4 /* Embed App Extensions */ = { + 16DF6B15204B496800F8E0A4 /* Embed Watch Content */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 13; + dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; + dstSubfolderSpec = 16; files = ( - 16DF6B00204B496800F8E0A4 /* Valet watchOS Test Host App Extension.appex in Embed App Extensions */, ); - name = "Embed App Extensions"; + name = "Embed Watch Content"; runOnlyForDeploymentPostprocessing = 0; }; - 16DF6B15204B496800F8E0A4 /* Embed Watch Content */ = { + 321C3FC52BD796D600AB3952 /* Embed Watch Content */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; dstSubfolderSpec = 16; files = ( - 16DF6B0D204B496800F8E0A4 /* Valet watchOS Test Host App.app in Embed Watch Content */, + 321C3FB52BD796D500AB3952 /* Valet watchOS Test Host App Watch App.app in Embed Watch Content */, ); name = "Embed Watch Content"; runOnlyForDeploymentPostprocessing = 0; }; - 322CF5282BD77E6500B1F0D0 /* Embed Frameworks */ = { + 321C3FCD2BD7970600AB3952 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 322CF5252BD77E6500B1F0D0 /* Valet.framework in Embed Frameworks */, + 321C3FCA2BD7970600AB3952 /* Valet.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -473,17 +441,6 @@ name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; - 373E0A3428AD3CF900024F8F /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 373E0A3028AD3CF900024F8F /* Valet.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -557,10 +514,8 @@ 16C3B097204B1E4C00B4D0B4 /* Valet tvOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Valet tvOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 16D7753C215BFC1D004F060C /* XCTest.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = XCTest.xcodeproj; path = "Tests/XCTest-watchOS/XCTest.xcodeproj"; sourceTree = ""; }; 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Valet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 16DF6AF3204B496800F8E0A4 /* Valet watchOS Test Host App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Valet watchOS Test Host App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 16DF6AF8204B496800F8E0A4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 16DF6AFA204B496800F8E0A4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 16DF6AFF204B496800F8E0A4 /* Valet watchOS Test Host App Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Valet watchOS Test Host App Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 16DF6B04204B496800F8E0A4 /* InterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InterfaceController.swift; sourceTree = ""; }; 16DF6B06204B496800F8E0A4 /* ExtensionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionDelegate.swift; sourceTree = ""; }; 16DF6B08204B496800F8E0A4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -571,6 +526,12 @@ 16EB52701F71BE4100363869 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; 26E6827C1BA8B3F900EFF4EA /* Valet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Valet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 26E6828A1BA8B4B200EFF4EA /* Valet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Valet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 321C3FAF2BD796D500AB3952 /* Valet watchOS Test Host App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Valet watchOS Test Host App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 321C3FB42BD796D500AB3952 /* Valet watchOS Test Host App Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Valet watchOS Test Host App Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 321C3FB92BD796D500AB3952 /* Valet_watchOS_Test_Host_AppApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Valet_watchOS_Test_Host_AppApp.swift; sourceTree = ""; }; + 321C3FBB2BD796D500AB3952 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 321C3FBD2BD796D600AB3952 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 321C3FC02BD796D600AB3952 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 322CF5182BD77E1300B1F0D0 /* Valet watchOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Valet watchOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 322CF52B2BD77EBF00B1F0D0 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/WatchOS.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 32C1ED17224C85540063E91D /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/Interface.storyboard; sourceTree = ""; }; @@ -651,25 +612,25 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 16DF6AFC204B496800F8E0A4 /* Frameworks */ = { + 26E682781BA8B3F900EFF4EA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 169FC990215ECFCE00C2D6BD /* Valet.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 26E682781BA8B3F900EFF4EA /* Frameworks */ = { + 26E682861BA8B4B200EFF4EA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 26E682861BA8B4B200EFF4EA /* Frameworks */ = { + 321C3FB12BD796D500AB3952 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 321C3FC92BD7970600AB3952 /* Valet.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -690,14 +651,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 373E0A3328AD3CF900024F8F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 373E0A2F28AD3CF900024F8F /* Valet.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; EA1E1F8B1A8C46090067C991 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -925,6 +878,25 @@ path = Tests; sourceTree = ""; }; + 321C3FB82BD796D500AB3952 /* Valet watchOS Test Host App Watch App */ = { + isa = PBXGroup; + children = ( + 321C3FB92BD796D500AB3952 /* Valet_watchOS_Test_Host_AppApp.swift */, + 321C3FBB2BD796D500AB3952 /* ContentView.swift */, + 321C3FBD2BD796D600AB3952 /* Assets.xcassets */, + 321C3FBF2BD796D600AB3952 /* Preview Content */, + ); + path = "Valet watchOS Test Host App Watch App"; + sourceTree = ""; + }; + 321C3FBF2BD796D600AB3952 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 321C3FC02BD796D600AB3952 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; 371150A61E2962D8004A45D4 /* Valet iOS Test Host App */ = { isa = PBXGroup; children = ( @@ -950,6 +922,7 @@ 165CDDC7204B26D400C96C2E /* Valet tvOS Test Host App */, 16DF6AF4204B496800F8E0A4 /* Valet watchOS Test Host App */, 16DF6B03204B496800F8E0A4 /* Valet watchOS Test Host App Extension */, + 321C3FB82BD796D500AB3952 /* Valet watchOS Test Host App Watch App */, EA1E1F841A8C46080067C991 /* Products */, 168909331F7199B50057F636 /* Frameworks */, ); @@ -969,11 +942,11 @@ 16C3B097204B1E4C00B4D0B4 /* Valet tvOS Tests.xctest */, 165CDDC6204B26D400C96C2E /* Valet tvOS Test Host App.app */, 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */, - 16DF6AF3204B496800F8E0A4 /* Valet watchOS Test Host App.app */, - 16DF6AFF204B496800F8E0A4 /* Valet watchOS Test Host App Extension.appex */, 1612FDD322A9CB2200FC1142 /* LegacyValet.framework */, 1612FE0822A9CC3E00FC1142 /* LegacyValet.framework */, 322CF5182BD77E1300B1F0D0 /* Valet watchOS Tests.xctest */, + 321C3FAF2BD796D500AB3952 /* Valet watchOS Test Host App.app */, + 321C3FB42BD796D500AB3952 /* Valet watchOS Test Host App Watch App.app */, ); name = Products; sourceTree = ""; @@ -1204,45 +1177,6 @@ productReference = 16DF6ADA204B45EB00F8E0A4 /* Valet.framework */; productType = "com.apple.product-type.framework"; }; - 16DF6AF2204B496800F8E0A4 /* Valet watchOS Test Host App */ = { - isa = PBXNativeTarget; - buildConfigurationList = 16DF6B12204B496800F8E0A4 /* Build configuration list for PBXNativeTarget "Valet watchOS Test Host App" */; - buildPhases = ( - 16DF6AF1204B496800F8E0A4 /* Resources */, - 16DF6B11204B496800F8E0A4 /* Embed App Extensions */, - 373E0A3328AD3CF900024F8F /* Frameworks */, - 373E0A3428AD3CF900024F8F /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 16DF6B02204B496800F8E0A4 /* PBXTargetDependency */, - 373E0A3228AD3CF900024F8F /* PBXTargetDependency */, - ); - name = "Valet watchOS Test Host App"; - productName = "Valet watchOS Test Host App"; - productReference = 16DF6AF3204B496800F8E0A4 /* Valet watchOS Test Host App.app */; - productType = "com.apple.product-type.application.watchapp2"; - }; - 16DF6AFE204B496800F8E0A4 /* Valet watchOS Test Host App Extension */ = { - isa = PBXNativeTarget; - buildConfigurationList = 16DF6B0E204B496800F8E0A4 /* Build configuration list for PBXNativeTarget "Valet watchOS Test Host App Extension" */; - buildPhases = ( - 16DF6AFB204B496800F8E0A4 /* Sources */, - 16DF6AFC204B496800F8E0A4 /* Frameworks */, - 16DF6AFD204B496800F8E0A4 /* Resources */, - 169FC996215ECFCF00C2D6BD /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 16DF6B1D204B4AF800F8E0A4 /* PBXTargetDependency */, - ); - name = "Valet watchOS Test Host App Extension"; - productName = "Valet watchOS Test Host App Extension"; - productReference = 16DF6AFF204B496800F8E0A4 /* Valet watchOS Test Host App Extension.appex */; - productType = "com.apple.product-type.watchkit2-extension"; - }; 26E6827B1BA8B3F900EFF4EA /* Valet iOS */ = { isa = PBXNativeTarget; buildConfigurationList = 26E682831BA8B3F900EFF4EA /* Build configuration list for PBXNativeTarget "Valet iOS" */; @@ -1279,6 +1213,42 @@ productReference = 26E6828A1BA8B4B200EFF4EA /* Valet.framework */; productType = "com.apple.product-type.framework"; }; + 321C3FAE2BD796D500AB3952 /* Valet watchOS Test Host App */ = { + isa = PBXNativeTarget; + buildConfigurationList = 321C3FC62BD796D600AB3952 /* Build configuration list for PBXNativeTarget "Valet watchOS Test Host App" */; + buildPhases = ( + 321C3FAD2BD796D500AB3952 /* Resources */, + 321C3FC52BD796D600AB3952 /* Embed Watch Content */, + ); + buildRules = ( + ); + dependencies = ( + 321C3FB72BD796D500AB3952 /* PBXTargetDependency */, + ); + name = "Valet watchOS Test Host App"; + productName = "Valet watchOS Test Host App"; + productReference = 321C3FAF2BD796D500AB3952 /* Valet watchOS Test Host App.app */; + productType = "com.apple.product-type.application.watchapp2-container"; + }; + 321C3FB32BD796D500AB3952 /* Valet watchOS Test Host App Watch App */ = { + isa = PBXNativeTarget; + buildConfigurationList = 321C3FC22BD796D600AB3952 /* Build configuration list for PBXNativeTarget "Valet watchOS Test Host App Watch App" */; + buildPhases = ( + 321C3FB02BD796D500AB3952 /* Sources */, + 321C3FB12BD796D500AB3952 /* Frameworks */, + 321C3FB22BD796D500AB3952 /* Resources */, + 321C3FCD2BD7970600AB3952 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 321C3FCC2BD7970600AB3952 /* PBXTargetDependency */, + ); + name = "Valet watchOS Test Host App Watch App"; + productName = "Valet watchOS Test Host App Watch App"; + productReference = 321C3FB42BD796D500AB3952 /* Valet watchOS Test Host App Watch App.app */; + productType = "com.apple.product-type.application"; + }; 322CF5172BD77E1300B1F0D0 /* Valet watchOS Tests */ = { isa = PBXNativeTarget; buildConfigurationList = 322CF5212BD77E1300B1F0D0 /* Build configuration list for PBXNativeTarget "Valet watchOS Tests" */; @@ -1286,14 +1256,13 @@ 322CF5142BD77E1300B1F0D0 /* Sources */, 322CF5152BD77E1300B1F0D0 /* Frameworks */, 322CF5162BD77E1300B1F0D0 /* Resources */, - 322CF5282BD77E6500B1F0D0 /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( 322CF5232BD77E2900B1F0D0 /* PBXTargetDependency */, 322CF5272BD77E6500B1F0D0 /* PBXTargetDependency */, - 322CF52A2BD77EAA00B1F0D0 /* PBXTargetDependency */, + 32A039012BD797580067CCC3 /* PBXTargetDependency */, ); name = "Valet watchOS Tests"; productName = "Valet watchOS Tests"; @@ -1375,7 +1344,6 @@ ); dependencies = ( 1689093B1F7199D60057F636 /* PBXTargetDependency */, - 16DF6B0C204B496800F8E0A4 /* PBXTargetDependency */, 1612FDD922A9CB2200FC1142 /* PBXTargetDependency */, ); name = ValetTouchIDTest; @@ -1445,22 +1413,6 @@ LastSwiftMigration = 1100; ProvisioningStyle = Manual; }; - 16DF6AF2204B496800F8E0A4 = { - CreatedOnToolsVersion = 9.2; - DevelopmentTeam = 9XUJ7M53NG; - ProvisioningStyle = Automatic; - }; - 16DF6AFE204B496800F8E0A4 = { - CreatedOnToolsVersion = 9.2; - DevelopmentTeam = 9XUJ7M53NG; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.Keychain = { - enabled = 1; - }; - }; - }; 26E6827B1BA8B3F900EFF4EA = { CreatedOnToolsVersion = 7.0; DevelopmentTeam = 9XUJ7M53NG; @@ -1471,10 +1423,18 @@ LastSwiftMigration = 1100; ProvisioningStyle = Manual; }; + 321C3FAE2BD796D500AB3952 = { + CreatedOnToolsVersion = 15.3; + ProvisioningStyle = Automatic; + }; + 321C3FB32BD796D500AB3952 = { + CreatedOnToolsVersion = 15.3; + ProvisioningStyle = Automatic; + }; 322CF5172BD77E1300B1F0D0 = { CreatedOnToolsVersion = 15.3; ProvisioningStyle = Automatic; - TestTargetID = 16DF6AFE204B496800F8E0A4; + TestTargetID = 321C3FB32BD796D500AB3952; }; 371150A41E2962D8004A45D4 = { CreatedOnToolsVersion = 8.2.1; @@ -1538,10 +1498,10 @@ 371150A41E2962D8004A45D4 /* Valet iOS Test Host App */, 16B5856B1F71DBE00038EE30 /* Valet macOS Test Host App */, 165CDDC5204B26D400C96C2E /* Valet tvOS Test Host App */, - 16DF6AF2204B496800F8E0A4 /* Valet watchOS Test Host App */, - 16DF6AFE204B496800F8E0A4 /* Valet watchOS Test Host App Extension */, + 321C3FB32BD796D500AB3952 /* Valet watchOS Test Host App Watch App */, 1612FDD222A9CB2200FC1142 /* LegacyValet iOS */, 1612FE0722A9CC3E00FC1142 /* LegacyValet macOS */, + 321C3FAE2BD796D500AB3952 /* Valet watchOS Test Host App */, ); }; /* End PBXProject section */ @@ -1610,35 +1570,33 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 16DF6AF1204B496800F8E0A4 /* Resources */ = { + 26E6827A1BA8B3F900EFF4EA /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 16DF6AF9204B496800F8E0A4 /* Assets.xcassets in Resources */, - 16DF6AF7204B496800F8E0A4 /* Interface.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 16DF6AFD204B496800F8E0A4 /* Resources */ = { + 26E682881BA8B4B200EFF4EA /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 16DF6B1F204B4DA600F8E0A4 /* Valet.framework in Resources */, - 16DF6B09204B496800F8E0A4 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 26E6827A1BA8B3F900EFF4EA /* Resources */ = { + 321C3FAD2BD796D500AB3952 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 26E682881BA8B4B200EFF4EA /* Resources */ = { + 321C3FB22BD796D500AB3952 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 321C3FC12BD796D600AB3952 /* Preview Assets.xcassets in Resources */, + 321C3FBE2BD796D600AB3952 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1796,15 +1754,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 16DF6AFB204B496800F8E0A4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 16DF6B07204B496800F8E0A4 /* ExtensionDelegate.swift in Sources */, - 16DF6B05204B496800F8E0A4 /* InterfaceController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 26E682771BA8B3F900EFF4EA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1851,6 +1800,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 321C3FB02BD796D500AB3952 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 321C3FBC2BD796D500AB3952 /* ContentView.swift in Sources */, + 321C3FBA2BD796D500AB3952 /* Valet_watchOS_Test_Host_AppApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 322CF5142BD77E1300B1F0D0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1985,20 +1943,15 @@ target = 16C3B06C204B1DB800B4D0B4 /* Valet tvOS */; targetProxy = 16C3B09D204B1E4C00B4D0B4 /* PBXContainerItemProxy */; }; - 16DF6B02204B496800F8E0A4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 16DF6AFE204B496800F8E0A4 /* Valet watchOS Test Host App Extension */; - targetProxy = 16DF6B01204B496800F8E0A4 /* PBXContainerItemProxy */; - }; - 16DF6B0C204B496800F8E0A4 /* PBXTargetDependency */ = { + 321C3FB72BD796D500AB3952 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 16DF6AF2204B496800F8E0A4 /* Valet watchOS Test Host App */; - targetProxy = 16DF6B0B204B496800F8E0A4 /* PBXContainerItemProxy */; + target = 321C3FB32BD796D500AB3952 /* Valet watchOS Test Host App Watch App */; + targetProxy = 321C3FB62BD796D500AB3952 /* PBXContainerItemProxy */; }; - 16DF6B1D204B4AF800F8E0A4 /* PBXTargetDependency */ = { + 321C3FCC2BD7970600AB3952 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 16DF6AD9204B45EB00F8E0A4 /* Valet watchOS */; - targetProxy = 16DF6B1C204B4AF800F8E0A4 /* PBXContainerItemProxy */; + targetProxy = 321C3FCB2BD7970600AB3952 /* PBXContainerItemProxy */; }; 322CF5232BD77E2900B1F0D0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -2010,10 +1963,10 @@ target = 16DF6AD9204B45EB00F8E0A4 /* Valet watchOS */; targetProxy = 322CF5262BD77E6500B1F0D0 /* PBXContainerItemProxy */; }; - 322CF52A2BD77EAA00B1F0D0 /* PBXTargetDependency */ = { + 32A039012BD797580067CCC3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 16DF6AFE204B496800F8E0A4 /* Valet watchOS Test Host App Extension */; - targetProxy = 322CF5292BD77EAA00B1F0D0 /* PBXContainerItemProxy */; + target = 321C3FB32BD796D500AB3952 /* Valet watchOS Test Host App Watch App */; + targetProxy = 32A039002BD797580067CCC3 /* PBXContainerItemProxy */; }; 371150B91E2962FC004A45D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -2040,11 +1993,6 @@ target = 16C3B06C204B1DB800B4D0B4 /* Valet tvOS */; targetProxy = 373E0A2D28AD3CEC00024F8F /* PBXContainerItemProxy */; }; - 373E0A3228AD3CF900024F8F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 16DF6AD9204B45EB00F8E0A4 /* Valet watchOS */; - targetProxy = 373E0A3128AD3CF900024F8F /* PBXContainerItemProxy */; - }; AC80E0A11F6DABB80091D04D /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 26E6827B1BA8B3F900EFF4EA /* Valet iOS */; @@ -2542,118 +2490,6 @@ }; name = Release; }; - 16DF6B0F204B496800F8E0A4 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = "Valet watchOS Test Host App Extension/Valet watchOS Test Host App Extension.entitlements"; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = ""; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = "Valet watchOS Test Host App Extension/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.squareup.ValetTouchIDTestApp.watchkitapp.watchkitextension; - PRODUCT_NAME = "${TARGET_NAME}"; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 4.2; - }; - name = Debug; - }; - 16DF6B10204B496800F8E0A4 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = "Valet watchOS Test Host App Extension/Valet watchOS Test Host App Extension.entitlements"; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = ""; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = "Valet watchOS Test Host App Extension/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.squareup.ValetTouchIDTestApp.watchkitapp.watchkitextension; - PRODUCT_NAME = "${TARGET_NAME}"; - SDKROOT = watchos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 4.2; - }; - name = Release; - }; - 16DF6B13204B496800F8E0A4 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = "Valet watchOS Test Host App/Valet watchOS Test Host App.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = ""; - GCC_C_LANGUAGE_STANDARD = gnu11; - IBSC_MODULE = Valet_watchOS_Test_Host_App_Extension; - INFOPLIST_FILE = "Valet watchOS Test Host App/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.squareup.ValetTouchIDTestApp.watchkitapp; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 4.2; - }; - name = Debug; - }; - 16DF6B14204B496800F8E0A4 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = "Valet watchOS Test Host App/Valet watchOS Test Host App.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = ""; - GCC_C_LANGUAGE_STANDARD = gnu11; - IBSC_MODULE = Valet_watchOS_Test_Host_App_Extension; - INFOPLIST_FILE = "Valet watchOS Test Host App/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.squareup.ValetTouchIDTestApp.watchkitapp; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 4.2; - }; - name = Release; - }; 26E682811BA8B3F900EFF4EA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2760,6 +2596,144 @@ }; name = Release; }; + 321C3FC32BD796D600AB3952 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_ASSET_PATHS = "\"Valet watchOS Test Host App Watch App/Preview Content\""; + ENABLE_PREVIEWS = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleDisplayName = "Valet watchOS Test Host App"; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_WKWatchOnly = YES; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.squareup.Valet-watchOS-Tests.Valet-watchOS-Test-Host-App.watchkitapp"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 7.0; + }; + name = Debug; + }; + 321C3FC42BD796D600AB3952 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_ASSET_PATHS = "\"Valet watchOS Test Host App Watch App/Preview Content\""; + ENABLE_PREVIEWS = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleDisplayName = "Valet watchOS Test Host App"; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_WKWatchOnly = YES; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.squareup.Valet-watchOS-Tests.Valet-watchOS-Test-Host-App.watchkitapp"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 7.0; + }; + name = Release; + }; + 321C3FC72BD796D600AB3952 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + INFOPLIST_KEY_CFBundleDisplayName = "Valet watchOS Test Host App"; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.squareup.Valet-watchOS-Tests.Valet-watchOS-Test-Host-App"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 321C3FC82BD796D600AB3952 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + INFOPLIST_KEY_CFBundleDisplayName = "Valet watchOS Test Host App"; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.squareup.Valet-watchOS-Tests.Valet-watchOS-Test-Host-App"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; 322CF51F2BD77E1300B1F0D0 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2793,7 +2767,7 @@ SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Valet watchOS Test Host App Extension.appex/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Valet watchOS Test Host App Extension"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Valet watchOS Test Host App Watch App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Valet watchOS Test Host App Watch App"; WATCHOS_DEPLOYMENT_TARGET = 4.0; }; name = Debug; @@ -2829,7 +2803,7 @@ SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Valet watchOS Test Host App Extension.appex/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Valet watchOS Test Host App Extension"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Valet watchOS Test Host App Watch App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Valet watchOS Test Host App Watch App"; WATCHOS_DEPLOYMENT_TARGET = 4.0; }; name = Release; @@ -3203,38 +3177,38 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 16DF6B0E204B496800F8E0A4 /* Build configuration list for PBXNativeTarget "Valet watchOS Test Host App Extension" */ = { + 26E682831BA8B3F900EFF4EA /* Build configuration list for PBXNativeTarget "Valet iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 16DF6B0F204B496800F8E0A4 /* Debug */, - 16DF6B10204B496800F8E0A4 /* Release */, + 26E682811BA8B3F900EFF4EA /* Debug */, + 26E682821BA8B3F900EFF4EA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 16DF6B12204B496800F8E0A4 /* Build configuration list for PBXNativeTarget "Valet watchOS Test Host App" */ = { + 26E6828F1BA8B4B200EFF4EA /* Build configuration list for PBXNativeTarget "Valet Mac" */ = { isa = XCConfigurationList; buildConfigurations = ( - 16DF6B13204B496800F8E0A4 /* Debug */, - 16DF6B14204B496800F8E0A4 /* Release */, + 26E682901BA8B4B200EFF4EA /* Debug */, + 26E682911BA8B4B200EFF4EA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 26E682831BA8B3F900EFF4EA /* Build configuration list for PBXNativeTarget "Valet iOS" */ = { + 321C3FC22BD796D600AB3952 /* Build configuration list for PBXNativeTarget "Valet watchOS Test Host App Watch App" */ = { isa = XCConfigurationList; buildConfigurations = ( - 26E682811BA8B3F900EFF4EA /* Debug */, - 26E682821BA8B3F900EFF4EA /* Release */, + 321C3FC32BD796D600AB3952 /* Debug */, + 321C3FC42BD796D600AB3952 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 26E6828F1BA8B4B200EFF4EA /* Build configuration list for PBXNativeTarget "Valet Mac" */ = { + 321C3FC62BD796D600AB3952 /* Build configuration list for PBXNativeTarget "Valet watchOS Test Host App" */ = { isa = XCConfigurationList; buildConfigurations = ( - 26E682901BA8B4B200EFF4EA /* Debug */, - 26E682911BA8B4B200EFF4EA /* Release */, + 321C3FC72BD796D600AB3952 /* Debug */, + 321C3FC82BD796D600AB3952 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Valet.xcodeproj/xcshareddata/xcschemes/Valet watchOS Test Host App Extension.xcscheme b/Valet.xcodeproj/xcshareddata/xcschemes/Valet watchOS Test Host App Extension.xcscheme index 07c9e8e5..4c3a6bea 100644 --- a/Valet.xcodeproj/xcshareddata/xcschemes/Valet watchOS Test Host App Extension.xcscheme +++ b/Valet.xcodeproj/xcshareddata/xcschemes/Valet watchOS Test Host App Extension.xcscheme @@ -42,7 +42,7 @@ buildForAnalyzing = "YES">