Skip to content

Commit 015f7d1

Browse files
committed
feat(apple): rework apple to support additional targets
1 parent 012f6b5 commit 015f7d1

File tree

220 files changed

+1137
-936
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

220 files changed

+1137
-936
lines changed

cli/src/main/kotlin/com/malinskiy/marathon/cli/ApplicationView.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import com.malinskiy.marathon.config.serialization.ConfigurationFactory
2020
import com.malinskiy.marathon.config.vendor.VendorConfiguration
2121
import com.malinskiy.marathon.di.marathonStartKoin
2222
import com.malinskiy.marathon.exceptions.ExceptionsReporterFactory
23-
import com.malinskiy.marathon.apple.ios.AppleVendor
23+
import com.malinskiy.marathon.apple.ios.IosVendor
2424
import com.malinskiy.marathon.log.MarathonLogging
2525
import org.koin.core.context.stopKoin
2626
import org.koin.dsl.module
@@ -66,7 +66,7 @@ private fun execute(cliConfiguration: CliConfiguration) {
6666
val vendorConfiguration = configuration.vendorConfiguration
6767
val modules = when (vendorConfiguration) {
6868
is VendorConfiguration.IOSConfiguration -> {
69-
AppleVendor + module { single { vendorConfiguration } }
69+
IosVendor + module { single { vendorConfiguration } }
7070
}
7171
is VendorConfiguration.AndroidConfiguration -> {
7272
AndroidVendor + module { single { vendorConfiguration } } + listOf(adamModule)

configuration/src/main/kotlin/com/malinskiy/marathon/config/serialization/ConfigurationFactory.kt

+42-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import com.malinskiy.marathon.config.exceptions.ConfigurationException
1616
import com.malinskiy.marathon.config.serialization.time.InstantTimeProviderImpl
1717
import com.malinskiy.marathon.config.serialization.yaml.SerializeModule
1818
import com.malinskiy.marathon.config.vendor.VendorConfiguration
19-
import com.malinskiy.marathon.config.vendor.ios.AppleTestBundleConfiguration
20-
import com.malinskiy.marathon.config.vendor.ios.SshAuthentication
19+
import com.malinskiy.marathon.config.vendor.apple.AppleTestBundleConfiguration
20+
import com.malinskiy.marathon.config.vendor.apple.SshAuthentication
2121
import org.apache.commons.text.StringSubstitutor
2222
import org.apache.commons.text.lookup.StringLookupFactory
2323
import java.io.File
@@ -105,6 +105,46 @@ class ConfigurationFactory(
105105
ssh = optionalSshConfiguration,
106106
)
107107
}
108+
is VendorConfiguration.MacosConfiguration -> {
109+
// Any relative path specified in Marathonfile should be resolved against the directory Marathonfile is in
110+
val macosConfiguration: VendorConfiguration.MacosConfiguration = configuration.vendorConfiguration
111+
val resolvedBundle = macosConfiguration.bundle?.let {
112+
val resolvedDerivedDataDir = it.derivedDataDir?.let { ddd -> marathonfileDir.resolve(ddd) }
113+
val resolvedApplication = it.application?.let { ddd -> marathonfileDir.resolve(ddd) }
114+
val resolvedTestApplication = it.testApplication?.let { ddd -> marathonfileDir.resolve(ddd) }
115+
val resolvedExtraApplications = it.extraApplications?.map { ddd -> marathonfileDir.resolve(ddd) }
116+
117+
AppleTestBundleConfiguration(
118+
resolvedApplication,
119+
resolvedTestApplication,
120+
resolvedExtraApplications,
121+
resolvedDerivedDataDir
122+
).apply { validate() }
123+
}
124+
val optionalDevices = configuration.vendorConfiguration.devicesFile?.resolveAgainst(marathonfileDir)
125+
?: marathonfileDir.resolve("Marathondevices")
126+
127+
val optionalknownHostsPath = macosConfiguration.ssh.knownHostsPath?.resolveAgainst(marathonfileDir)
128+
val optionalSshAuthentication = when (macosConfiguration.ssh.authentication) {
129+
is SshAuthentication.PasswordAuthentication -> macosConfiguration.ssh.authentication
130+
is SshAuthentication.PublicKeyAuthentication -> macosConfiguration.ssh.authentication.copy(
131+
username = macosConfiguration.ssh.authentication.username,
132+
key = macosConfiguration.ssh.authentication.key.resolveAgainst(marathonfileDir)
133+
)
134+
135+
null -> null
136+
}
137+
val optionalSshConfiguration = macosConfiguration.ssh.copy(
138+
authentication = optionalSshAuthentication,
139+
knownHostsPath = optionalknownHostsPath,
140+
)
141+
142+
configuration.vendorConfiguration.copy(
143+
bundle = resolvedBundle,
144+
devicesFile = optionalDevices,
145+
ssh = optionalSshConfiguration,
146+
)
147+
}
108148

109149
VendorConfiguration.StubVendorConfiguration -> configuration.vendorConfiguration
110150
is VendorConfiguration.EmptyVendorConfiguration -> throw ConfigurationException("No vendor configuration specified")

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/VendorConfiguration.kt

+42-14
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,19 @@ import com.malinskiy.marathon.config.vendor.android.TestAccessConfiguration
1414
import com.malinskiy.marathon.config.vendor.android.TestParserConfiguration
1515
import com.malinskiy.marathon.config.vendor.android.ThreadingConfiguration
1616
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
2424
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
2830

2931
const val DEFAULT_INIT_TIMEOUT_MILLIS = 30_000
3032
const val DEFAULT_AUTO_GRANT_PERMISSION = false
@@ -42,6 +44,7 @@ const val DEFAULT_WAIT_FOR_DEVICES_TIMEOUT = 30000L
4244
@JsonSubTypes(
4345
JsonSubTypes.Type(value = VendorConfiguration.AndroidConfiguration::class, name = "Android"),
4446
JsonSubTypes.Type(value = VendorConfiguration.IOSConfiguration::class, name = "iOS"),
47+
JsonSubTypes.Type(value = VendorConfiguration.MacosConfiguration::class, name = "macOS"),
4548
JsonSubTypes.Type(value = VendorConfiguration.StubVendorConfiguration::class, name = "stub"),
4649
JsonSubTypes.Type(value = VendorConfiguration.EmptyVendorConfiguration::class, name = "empty"),
4750
)
@@ -152,18 +155,43 @@ sealed class VendorConfiguration {
152155
@JsonProperty("ssh") val ssh: SshConfiguration = SshConfiguration(),
153156

154157
@JsonProperty("xcresult") val xcresult: XcresultConfiguration = XcresultConfiguration(),
155-
@JsonProperty("screenRecordConfiguration") val screenRecordConfiguration: AppleScreenRecordConfiguration = AppleScreenRecordConfiguration(),
158+
@JsonProperty("screenRecordConfiguration") val screenRecordConfiguration: IosScreenRecordConfiguration = IosScreenRecordConfiguration(),
156159
@JsonProperty("xctestrunEnv") val xctestrunEnv: Map<String, String> = emptyMap(),
157160
@JsonProperty("lifecycle") val lifecycleConfiguration: LifecycleConfiguration = LifecycleConfiguration(),
158161
@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(),
161164
@JsonProperty("hideRunnerOutput") val hideRunnerOutput: Boolean = false,
162165
@JsonProperty("compactOutput") val compactOutput: Boolean = false,
163166
@JsonProperty("rsync") val rsync: RsyncConfiguration = RsyncConfiguration(),
164167
@JsonProperty("xcodebuildTestArgs") val xcodebuildTestArgs: Map<String, String> = emptyMap(),
165168
@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(),
167195

168196
@JsonProperty("signing") val signing: SigningConfiguration = SigningConfiguration(),
169197
) : VendorConfiguration() {

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/AppleTestBundleConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/AppleTestBundleConfiguration.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple
22

33
import com.fasterxml.jackson.annotation.JsonIgnore
44
import com.fasterxml.jackson.annotation.JsonProperty
55
import com.malinskiy.marathon.config.exceptions.ConfigurationException
6-
import com.malinskiy.marathon.config.serialization.yaml.FileListProvider
76
import java.io.File
87
import java.io.FileOutputStream
98
import java.util.zip.ZipFile

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/RsyncConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/RsyncConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/SshConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/SshConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44
import com.fasterxml.jackson.annotation.JsonSubTypes

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/TestParserConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/TestParserConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple
22

33
import com.fasterxml.jackson.annotation.JsonSubTypes
44
import com.fasterxml.jackson.annotation.JsonTypeInfo

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/TestType.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/TestType.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/ThreadingConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ThreadingConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/Display.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ios/Display.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple.ios
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/LifecycleConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ios/LifecycleConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple.ios
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/Mask.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ios/Mask.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple.ios
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/PermissionsConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ios/PermissionsConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple.ios
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/ScreenRecordConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ios/ScreenRecordConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple.ios
22

33
import com.fasterxml.jackson.annotation.JsonCreator
44
import com.fasterxml.jackson.annotation.JsonProperty

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/ScreenshotConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ios/ScreenshotConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple.ios
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44
import java.time.Duration

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/SigningConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ios/SigningConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple.ios
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/TimeoutConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ios/TimeoutConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple.ios
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44
import java.time.Duration

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/VideoConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ios/VideoConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple.ios
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/ios/XcresultConfiguration.kt configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/apple/ios/XcresultConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.malinskiy.marathon.config.vendor.ios
1+
package com.malinskiy.marathon.config.vendor.apple.ios
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.malinskiy.marathon.config.vendor.apple.macos
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty
4+
import java.time.Duration
5+
import java.time.temporal.ChronoUnit
6+
7+
/**
8+
* @param shell default timeout for shell commands
9+
* @param shellIdle default idling timeout for shell commands
10+
* @param reachability timeout for inactive remote host
11+
*/
12+
data class TimeoutConfiguration(
13+
@JsonProperty("shell") var shell: Duration = Duration.ofSeconds(30),
14+
@JsonProperty("shellIdle") var shellIdle: Duration = Duration.ofSeconds(30),
15+
@JsonProperty("reachability") var reachability: Duration = Duration.ofSeconds(5),
16+
)

configuration/src/test/kotlin/com/malinskiy/marathon/config/serialization/IosConfigurationFactoryTest.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
55
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator
66
import com.malinskiy.marathon.config.serialization.time.InstantTimeProvider
77
import com.malinskiy.marathon.config.vendor.VendorConfiguration
8-
import com.malinskiy.marathon.config.vendor.ios.AppleTestBundleConfiguration
9-
import com.malinskiy.marathon.config.vendor.ios.LifecycleConfiguration
10-
import com.malinskiy.marathon.config.vendor.ios.RsyncConfiguration
11-
import com.malinskiy.marathon.config.vendor.ios.SshAuthentication
12-
import com.malinskiy.marathon.config.vendor.ios.SshConfiguration
8+
import com.malinskiy.marathon.config.vendor.apple.AppleTestBundleConfiguration
9+
import com.malinskiy.marathon.config.vendor.apple.ios.LifecycleConfiguration
10+
import com.malinskiy.marathon.config.vendor.apple.RsyncConfiguration
11+
import com.malinskiy.marathon.config.vendor.apple.SshAuthentication
12+
import com.malinskiy.marathon.config.vendor.apple.SshConfiguration
1313
import org.amshove.kluent.shouldBeEqualTo
1414
import org.junit.jupiter.api.Test
1515
import java.io.File

configuration/src/test/kotlin/com/malinskiy/marathon/config/vendor/ios/AppleTestBundleConfigurationTest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.malinskiy.marathon.config.vendor.ios
22

33
import com.malinskiy.marathon.config.exceptions.ConfigurationException
44
import com.malinskiy.marathon.config.vendor.IOSConfigurationTest
5+
import com.malinskiy.marathon.config.vendor.apple.AppleTestBundleConfiguration
56
import org.amshove.kluent.invoking
67
import org.amshove.kluent.shouldThrow
78
import org.junit.jupiter.api.Test

core/src/main/kotlin/com/malinskiy/marathon/Marathon.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,14 @@ class Marathon(
124124
throw ConfigurationException("Unknown test parser type for ${testParser::class}, should inherit from either ${LocalTestParser::class.simpleName} or ${RemoteTestParser::class.simpleName}")
125125
}
126126
}
127-
}.let { println("Took $it ms") }
127+
}.let { log.debug { "Parsing took $it ms" } }
128128

129129
usageTracker.meta(
130130
version = BuildConfig.VERSION, releaseMode = BuildConfig.RELEASE_MODE, vendor = when (configuration.vendorConfiguration) {
131131
is VendorConfiguration.AndroidConfiguration -> "android"
132132
is VendorConfiguration.EmptyVendorConfiguration -> "empty"
133133
is VendorConfiguration.IOSConfiguration -> "ios"
134+
is VendorConfiguration.MacosConfiguration -> "macos"
134135
VendorConfiguration.StubVendorConfiguration -> "testing"
135136
}
136137
)

core/src/main/kotlin/com/malinskiy/marathon/di/Modules.kt

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ val coreModule = module {
5757
fun marathonStartKoin(configuration: Configuration, modules: List<Module>): KoinApplication {
5858
val configurationModule = module {
5959
single { configuration }
60+
single { configuration.vendorConfiguration }
6061
}
6162

6263
return startKoin {
+31
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,45 @@
1+
import com.malinskiy.marathon.buildsystem.XcresulttoolPlugin
2+
13
plugins {
24
`java-library`
35
jacoco
46
id("org.jetbrains.kotlin.jvm")
57
id("org.jetbrains.dokka")
68
}
79

10+
apply<XcresulttoolPlugin>()
11+
812
dependencies {
13+
api(Libraries.kotlinStdLib)
14+
api(Libraries.kotlinCoroutines)
15+
api(Libraries.kotlinLogging)
16+
api(Libraries.kotlinReflect)
17+
api(Libraries.logbackClassic)
18+
api(Libraries.ddPlist)
19+
api(Libraries.guava)
20+
api(Libraries.rsync4j)
21+
22+
api(Libraries.gson)
23+
api(Libraries.jacksonKotlin)
24+
api(Libraries.jacksonYaml)
25+
api(Libraries.jansi)
26+
api(Libraries.kotlinProcess)
927
api(Libraries.sshj)
28+
29+
api(project(":core"))
30+
31+
testImplementation(TestLibraries.kluent)
32+
testImplementation(TestLibraries.assertk)
33+
testImplementation(TestLibraries.mockitoKotlin)
34+
testImplementation(TestLibraries.testContainers)
35+
testImplementation(TestLibraries.testContainersJupiter)
36+
testImplementation(TestLibraries.junit5)
37+
testImplementation(TestLibraries.coroutinesTest)
38+
testRuntimeOnly(TestLibraries.jupiterEngine)
1039
}
1140

1241
setupDeployment()
1342
setupKotlinCompiler()
1443
setupTestTask()
44+
45+
tasks.findByPath("sourcesJar")?.dependsOn(tasks.findByPath("generateXcresulttoolSource"))

0 commit comments

Comments
 (0)