Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add runPostActionsOnFailure to scheme #603

Merged
merged 1 commit into from
Mar 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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