Skip to content

Commit 3797181

Browse files
authored
Add preferredScreenCaptureFormat to XCScheme.TestAcion (#792)
1 parent 30df77b commit 3797181

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

Fixtures/iOS/Project.xcodeproj/xcshareddata/xcschemes/iOS.xcscheme

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
4747
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
4848
shouldUseLaunchSchemeArgsEnv = "YES"
49+
preferredScreenCaptureFormat = "screenshots"
4950
codeCoverageEnabled = "YES"
5051
onlyGenerateCoverageForSpecifiedTargets = "YES">
5152
<PreActions>

Sources/XcodeProj/Extensions/AEXML+XcodeFormat.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ let attributesOrder: [String: [String]] = [
3838
"shouldUseLaunchSchemeArgsEnv",
3939
"disableMainThreadChecker",
4040
"region",
41+
"preferredScreenCaptureFormat",
4142
"codeCoverageEnabled",
4243
"onlyGenerateCoverageForSpecifiedTargets",
4344
],

Sources/XcodeProj/Scheme/XCScheme+TestAction.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ extension XCScheme {
77
public enum AttachmentLifetime: String {
88
case keepAlways, keepNever
99
}
10+
11+
public enum ScreenCaptureFormat: String {
12+
case screenshots, screenRecording
13+
}
1014

1115
// MARK: - Static
1216

@@ -35,6 +39,7 @@ extension XCScheme {
3539
public var language: String?
3640
public var region: String?
3741
public var systemAttachmentLifetime: AttachmentLifetime?
42+
public var preferredScreenCaptureFormat: ScreenCaptureFormat?
3843
public var userAttachmentLifetime: AttachmentLifetime?
3944
public var customLLDBInitFile: String?
4045

@@ -63,6 +68,7 @@ extension XCScheme {
6368
language: String? = nil,
6469
region: String? = nil,
6570
systemAttachmentLifetime: AttachmentLifetime? = nil,
71+
preferredScreenCaptureFormat: ScreenCaptureFormat? = nil,
6672
userAttachmentLifetime: AttachmentLifetime? = nil,
6773
customLLDBInitFile: String? = nil) {
6874
self.buildConfiguration = buildConfiguration
@@ -86,6 +92,7 @@ extension XCScheme {
8692
self.language = language
8793
self.region = region
8894
self.systemAttachmentLifetime = systemAttachmentLifetime
95+
self.preferredScreenCaptureFormat = preferredScreenCaptureFormat
8996
self.userAttachmentLifetime = userAttachmentLifetime
9097
self.customLLDBInitFile = customLLDBInitFile
9198
super.init(preActions, postActions)
@@ -137,6 +144,8 @@ extension XCScheme {
137144

138145
systemAttachmentLifetime = element.attributes["systemAttachmentLifetime"]
139146
.flatMap(AttachmentLifetime.init(rawValue:))
147+
preferredScreenCaptureFormat = element.attributes["preferredScreenCaptureFormat"]
148+
.flatMap(ScreenCaptureFormat.init(rawValue:))
140149
userAttachmentLifetime = element.attributes["userAttachmentLifetime"]
141150
.flatMap(AttachmentLifetime.init(rawValue:))
142151
customLLDBInitFile = element.attributes["customLLDBInitFile"]
@@ -177,6 +186,14 @@ extension XCScheme {
177186
attributes["disableMainThreadChecker"] = disableMainThreadChecker.xmlString
178187
}
179188
attributes["systemAttachmentLifetime"] = systemAttachmentLifetime?.rawValue
189+
190+
switch preferredScreenCaptureFormat {
191+
case .screenshots:
192+
attributes["preferredScreenCaptureFormat"] = preferredScreenCaptureFormat?.rawValue
193+
case .none, .screenRecording:
194+
break
195+
}
196+
180197
if case .keepAlways? = userAttachmentLifetime {
181198
attributes["userAttachmentLifetime"] = userAttachmentLifetime?.rawValue
182199
}
@@ -253,6 +270,7 @@ extension XCScheme {
253270
language == rhs.language &&
254271
region == rhs.region &&
255272
systemAttachmentLifetime == rhs.systemAttachmentLifetime &&
273+
preferredScreenCaptureFormat == rhs.preferredScreenCaptureFormat &&
256274
userAttachmentLifetime == rhs.userAttachmentLifetime &&
257275
codeCoverageTargets == rhs.codeCoverageTargets &&
258276
customLLDBInitFile == rhs.customLLDBInitFile

Tests/XcodeProjTests/Scheme/XCSchemeTests.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ final class XCSchemeIntegrationTests: XCTestCase {
343343
XCTAssertEqual(scheme.testAction?.selectedDebuggerIdentifier, "Xcode.DebuggerFoundation.Debugger.LLDB")
344344
XCTAssertEqual(scheme.testAction?.selectedDebuggerIdentifier, "Xcode.DebuggerFoundation.Debugger.LLDB")
345345
XCTAssertEqual(scheme.testAction?.shouldUseLaunchSchemeArgsEnv, true)
346+
XCTAssertEqual(scheme.testAction?.preferredScreenCaptureFormat, .screenshots)
346347
XCTAssertEqual(scheme.testAction?.codeCoverageEnabled, true)
347348
XCTAssertEqual(scheme.testAction?.onlyGenerateCoverageForSpecifiedTargets, true)
348349
XCTAssertEqual(scheme.testAction?.testables.first?.skipped, false)

0 commit comments

Comments
 (0)