Skip to content

Commit 668eec4

Browse files
author
Piotr Zawadzki
committed
Make XRunner ready for Orchestrator V2.
The changes are based on the implementation of AndroidJUnitRunner and TestEventClient.
1 parent b0e514c commit 668eec4

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

xrunner-library/src/main/java/com/stepstone/xrunner/AndroidJUnitXRunner.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.stepstone.xrunner.internal.ARGUMENT_CLASS
1010
import com.stepstone.xrunner.internal.ARGUMENT_LIST_TESTS_FOR_ORCHESTRATOR
1111
import com.stepstone.xrunner.internal.ARGUMENT_NOT_CLASS
1212
import com.stepstone.xrunner.internal.ARGUMENT_NOT_PACKAGE
13+
import com.stepstone.xrunner.internal.ARGUMENT_ORCHESTRATOR_DISCOVERY_SERVICE
1314
import com.stepstone.xrunner.internal.ARGUMENT_PACKAGE
1415
import com.stepstone.xrunner.internal.ARGUMENT_TARGET_PROCESS
1516
import com.stepstone.xrunner.internal.OrchestratorListenerWrapper
@@ -103,15 +104,18 @@ open class AndroidJUnitXRunner : AndroidJUnitRunner() {
103104
}
104105

105106
private fun shouldUpdateTestSuiteForXRunner(): Boolean {
106-
// TODO: 12/08/2021 check for orchestration V2
107107
val listTestsForOrchestrator = (originalBundle.getString(ARGUMENT_LIST_TESTS_FOR_ORCHESTRATOR, false.toString())!!).toBoolean()
108-
return listTestsForOrchestrator && isPrimaryInstrumentationProcess() && shouldUseXRunner(originalBundle)
108+
val testDiscoveryForOrchestratorV2Provided = !originalBundle.getString(ARGUMENT_ORCHESTRATOR_DISCOVERY_SERVICE).isNullOrEmpty()
109+
return isPrimaryInstrumentationProcess() &&
110+
(testDiscoveryForOrchestratorV2Provided || listTestsForOrchestrator) &&
111+
shouldUseXRunner(originalBundle)
109112
}
110113

111114
private fun updateListenersBeforeXRunnerTestExecution(testEventClient: TestEventClient) {
112115
val runnerArgs = getRunnerArgsWithReflection()
113116
SuperReflect.on(runnerArgs).set(
114-
RUNNER_ARGS_FIELD_LISTENERS, mutableListOf<RunListener>(
117+
RUNNER_ARGS_FIELD_LISTENERS,
118+
mutableListOf<RunListener>(
115119
OrchestratorListenerWrapper(
116120
testEventClient.runListener!!,
117121
originalTestToRun

xrunner-library/src/main/java/com/stepstone/xrunner/internal/TestArgumentsProvider.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
package com.stepstone.xrunner.internal
22

33
import android.os.Bundle
4+
import kotlin.math.max
45

56
private const val XRUNNER_DEFAULT_COUNT = "10"
67

78
fun getClassArgument(bundle: Bundle): String? = bundle.getString(ARGUMENT_CLASS)
89

910
fun isXRunnerTestExecution(bundle: Bundle): Boolean = isXRunnerTest(getClassArgument(bundle))
1011

11-
fun getXRunnerCountArgument(bundle: Bundle): Int = Math.max(
12+
fun getXRunnerCountArgument(bundle: Bundle): Int = max(
1213
bundle.getString(
1314
ARGUMENT_XRUNNER_COUNT,
1415
XRUNNER_DEFAULT_COUNT
15-
).toInt(), 0
16+
).toInt(),
17+
0
1618
)
1719

1820
fun shouldUseXRunner(bundle: Bundle): Boolean = !getXRunnerClassArgument(bundle).isNullOrEmpty() ||

xrunner-library/src/main/java/com/stepstone/xrunner/internal/XRunnerConstants.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ internal const val ARGUMENT_PACKAGE = "package"
66
internal const val ARGUMENT_NOT_PACKAGE = "notPackage"
77
internal const val ARGUMENT_TARGET_PROCESS = "targetProcess"
88
internal const val ARGUMENT_LIST_TESTS_FOR_ORCHESTRATOR = "listTestsForOrchestrator"
9+
internal const val ARGUMENT_ORCHESTRATOR_DISCOVERY_SERVICE = "testDiscoveryService"
910

1011
internal const val ARGUMENT_XRUNNER_CLASS = "xrunnerClass"
1112
internal const val ARGUMENT_XRUNNER_NOT_CLASS = "xrunnerNotClass"

0 commit comments

Comments
 (0)