@@ -11,18 +11,23 @@ import java.nio.file.Paths
11
11
12
12
class AppleTestBundle (
13
13
val application : File ? ,
14
- val testApplication : File ,
14
+ val testApplication : File ? ,
15
+ val xctestBundle : File ,
15
16
val sdk : Sdk ,
16
17
) : TestBundle() {
17
18
private val logger = MarathonLogging .logger {}
18
19
override val id: String
19
- get() = testApplication .absolutePath
20
+ get() = xctestBundle .absolutePath
20
21
21
22
val applicationBundleInfo: BundleInfo ? by lazy {
22
23
application?.let {
23
24
PropertyList .from<NSDictionary , BundleInfo >(
24
25
when (sdk) {
25
- Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> File (it, " Info.plist" )
26
+ Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> File (
27
+ it,
28
+ " Info.plist"
29
+ )
30
+
26
31
Sdk .MACOS -> Paths .get(it.absolutePath, " Contents" , " Info.plist" ).toFile()
27
32
}
28
33
)
@@ -34,36 +39,67 @@ class AppleTestBundle(
34
39
35
40
val testBundleInfo: BundleInfo by lazy {
36
41
val file = when (sdk) {
37
- Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> File (testApplication, " Info.plist" )
38
- Sdk .MACOS -> Paths .get(testApplication.absolutePath, " Contents" , " Info.plist" ).toFile()
42
+ Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> File (
43
+ xctestBundle,
44
+ " Info.plist"
45
+ )
46
+
47
+ Sdk .MACOS -> Paths .get(xctestBundle.absolutePath, " Contents" , " Info.plist" ).toFile()
39
48
}
40
49
PropertyList .from(file)
41
50
}
42
- val testBundleId = (testBundleInfo.naming.bundleName ? : testApplication .nameWithoutExtension).replace(" [- ]" .toRegex(), " _" )
51
+ val testBundleId = (testBundleInfo.naming.bundleName ? : xctestBundle .nameWithoutExtension).replace(" [- ]" .toRegex(), " _" )
43
52
44
53
val testBinary: File by lazy {
45
54
val possibleTestBinaries = when (sdk) {
46
- Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> testApplication.listFiles()?.filter { it.isFile && it.extension == " " }
47
- ? : throw ConfigurationException (" missing test binaries in xctest folder at $testApplication " )
55
+ Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> xctestBundle.listFiles()
56
+ ?.filter { it.isFile && it.extension == " " }
57
+ ? : throw ConfigurationException (" missing test binaries in xctest folder at $xctestBundle " )
48
58
49
- Sdk .MACOS -> Paths .get(testApplication .absolutePath, * relativeBinaryPath).toFile().listFiles()
59
+ Sdk .MACOS -> Paths .get(xctestBundle .absolutePath, * relativeBinaryPath).toFile().listFiles()
50
60
?.filter { it.isFile && it.extension == " " }
51
- ? : throw ConfigurationException (" missing test binaries in xctest folder at $testApplication " )
61
+ ? : throw ConfigurationException (" missing test binaries in xctest folder at $xctestBundle " )
52
62
}
53
63
when (possibleTestBinaries.size) {
54
- 0 -> throw ConfigurationException (" missing test binaries in xctest folder at $testApplication " )
64
+ 0 -> throw ConfigurationException (" missing test binaries in xctest folder at $xctestBundle " )
55
65
1 -> possibleTestBinaries[0 ]
56
66
else -> {
57
- logger.warn { " Multiple test binaries present in xctest folder" }
58
- possibleTestBinaries.find { it.name == testApplication.nameWithoutExtension } ? : possibleTestBinaries.first()
67
+ logger.warn { " Multiple test binaries present [${possibleTestBinaries.joinToString(" ," ) { it.name }} ] in xctest folder" }
68
+ possibleTestBinaries.find { it.name == xctestBundle.nameWithoutExtension } ? : possibleTestBinaries.first()
69
+ }
70
+ }
71
+ }
72
+
73
+ val testRunnerBinary: File by lazy {
74
+ if (testApplication == null ) {
75
+ throw ConfigurationException (" no test application provided" )
76
+ }
77
+
78
+ val possibleTestRunnerBinaries = when (sdk) {
79
+ Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> testApplication.listFiles()
80
+ ?.filter { it.isFile && it.extension == " " }
81
+ ? : throw ConfigurationException (" missing test binaries in test runner folder at $testApplication " )
82
+
83
+ Sdk .MACOS -> Paths .get(testApplication.absolutePath, * relativeBinaryPath).toFile().listFiles()
84
+ ?.filter { it.isFile && it.extension == " " }
85
+ ? : throw ConfigurationException (" missing test binaries in test runner folder at $testApplication " )
86
+ }
87
+ when (possibleTestRunnerBinaries.size) {
88
+ 0 -> throw ConfigurationException (" missing test binaries in test runner folder at $testApplication " )
89
+ 1 -> possibleTestRunnerBinaries[0 ]
90
+ else -> {
91
+ logger.warn { " Multiple test binaries present [${possibleTestRunnerBinaries.joinToString(" ," ) { it.name }} ] in test runner folder" }
92
+ possibleTestRunnerBinaries.find { it.name == testApplication.nameWithoutExtension } ? : possibleTestRunnerBinaries.first()
59
93
}
60
94
}
61
95
}
62
96
63
97
val applicationBinary: File ? by lazy {
64
98
application?.let { application ->
65
99
when (sdk) {
66
- Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> application.listFiles()?.filter { it.isFile && it.extension == " " }
100
+ Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> application.listFiles()
101
+ ?.filter { it.isFile && it.extension == " " }
102
+
67
103
Sdk .MACOS -> Paths .get(application.absolutePath, * relativeBinaryPath).toFile().listFiles()
68
104
?.filter { it.isFile && it.extension == " " }
69
105
}?.let { possibleBinaries ->
@@ -84,7 +120,7 @@ class AppleTestBundle(
84
120
*/
85
121
val relativeBinaryPath: Array <String > by lazy {
86
122
when (sdk) {
87
- Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> emptyArray()
123
+ Sdk .IPHONEOS , Sdk .IPHONESIMULATOR , Sdk .TV , Sdk .TV_SIMULATOR , Sdk .WATCH , Sdk .WATCH_SIMULATOR , Sdk .VISION , Sdk .VISION_SIMULATOR -> emptyArray()
88
124
Sdk .MACOS -> arrayOf(" Contents" , " MacOS" )
89
125
}
90
126
}
0 commit comments