Skip to content

Commit

Permalink
Add runPostActionsOnFailure to scheme
Browse files Browse the repository at this point in the history
  • Loading branch information
FranzBusch committed Mar 5, 2021
1 parent c8afc79 commit fc09c73
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
🚀 Check out the guidelines [here](https://tuist.io/docs/contribution/changelog-guidelines/)

## Next
- Added `runPostActionsOnFailure` to `XCScheme` [#603](https://github.com/tuist/XcodeProj/pull/603) by [@FranzBusch](https://github.com/FranzBusch)

## 7.19.0 - Kreuzberg

Expand Down
1 change: 1 addition & 0 deletions Sources/XcodeProj/Extensions/AEXML+XcodeFormat.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ let attributesOrder: [String: [String]] = [
"BuildAction": [
"parallelizeBuildables",
"buildImplicitDependencies",
"runPostActionsOnFailure",
],
"BuildActionEntry": [
"buildForTesting",
Expand Down
10 changes: 8 additions & 2 deletions Sources/XcodeProj/Scheme/XCScheme+BuildAction.swift
Original file line number Diff line number Diff line change
Expand Up @@ -75,23 +75,27 @@ extension XCScheme {
public var buildActionEntries: [Entry]
public var parallelizeBuild: Bool
public var buildImplicitDependencies: Bool
public var runPostActionsOnFailure: Bool

// MARK: - Init

public init(buildActionEntries: [Entry] = [],
preActions: [ExecutionAction] = [],
postActions: [ExecutionAction] = [],
parallelizeBuild: Bool = false,
buildImplicitDependencies: Bool = false) {
buildImplicitDependencies: Bool = false,
runPostActionsOnFailure: Bool = false) {
self.buildActionEntries = buildActionEntries
self.parallelizeBuild = parallelizeBuild
self.buildImplicitDependencies = buildImplicitDependencies
self.runPostActionsOnFailure = runPostActionsOnFailure
super.init(preActions, postActions)
}

override init(element: AEXMLElement) throws {
parallelizeBuild = element.attributes["parallelizeBuildables"].map { $0 == "YES" } ?? true
buildImplicitDependencies = element.attributes["buildImplicitDependencies"].map { $0 == "YES" } ?? true
runPostActionsOnFailure = element.attributes["runPostActionsOnFailure"].map { $0 == "YES" } ?? false
buildActionEntries = try element["BuildActionEntries"]["BuildActionEntry"]
.all?
.map(Entry.init) ?? []
Expand All @@ -115,6 +119,7 @@ extension XCScheme {
attributes: [
"parallelizeBuildables": parallelizeBuild.xmlString,
"buildImplicitDependencies": buildImplicitDependencies.xmlString,
"runPostActionsOnFailure": runPostActionsOnFailure.xmlString,
])
super.writeXML(parent: element)
let entries = element.addChild(name: "BuildActionEntries")
Expand All @@ -131,7 +136,8 @@ extension XCScheme {
return super.isEqual(to: to) &&
buildActionEntries == rhs.buildActionEntries &&
parallelizeBuild == rhs.parallelizeBuild &&
buildImplicitDependencies == rhs.buildImplicitDependencies
buildImplicitDependencies == rhs.buildImplicitDependencies &&
runPostActionsOnFailure == rhs.runPostActionsOnFailure
}
}
}
5 changes: 4 additions & 1 deletion Tests/XcodeProjTests/Extensions/AEXML+XcodeFormatTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@ class AEXML_XcodeFormatTests: XCTestCase {
<?xml version="1.0" encoding="UTF-8"?>
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "NO">
buildImplicitDependencies = "NO"
runPostActionsOnFailure = "YES">
</BuildAction>
"""

func test_BuildAction_attributes_sorted_when_original_sorted() {
validateAttributes(attributes: [
"parallelizeBuildables": "YES",
"runPostActionsOnFailure": "YES",
"buildImplicitDependencies": "NO",
])
}
Expand All @@ -30,6 +32,7 @@ class AEXML_XcodeFormatTests: XCTestCase {
validateAttributes(attributes: [
"buildImplicitDependencies": "NO",
"parallelizeBuildables": "YES",
"runPostActionsOnFailure": "YES",
])
}

Expand Down
2 changes: 2 additions & 0 deletions Tests/XcodeProjTests/Scheme/XCSchemeTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ final class XCSchemeIntegrationTests: XCTestCase {
// Build action
XCTAssertTrue(scheme.buildAction?.parallelizeBuild == true)
XCTAssertTrue(scheme.buildAction?.buildImplicitDependencies == true)
XCTAssertTrue(scheme.buildAction?.runPostActionsOnFailure == false)
XCTAssertTrue(scheme.buildAction?.buildActionEntries.first?.buildFor.contains(.testing) == true)
XCTAssertTrue(scheme.buildAction?.buildActionEntries.first?.buildFor.contains(.running) == true)
XCTAssertTrue(scheme.buildAction?.buildActionEntries.first?.buildFor.contains(.profiling) == true)
Expand Down Expand Up @@ -419,6 +420,7 @@ final class XCSchemeIntegrationTests: XCTestCase {
// Build action
XCTAssertTrue(scheme.buildAction?.parallelizeBuild == true)
XCTAssertTrue(scheme.buildAction?.buildImplicitDependencies == true)
XCTAssertTrue(scheme.buildAction?.runPostActionsOnFailure == false)
XCTAssertTrue(scheme.buildAction?.buildActionEntries.first?.buildFor.contains(.testing) == true)
XCTAssertTrue(scheme.buildAction?.buildActionEntries.first?.buildFor.contains(.running) == false)
XCTAssertTrue(scheme.buildAction?.buildActionEntries.first?.buildFor.contains(.profiling) == true)
Expand Down

0 comments on commit fc09c73

Please sign in to comment.