Skip to content

Commit 4553702

Browse files
authored
Add support for xcresult v3.34 (#65)
Change Description: Adds support for new properties and objects described in xcresulttool's v3.34 of the formatDescription. Test Plan/Testing Performed: Need to add unit tests for the new objects. Was able to confirm that new UUID properties were parsing out properly with existing xcresult.
1 parent 7b7972e commit 4553702

10 files changed

+579
-2
lines changed

FormatDescriptions/xcresult-3.34.txt

+420
Large diffs are not rendered by default.

Sources/XCParseCore/ActionTestActivitySummary.swift

+5
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ open class ActionTestActivitySummary : Codable {
2828
// xcresult 3.26 and above
2929
public let failureSummaryIDs: [String]
3030

31+
// xcresult 3.34 and above
32+
public let expectedFailureIDs: [String]
33+
3134
enum ActionTestActivitySummaryCodingKeys: String, CodingKey {
3235
case title
3336
case activityType
@@ -37,6 +40,7 @@ open class ActionTestActivitySummary : Codable {
3740
case attachments
3841
case subactivities
3942
case failureSummaryIDs
43+
case expectedFailureIDs
4044
}
4145

4246
required public init(from decoder: Decoder) throws {
@@ -50,5 +54,6 @@ open class ActionTestActivitySummary : Codable {
5054
attachments = try container.decodeXCResultArray(forKey: .attachments)
5155
subactivities = try container.decodeXCResultArray(forKey: .subactivities)
5256
failureSummaryIDs = try container.decodeXCResultArray(forKey: .failureSummaryIDs)
57+
expectedFailureIDs = try container.decodeXCResultArray(forKey: .expectedFailureIDs)
5358
}
5459
}

Sources/XCParseCore/ActionTestAttachment.swift

+5
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ open class ActionTestAttachment : Codable {
2424
public let payloadRef: Reference?
2525
public let payloadSize: Int
2626

27+
// xcresult 3.34 and above
28+
public let uuid: String?
29+
2730
enum ActionTestAttachmentCodingKeys: String, CodingKey {
2831
case uniformTypeIdentifier
2932
case name
33+
case uuid
3034
case timestamp
3135
case userInfo
3236
case lifetime
@@ -40,6 +44,7 @@ open class ActionTestAttachment : Codable {
4044
let container = try decoder.container(keyedBy: ActionTestAttachmentCodingKeys.self)
4145
uniformTypeIdentifier = try container.decodeXCResultType(forKey: .uniformTypeIdentifier)
4246
name = try container.decodeXCResultTypeIfPresent(forKey: .name)
47+
uuid = try container.decodeXCResultTypeIfPresent(forKey: .uuid)
4348
timestamp = try container.decodeXCResultTypeIfPresent(forKey: .timestamp)
4449
userInfo = try container.decodeXCResultObjectIfPresent(forKey: .userInfo)
4550
lifetime = try container.decodeXCResultType(forKey: .lifetime)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//
2+
// ActionTestConfiguration.swift
3+
// XCParseCore
4+
//
5+
// Created by Alex Botkin on 8/16/21.
6+
// Copyright © 2021 ChargePoint, Inc. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
// xcresult 3.34 and above
12+
open class ActionTestConfiguration : Codable {
13+
public let values: SortedKeyValueArray
14+
15+
enum ActionTestConfigurationCodingKeys: String, CodingKey {
16+
case values
17+
}
18+
19+
required public init(from decoder: Decoder) throws {
20+
let container = try decoder.container(keyedBy: ActionTestConfigurationCodingKeys.self)
21+
values = try container.decodeXCResultObject(forKey: .values)
22+
}
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//
2+
// ActionTestExpectedFailure.swift
3+
// XCParseCore
4+
//
5+
// Created by Alex Botkin on 8/16/21.
6+
// Copyright © 2021 ChargePoint, Inc. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
// xcresult 3.34 and above
12+
open class ActionTestExpectedFailure : Codable {
13+
public let uuid: String
14+
public let failureReason: String?
15+
public let failureSummary: ActionTestFailureSummary?
16+
public let isTopLevelFailure: Bool
17+
18+
enum ActionTestExpectedFailureCodingKeys: String, CodingKey {
19+
case uuid
20+
case failureReason
21+
case failureSummary
22+
case isTopLevelFailure
23+
}
24+
25+
required public init(from decoder: Decoder) throws {
26+
let container = try decoder.container(keyedBy: ActionTestExpectedFailureCodingKeys.self)
27+
28+
uuid = try container.decodeXCResultType(forKey: .uuid)
29+
failureReason = try container.decodeXCResultTypeIfPresent(forKey: .failureReason)
30+
failureSummary = try container.decodeXCResultObjectIfPresent(forKey: .failureSummary)
31+
isTopLevelFailure = try container.decodeXCResultType(forKey: .isTopLevelFailure)
32+
}
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//
2+
// ActionTestNoticeSummary.swift
3+
// XCParseCore
4+
//
5+
// Created by Alex Botkin on 8/16/21.
6+
// Copyright © 2021 ChargePoint, Inc. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
open class ActionTestNoticeSummary : Codable {
12+
public let message: String?
13+
public let fileName: String
14+
public let lineNumber: Int
15+
16+
enum ActionTestNoticeSummaryCodingKeys: String, CodingKey {
17+
case message
18+
case fileName
19+
case lineNumber
20+
}
21+
22+
required public init(from decoder: Decoder) throws {
23+
let container = try decoder.container(keyedBy: ActionTestNoticeSummaryCodingKeys.self)
24+
25+
message = try container.decodeXCResultTypeIfPresent(forKey: .message)
26+
fileName = try container.decodeXCResultType(forKey: .fileName)
27+
lineNumber = try container.decodeXCResultType(forKey: .lineNumber)
28+
}
29+
}

Sources/XCParseCore/ActionTestPerformanceMetricSummary.swift

+5
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ open class ActionTestPerformanceMetricSummary : Codable {
5454
public let maxRegression: Double?
5555
public let maxStandardDeviation: Double?
5656

57+
// xcresult 3.34 and above
58+
public let polarity: String?
59+
5760
// Derived
5861
public var metricType : ActionTestPerformanceMetric {
5962
let identifierString = identifier ?? "Identifier Missing"
@@ -71,6 +74,7 @@ open class ActionTestPerformanceMetricSummary : Codable {
7174
case maxPercentRelativeStandardDeviation
7275
case maxRegression
7376
case maxStandardDeviation
77+
case polarity
7478
}
7579

7680
required public init(from decoder: Decoder) throws {
@@ -87,5 +91,6 @@ open class ActionTestPerformanceMetricSummary : Codable {
8791
maxPercentRelativeStandardDeviation = try container.decodeXCResultTypeIfPresent(forKey: .maxPercentRelativeStandardDeviation)
8892
maxRegression = try container.decodeXCResultTypeIfPresent(forKey: .maxRegression)
8993
maxStandardDeviation = try container.decodeXCResultTypeIfPresent(forKey: .maxStandardDeviation)
94+
polarity = try container.decodeXCResultTypeIfPresent(forKey: .polarity)
9095
}
9196
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//
2+
// ActionTestRepetitionPolicySummary.swift
3+
// XCParseCore
4+
//
5+
// Created by Alex Botkin on 8/16/21.
6+
// Copyright © 2021 ChargePoint, Inc. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
// xcresult 3.34 and above
12+
open class ActionTestRepetitionPolicySummary : Codable {
13+
public let iteration: Int?
14+
public let totalIterations: Int?
15+
public let repetitionMode: String?
16+
17+
enum ActionTestRepetitionPolicySummaryCodingKeys: String, CodingKey {
18+
case iteration
19+
case totalIterations
20+
case repetitionMode
21+
}
22+
23+
required public init(from decoder: Decoder) throws {
24+
let container = try decoder.container(keyedBy: ActionTestRepetitionPolicySummaryCodingKeys.self)
25+
26+
iteration = try container.decodeXCResultTypeIfPresent(forKey: .iteration)
27+
totalIterations = try container.decodeXCResultTypeIfPresent(forKey: .totalIterations)
28+
repetitionMode = try container.decodeXCResultTypeIfPresent(forKey: .repetitionMode)
29+
}
30+
}

Sources/XCParseCore/ActionTestSummary.swift

+16-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// XCParseCore
44
//
55
// Created by Alex Botkin on 10/4/19.
6-
// Copyright © 2019 ChargePoint, Inc. All rights reserved.
6+
// Copyright © 2021 ChargePoint, Inc. All rights reserved.
77
//
88

99
import Foundation
@@ -18,14 +18,24 @@ open class ActionTestSummary : ActionTestSummaryIdentifiableObject {
1818
public let duration: Double
1919
public let performanceMetrics: [ActionTestPerformanceMetricSummary]
2020
public let failureSummaries: [ActionTestFailureSummary]
21+
public let skipNoticeSummary: ActionTestNoticeSummary?
2122
public let activitySummaries: [ActionTestActivitySummary]
2223

24+
// xcresult 3.34 and above
25+
public let expectedFailures: [ActionTestExpectedFailure]
26+
public let repetitionPolicySummary: ActionTestRepetitionPolicySummary?
27+
public let configuration: ActionTestConfiguration?
28+
2329
enum ActionTestSummaryCodingKeys: String, CodingKey {
2430
case testStatus
2531
case duration
2632
case performanceMetrics
2733
case failureSummaries
34+
case skipNoticeSummary
2835
case activitySummaries
36+
case expectedFailures
37+
case repetitionPolicySummary
38+
case configuration
2939
}
3040

3141
required public init(from decoder: Decoder) throws {
@@ -35,8 +45,13 @@ open class ActionTestSummary : ActionTestSummaryIdentifiableObject {
3545

3646
performanceMetrics = try container.decodeXCResultArray(forKey: .performanceMetrics)
3747
failureSummaries = try container.decodeXCResultArray(forKey: .failureSummaries)
48+
skipNoticeSummary = try container.decodeXCResultObjectIfPresent(forKey: .skipNoticeSummary)
3849
activitySummaries = try container.decodeXCResultArray(forKey: .activitySummaries)
3950

51+
expectedFailures = try container.decodeXCResultArray(forKey: .expectedFailures)
52+
repetitionPolicySummary = try container.decodeXCResultObjectIfPresent(forKey: .repetitionPolicySummary)
53+
configuration = try container.decodeXCResultObjectIfPresent(forKey: .configuration)
54+
4055
try super.init(from: decoder)
4156
}
4257

Sources/XCParseCore/XCPResultDecoding.swift

+13-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// xcparse
44
//
55
// Created by Alex Botkin on 8/13/19.
6-
// Copyright © 2019 ChargePoint, Inc. All rights reserved.
6+
// Copyright © 2021 ChargePoint, Inc. All rights reserved.
77
//
88

99
import Foundation
@@ -118,11 +118,15 @@ enum XCResultTypeFamily: String, ClassFamily {
118118
case ActionSDKRecord
119119
case ActionTestActivitySummary
120120
case ActionTestAttachment
121+
case ActionTestConfiguration
122+
case ActionTestExpectedFailure
121123
case ActionTestFailureSummary
122124
case ActionTestMetadata
125+
case ActionTestNoticeSummary
123126
case ActionTestPerformanceMetricSummary
124127
case ActionTestPlanRunSummaries
125128
case ActionTestPlanRunSummary
129+
case ActionTestRepetitionPolicySummary
126130
case ActionTestSummary
127131
case ActionTestSummaryGroup
128132
case ActionTestSummaryIdentifiableObject
@@ -189,16 +193,24 @@ enum XCResultTypeFamily: String, ClassFamily {
189193
return XCParseCore.ActionTestActivitySummary.self
190194
case .ActionTestAttachment:
191195
return XCParseCore.ActionTestAttachment.self
196+
case .ActionTestConfiguration:
197+
return XCParseCore.ActionTestConfiguration.self
198+
case .ActionTestExpectedFailure:
199+
return XCParseCore.ActionTestExpectedFailure.self
192200
case .ActionTestFailureSummary:
193201
return XCParseCore.ActionTestFailureSummary.self
194202
case .ActionTestMetadata:
195203
return XCParseCore.ActionTestMetadata.self
204+
case .ActionTestNoticeSummary:
205+
return XCParseCore.ActionTestNoticeSummary.self
196206
case .ActionTestPerformanceMetricSummary:
197207
return XCParseCore.ActionTestPerformanceMetricSummary.self
198208
case .ActionTestPlanRunSummaries:
199209
return XCParseCore.ActionTestPlanRunSummaries.self
200210
case .ActionTestPlanRunSummary:
201211
return XCParseCore.ActionTestPlanRunSummary.self
212+
case .ActionTestRepetitionPolicySummary:
213+
return XCParseCore.ActionTestRepetitionPolicySummary.self
202214
case .ActionTestSummary:
203215
return XCParseCore.ActionTestSummary.self
204216
case .ActionTestSummaryGroup:

0 commit comments

Comments
 (0)