From 5a4ce5537db95403df7823886916aa879f7b724f Mon Sep 17 00:00:00 2001 From: Maxwell Elliott Date: Wed, 1 Jun 2022 22:24:24 -0700 Subject: [PATCH 1/3] Ensure correct `LaunchAction` scheme order Adds logic and tests to ensure that the XML ordering for `LaunchAction` matches what xcode expects --- .../Extensions/AEXML+XcodeFormat.swift | 1 + .../Extensions/AEXML+XcodeFormatTests.swift | 81 +++++++++++++++---- 2 files changed, 68 insertions(+), 14 deletions(-) diff --git a/Sources/XcodeProj/Extensions/AEXML+XcodeFormat.swift b/Sources/XcodeProj/Extensions/AEXML+XcodeFormat.swift index f19dd2001..aa1161f3d 100644 --- a/Sources/XcodeProj/Extensions/AEXML+XcodeFormat.swift +++ b/Sources/XcodeProj/Extensions/AEXML+XcodeFormat.swift @@ -43,6 +43,7 @@ let attributesOrder: [String: [String]] = [ "buildConfiguration", "selectedDebuggerIdentifier", "selectedLauncherIdentifier", + "customLLDBInitFile", "language", "region", "launchStyle", diff --git a/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift b/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift index 529a82c31..d16b61974 100644 --- a/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift +++ b/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift @@ -10,7 +10,7 @@ extension String { } class AEXML_XcodeFormatTests: XCTestCase { - private let expectedXml = + private let expecteBuildActionXml = """ """ + private let expectedLaunchActionXml = + """ + + + + """ + func test_BuildAction_attributes_sorted_when_original_sorted() { - validateAttributes(attributes: [ - "parallelizeBuildables": "YES", - "runPostActionsOnFailure": "YES", - "buildImplicitDependencies": "NO", - ]) + validateAttributes( + expectedXML: expecteBuildActionXml.cleaned, + childName: "BuildAction", + attributes: [ + "parallelizeBuildables": "YES", + "runPostActionsOnFailure": "YES", + "buildImplicitDependencies": "NO", + ] + ) } func test_BuildAction_attributes_sorted_when_original_unsorted() { - validateAttributes(attributes: [ - "buildImplicitDependencies": "NO", - "parallelizeBuildables": "YES", - "runPostActionsOnFailure": "YES", - ]) + validateAttributes( + expectedXML: expecteBuildActionXml.cleaned, + childName: "BuildAction", + attributes: [ + "buildImplicitDependencies": "NO", + "parallelizeBuildables": "YES", + "runPostActionsOnFailure": "YES", + ] + ) + } + + func test_LaunchAction_attributes_sorted_when_original_sorted() { + validateAttributes( + expectedXML: expectedLaunchActionXml.cleaned, + childName: "LaunchAction", + attributes: [ + "buildConfiguration": "Debug", + "selectedLauncherIdentifier": "Xcode.DebuggerFoundation.Launcher.LLDB", + "customLLDBInitFile": "$(BAZEL_LLDB_INIT)", + "launchStyle": "0", + "allowLocationSimulation": "YES" + ] + ) + } + + func test_LaunchAction_attributes_sorted_when_original_unsorted() { + validateAttributes( + expectedXML: expectedLaunchActionXml.cleaned, + childName: "LaunchAction", + attributes: [ + "customLLDBInitFile": "$(BAZEL_LLDB_INIT)", + "allowLocationSimulation": "YES", + "buildConfiguration": "Debug", + "selectedLauncherIdentifier": "Xcode.DebuggerFoundation.Launcher.LLDB", + "launchStyle": "0", + ] + ) } - func validateAttributes(attributes: [String: String], line: UInt = #line) { + func validateAttributes( + expectedXML: String, + childName: String, + attributes: [String: String], + line: UInt = #line + ) { let document = AEXMLDocument() - let child = document.addChild(name: "BuildAction") + let child = document.addChild(name: childName) child.attributes = attributes let result = document.xmlXcodeFormat - XCTAssertEqual(expectedXml.cleaned, result.cleaned, line: line) + XCTAssertEqual(expectedXML, result.cleaned, line: line) } } From e9803042c11e3607c2eb09ca9a1c164c3c0192f8 Mon Sep 17 00:00:00 2001 From: Maxwell Elliott Date: Fri, 3 Jun 2022 13:23:42 -0700 Subject: [PATCH 2/3] spelling --- .../XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift b/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift index d16b61974..37d9fa17c 100644 --- a/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift +++ b/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift @@ -10,7 +10,7 @@ extension String { } class AEXML_XcodeFormatTests: XCTestCase { - private let expecteBuildActionXml = + private let expectedBuildActionXml = """ Date: Fri, 10 Jun 2022 22:27:15 -0700 Subject: [PATCH 3/3] Update Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift Co-authored-by: Daniele Formichelli --- Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift b/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift index 37d9fa17c..cb4ea0284 100644 --- a/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift +++ b/Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift @@ -94,6 +94,6 @@ class AEXML_XcodeFormatTests: XCTestCase { let child = document.addChild(name: childName) child.attributes = attributes let result = document.xmlXcodeFormat - XCTAssertEqual(expectedXML, result.cleaned, line: line) + XCTAssertEqual(result.cleaned, expectedXML, line: line) } }