@@ -21,6 +21,14 @@ final class XCSchemeIntegrationTests: XCTestCase {
21
21
initModel: XCScheme . init ( path: ) )
22
22
}
23
23
24
+ func test_read_appClipScheme( ) {
25
+ let subject = try ? XCScheme ( path: appClipScheme)
26
+ XCTAssertNotNil ( subject)
27
+ if let subject {
28
+ assert ( appClip: subject)
29
+ }
30
+ }
31
+
24
32
func test_read_runnableWithoutBuildableReferenceScheme( ) {
25
33
let subject = try ? XCScheme ( path: runnableWithoutBuildableReferenceSchemePath)
26
34
@@ -586,6 +594,7 @@ final class XCSchemeIntegrationTests: XCTestCase {
586
594
XCTAssertEqual ( scheme. launchAction? . disablePerformanceAntipatternChecker, false )
587
595
XCTAssertEqual ( scheme. launchAction? . stopOnEveryMainThreadCheckerIssue, false )
588
596
XCTAssertEqual ( scheme. launchAction? . additionalOptions. isEmpty, true )
597
+ XCTAssertEqual ( scheme. launchAction? . appClipInvocationURLString, nil )
589
598
590
599
let launchEnvironmentVariables = XCTAssertNotNilAndUnwrap ( scheme. launchAction? . environmentVariables)
591
600
XCTAssertEqual ( launchEnvironmentVariables. count, 1 )
@@ -679,6 +688,7 @@ final class XCSchemeIntegrationTests: XCTestCase {
679
688
XCTAssertEqual ( scheme. launchAction? . macroExpansion? . blueprintName, " core-ava " )
680
689
XCTAssertEqual ( scheme. launchAction? . macroExpansion? . referencedContainer, " container:core-ava.xcodeproj " )
681
690
XCTAssertNil ( scheme. launchAction? . environmentVariables)
691
+ XCTAssertNil ( scheme. launchAction? . appClipInvocationURLString)
682
692
683
693
// Profile action
684
694
XCTAssertEqual ( scheme. profileAction? . runnable? . runnableDebuggingMode, " 0 " )
@@ -769,6 +779,7 @@ final class XCSchemeIntegrationTests: XCTestCase {
769
779
XCTAssertEqual ( scheme. launchAction? . stopOnEveryMainThreadCheckerIssue, false )
770
780
XCTAssertEqual ( scheme. launchAction? . additionalOptions. isEmpty, true )
771
781
XCTAssertNil ( scheme. launchAction? . storeKitConfigurationFileReference)
782
+ XCTAssertNil ( scheme. launchAction? . appClipInvocationURLString)
772
783
773
784
let launchEnvironmentVariables = XCTAssertNotNilAndUnwrap ( scheme. launchAction? . environmentVariables)
774
785
XCTAssertEqual ( launchEnvironmentVariables. count, 1 )
@@ -797,6 +808,95 @@ final class XCSchemeIntegrationTests: XCTestCase {
797
808
XCTAssertNil ( scheme. archiveAction? . customArchiveName)
798
809
}
799
810
811
+ private func assert( appClip scheme: XCScheme ) {
812
+ XCTAssertEqual ( scheme. version, " 1.7 " )
813
+ XCTAssertEqual ( scheme. lastUpgradeVersion, " 1600 " , " \( scheme. lastUpgradeVersion!) not equals 1600 " )
814
+
815
+ // Build action
816
+ XCTAssertTrue ( scheme. buildAction? . parallelizeBuild == true )
817
+ XCTAssertTrue ( scheme. buildAction? . buildImplicitDependencies == true )
818
+ XCTAssertNil ( scheme. buildAction? . runPostActionsOnFailure)
819
+ XCTAssertEqual ( scheme. buildAction? . buildActionEntries. count, 1 )
820
+ XCTAssertTrue ( scheme. buildAction? . buildActionEntries [ 0 ] . buildFor. contains ( . testing) == true )
821
+ XCTAssertTrue ( scheme. buildAction? . buildActionEntries [ 0 ] . buildFor. contains ( . running) == true )
822
+ XCTAssertTrue ( scheme. buildAction? . buildActionEntries [ 0 ] . buildFor. contains ( . profiling) == true )
823
+ XCTAssertTrue ( scheme. buildAction? . buildActionEntries [ 0 ] . buildFor. contains ( . archiving) == true )
824
+ XCTAssertTrue ( scheme. buildAction? . buildActionEntries [ 0 ] . buildFor. contains ( . analyzing) == true )
825
+ XCTAssertEqual ( scheme. buildAction? . buildActionEntries [ 0 ] . buildableReference. buildableIdentifier, " primary " )
826
+ XCTAssertEqual ( scheme. buildAction? . buildActionEntries [ 0 ] . buildableReference. blueprintIdentifier, " 5CC725022DA91FB6004D43D4 " )
827
+ XCTAssertEqual ( scheme. buildAction? . buildActionEntries [ 0 ] . buildableReference. buildableName, " app_clip.app " )
828
+ XCTAssertEqual ( scheme. buildAction? . buildActionEntries [ 0 ] . buildableReference. blueprintName, " app_clip " )
829
+ XCTAssertEqual ( scheme. buildAction? . buildActionEntries [ 0 ] . buildableReference. referencedContainer, " container:example.xcodeproj " )
830
+
831
+ // Test action
832
+ XCTAssertEqual ( scheme. testAction? . buildConfiguration, " Debug " )
833
+ XCTAssertEqual ( scheme. testAction? . selectedDebuggerIdentifier, " Xcode.DebuggerFoundation.Debugger.LLDB " )
834
+ XCTAssertEqual ( scheme. testAction? . selectedLauncherIdentifier, " Xcode.DebuggerFoundation.Launcher.LLDB " )
835
+ XCTAssertTrue ( scheme. testAction? . shouldUseLaunchSchemeArgsEnv == true )
836
+ XCTAssertTrue ( scheme. testAction? . codeCoverageEnabled == false )
837
+ XCTAssertEqual ( scheme. testAction? . onlyGenerateCoverageForSpecifiedTargets, nil )
838
+ XCTAssertNil ( scheme. testAction? . macroExpansion)
839
+ XCTAssertEqual ( scheme. testAction? . enableAddressSanitizer, false )
840
+ XCTAssertEqual ( scheme. testAction? . enableASanStackUseAfterReturn, false )
841
+ XCTAssertEqual ( scheme. testAction? . enableThreadSanitizer, false )
842
+ XCTAssertEqual ( scheme. testAction? . enableUBSanitizer, false )
843
+ XCTAssertEqual ( scheme. testAction? . disableMainThreadChecker, false )
844
+ XCTAssertEqual ( scheme. testAction? . additionalOptions. isEmpty, true )
845
+ XCTAssertNil ( scheme. testAction? . commandlineArguments)
846
+ XCTAssertNil ( scheme. testAction? . environmentVariables)
847
+
848
+ // Launch action
849
+ XCTAssertEqual ( scheme. launchAction? . selectedDebuggerIdentifier, XCScheme . defaultDebugger)
850
+ XCTAssertEqual ( scheme. launchAction? . selectedLauncherIdentifier, XCScheme . defaultLauncher)
851
+ XCTAssertEqual ( scheme. launchAction? . buildConfiguration, " Debug " )
852
+ XCTAssertEqual ( scheme. launchAction? . launchStyle, XCScheme . LaunchAction. Style. auto)
853
+ XCTAssertNil ( scheme. launchAction? . askForAppToLaunch)
854
+ XCTAssertNil ( scheme. launchAction? . customWorkingDirectory)
855
+ XCTAssertTrue ( scheme. launchAction? . useCustomWorkingDirectory == false )
856
+ XCTAssertTrue ( scheme. launchAction? . ignoresPersistentStateOnLaunch == false )
857
+ XCTAssertTrue ( scheme. launchAction? . debugDocumentVersioning == true )
858
+ XCTAssertEqual ( scheme. launchAction? . debugServiceExtension, XCScheme . LaunchAction. defaultDebugServiceExtension)
859
+ XCTAssertTrue ( scheme. launchAction? . allowLocationSimulation == true )
860
+ XCTAssertNil ( scheme. launchAction? . locationScenarioReference)
861
+ XCTAssertNil ( scheme. launchAction? . commandlineArguments)
862
+ XCTAssertEqual ( scheme. launchAction? . enableAddressSanitizer, false )
863
+ XCTAssertEqual ( scheme. launchAction? . enableASanStackUseAfterReturn, false )
864
+ XCTAssertEqual ( scheme. launchAction? . enableThreadSanitizer, false )
865
+ XCTAssertEqual ( scheme. launchAction? . stopOnEveryThreadSanitizerIssue, false )
866
+ XCTAssertEqual ( scheme. launchAction? . enableUBSanitizer, false )
867
+ XCTAssertEqual ( scheme. launchAction? . stopOnEveryUBSanitizerIssue, false )
868
+ XCTAssertEqual ( scheme. launchAction? . disableMainThreadChecker, false )
869
+ XCTAssertEqual ( scheme. launchAction? . disablePerformanceAntipatternChecker, false )
870
+ XCTAssertEqual ( scheme. launchAction? . stopOnEveryMainThreadCheckerIssue, false )
871
+ XCTAssertEqual ( scheme. launchAction? . additionalOptions. isEmpty, true )
872
+ XCTAssertNil ( scheme. launchAction? . storeKitConfigurationFileReference)
873
+ XCTAssertNil ( scheme. launchAction? . macroExpansion? . referencedContainer)
874
+ XCTAssertNil ( scheme. launchAction? . environmentVariables)
875
+ XCTAssertEqual ( scheme. launchAction? . appClipInvocationURLString, " https://example.com/ " )
876
+
877
+ // Profile action
878
+ XCTAssertEqual ( scheme. profileAction? . runnable? . runnableDebuggingMode, " 0 " )
879
+ XCTAssertEqual ( scheme. profileAction? . runnable? . buildableReference? . referencedContainer, " container:example.xcodeproj " )
880
+ XCTAssertEqual ( scheme. profileAction? . buildConfiguration, " Release " )
881
+ XCTAssertTrue ( scheme. profileAction? . shouldUseLaunchSchemeArgsEnv == true )
882
+ XCTAssertEqual ( scheme. profileAction? . savedToolIdentifier, " " )
883
+ XCTAssertNil ( scheme. profileAction? . customWorkingDirectory)
884
+ XCTAssertTrue ( scheme. profileAction? . useCustomWorkingDirectory == false )
885
+ XCTAssertTrue ( scheme. profileAction? . debugDocumentVersioning == true )
886
+ XCTAssertNil ( scheme. profileAction? . askForAppToLaunch)
887
+ XCTAssertNil ( scheme. profileAction? . commandlineArguments)
888
+ XCTAssertNil ( scheme. profileAction? . environmentVariables)
889
+ XCTAssertNil ( scheme. profileAction? . launchAutomaticallySubstyle)
890
+
891
+ // Analyze action
892
+ XCTAssertEqual ( scheme. analyzeAction? . buildConfiguration, " Debug " )
893
+
894
+ // Archive action
895
+ XCTAssertEqual ( scheme. archiveAction? . buildConfiguration, " Release " )
896
+ XCTAssertTrue ( scheme. archiveAction? . revealArchiveInOrganizer == true )
897
+ XCTAssertNil ( scheme. archiveAction? . customArchiveName)
898
+ }
899
+
800
900
private func buildableReferenceWithStringBluePrint( name: String = " App " ) throws -> XCScheme . BuildableReference {
801
901
// To allow performing comparisons when serializing / deserializing we need a
802
902
// buildable reference that contains a `.string` blue print
@@ -842,4 +942,8 @@ final class XCSchemeIntegrationTests: XCTestCase {
842
942
private var buildArchitecturesSchemePath : Path {
843
943
fixturesPath ( ) + " Schemes/BuildArchitectures.xcscheme "
844
944
}
945
+
946
+ private var appClipScheme : Path {
947
+ fixturesPath ( ) + " Schemes/AppClip.xcscheme "
948
+ }
845
949
}
0 commit comments