@@ -14,17 +14,19 @@ import com.malinskiy.marathon.config.vendor.android.TestAccessConfiguration
14
14
import com.malinskiy.marathon.config.vendor.android.TestParserConfiguration
15
15
import com.malinskiy.marathon.config.vendor.android.ThreadingConfiguration
16
16
import com.malinskiy.marathon.config.vendor.android.TimeoutConfiguration
17
- import com.malinskiy.marathon.config.vendor.ios .AppleTestBundleConfiguration
18
- import com.malinskiy.marathon.config.vendor.ios.LifecycleConfiguration
19
- import com.malinskiy.marathon.config.vendor.ios.PermissionsConfiguration
20
- import com.malinskiy.marathon.config.vendor.ios .RsyncConfiguration
21
- import com.malinskiy.marathon.config.vendor.ios.SigningConfiguration
22
- import com.malinskiy.marathon.config.vendor.ios .SshConfiguration
23
- import com.malinskiy.marathon.config.vendor.ios.XcresultConfiguration
17
+ import com.malinskiy.marathon.config.vendor.apple .AppleTestBundleConfiguration
18
+ import com.malinskiy.marathon.config.vendor.apple. ios.LifecycleConfiguration
19
+ import com.malinskiy.marathon.config.vendor.apple. ios.PermissionsConfiguration
20
+ import com.malinskiy.marathon.config.vendor.apple .RsyncConfiguration
21
+ import com.malinskiy.marathon.config.vendor.apple. ios.SigningConfiguration
22
+ import com.malinskiy.marathon.config.vendor.apple .SshConfiguration
23
+ import com.malinskiy.marathon.config.vendor.apple. ios.XcresultConfiguration
24
24
import java.io.File
25
- import com.malinskiy.marathon.config.vendor.ios.ScreenRecordConfiguration as AppleScreenRecordConfiguration
26
- import com.malinskiy.marathon.config.vendor.ios.ThreadingConfiguration as IosThreadingConfiguration
27
- import com.malinskiy.marathon.config.vendor.ios.TimeoutConfiguration as AppleTimeoutConfiguration
25
+ import com.malinskiy.marathon.config.vendor.apple.TestParserConfiguration as AppleTestParserConfiguration
26
+ import com.malinskiy.marathon.config.vendor.apple.ios.ScreenRecordConfiguration as IosScreenRecordConfiguration
27
+ import com.malinskiy.marathon.config.vendor.apple.ThreadingConfiguration as AppleThreadingConfiguration
28
+ import com.malinskiy.marathon.config.vendor.apple.ios.TimeoutConfiguration as IosTimeoutConfiguration
29
+ import com.malinskiy.marathon.config.vendor.apple.macos.TimeoutConfiguration as MacosTimeoutConfiguration1
28
30
29
31
const val DEFAULT_INIT_TIMEOUT_MILLIS = 30_000
30
32
const val DEFAULT_AUTO_GRANT_PERMISSION = false
@@ -42,6 +44,7 @@ const val DEFAULT_WAIT_FOR_DEVICES_TIMEOUT = 30000L
42
44
@JsonSubTypes(
43
45
JsonSubTypes .Type (value = VendorConfiguration .AndroidConfiguration ::class , name = " Android" ),
44
46
JsonSubTypes .Type (value = VendorConfiguration .IOSConfiguration ::class , name = " iOS" ),
47
+ JsonSubTypes .Type (value = VendorConfiguration .MacosConfiguration ::class , name = " macOS" ),
45
48
JsonSubTypes .Type (value = VendorConfiguration .StubVendorConfiguration ::class , name = " stub" ),
46
49
JsonSubTypes .Type (value = VendorConfiguration .EmptyVendorConfiguration ::class , name = " empty" ),
47
50
)
@@ -152,18 +155,43 @@ sealed class VendorConfiguration {
152
155
@JsonProperty(" ssh" ) val ssh : SshConfiguration = SshConfiguration (),
153
156
154
157
@JsonProperty(" xcresult" ) val xcresult : XcresultConfiguration = XcresultConfiguration (),
155
- @JsonProperty(" screenRecordConfiguration" ) val screenRecordConfiguration : AppleScreenRecordConfiguration = AppleScreenRecordConfiguration (),
158
+ @JsonProperty(" screenRecordConfiguration" ) val screenRecordConfiguration : IosScreenRecordConfiguration = IosScreenRecordConfiguration (),
156
159
@JsonProperty(" xctestrunEnv" ) val xctestrunEnv : Map <String , String > = emptyMap(),
157
160
@JsonProperty(" lifecycle" ) val lifecycleConfiguration : LifecycleConfiguration = LifecycleConfiguration (),
158
161
@JsonProperty(" permissions" ) val permissions : PermissionsConfiguration = PermissionsConfiguration (),
159
- @JsonProperty(" timeoutConfiguration" ) val timeoutConfiguration : AppleTimeoutConfiguration = AppleTimeoutConfiguration (),
160
- @JsonProperty(" threadingConfiguration" ) val threadingConfiguration : IosThreadingConfiguration = IosThreadingConfiguration (),
162
+ @JsonProperty(" timeoutConfiguration" ) val timeoutConfiguration : IosTimeoutConfiguration = IosTimeoutConfiguration (),
163
+ @JsonProperty(" threadingConfiguration" ) val threadingConfiguration : AppleThreadingConfiguration = AppleThreadingConfiguration (),
161
164
@JsonProperty(" hideRunnerOutput" ) val hideRunnerOutput : Boolean = false ,
162
165
@JsonProperty(" compactOutput" ) val compactOutput : Boolean = false ,
163
166
@JsonProperty(" rsync" ) val rsync : RsyncConfiguration = RsyncConfiguration (),
164
167
@JsonProperty(" xcodebuildTestArgs" ) val xcodebuildTestArgs : Map <String , String > = emptyMap(),
165
168
@JsonProperty(" dataContainerClear" ) val dataContainerClear : Boolean = false ,
166
- @JsonProperty(" testParserConfiguration" ) val testParserConfiguration : com.malinskiy.marathon.config.vendor.ios.TestParserConfiguration = com.malinskiy.marathon.config.vendor.ios.TestParserConfiguration .NmTestParserConfiguration (),
169
+ @JsonProperty(" testParserConfiguration" ) val testParserConfiguration : AppleTestParserConfiguration = AppleTestParserConfiguration .NmTestParserConfiguration (),
170
+
171
+ @JsonProperty(" signing" ) val signing : SigningConfiguration = SigningConfiguration (),
172
+ ) : VendorConfiguration() {
173
+ fun validate () {
174
+ ssh.validate()
175
+
176
+ val testBundleConfiguration = bundle ? : throw ConfigurationException (" bundles must contain at least one valid entry" )
177
+ testBundleConfiguration.validate()
178
+ }
179
+ }
180
+
181
+ data class MacosConfiguration (
182
+ @JsonProperty(" bundle" ) val bundle : AppleTestBundleConfiguration ? = null ,
183
+ @JsonProperty(" devices" ) val devicesFile : File ? = null ,
184
+ @JsonProperty(" ssh" ) val ssh : SshConfiguration = SshConfiguration (),
185
+
186
+ @JsonProperty(" xcresult" ) val xcresult : XcresultConfiguration = XcresultConfiguration (),
187
+ @JsonProperty(" xctestrunEnv" ) val xctestrunEnv : Map <String , String > = emptyMap(),
188
+ @JsonProperty(" timeoutConfiguration" ) val timeoutConfiguration : MacosTimeoutConfiguration1 = MacosTimeoutConfiguration1 (),
189
+ @JsonProperty(" threadingConfiguration" ) val threadingConfiguration : AppleThreadingConfiguration = AppleThreadingConfiguration (),
190
+ @JsonProperty(" hideRunnerOutput" ) val hideRunnerOutput : Boolean = false ,
191
+ @JsonProperty(" compactOutput" ) val compactOutput : Boolean = false ,
192
+ @JsonProperty(" rsync" ) val rsync : RsyncConfiguration = RsyncConfiguration (),
193
+ @JsonProperty(" xcodebuildTestArgs" ) val xcodebuildTestArgs : Map <String , String > = emptyMap(),
194
+ @JsonProperty(" testParserConfiguration" ) val testParserConfiguration : AppleTestParserConfiguration = AppleTestParserConfiguration .NmTestParserConfiguration (),
167
195
168
196
@JsonProperty(" signing" ) val signing : SigningConfiguration = SigningConfiguration (),
169
197
) : VendorConfiguration() {
0 commit comments