From 33bccfa3bbf86a5c447a75398859d63513627e78 Mon Sep 17 00:00:00 2001 From: Ivan Balaksha Date: Wed, 25 Apr 2018 14:14:27 +0800 Subject: [PATCH] add CompositeTestRunListener --- .../executor/AndroidDeviceTestRunner.kt | 4 +- .../listeners/CompositeTestRunListener.kt | 46 +++++++++++++++++++ .../{ => listeners}/DebugTestRunListener.kt | 2 +- .../executor/listeners/NoOpTestRunListener.kt | 24 ++++++++++ 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/CompositeTestRunListener.kt rename vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/{ => listeners}/DebugTestRunListener.kt (96%) create mode 100644 vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/NoOpTestRunListener.kt diff --git a/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/AndroidDeviceTestRunner.kt b/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/AndroidDeviceTestRunner.kt index 83e072b15..7b43d7e37 100644 --- a/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/AndroidDeviceTestRunner.kt +++ b/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/AndroidDeviceTestRunner.kt @@ -3,6 +3,8 @@ package com.malinskiy.marathon.android.executor import com.android.ddmlib.IDevice import com.android.ddmlib.testrunner.RemoteAndroidTestRunner import com.malinskiy.marathon.android.ApkParser +import com.malinskiy.marathon.android.executor.listeners.CompositeTestRunListener +import com.malinskiy.marathon.android.executor.listeners.DebugTestRunListener import com.malinskiy.marathon.execution.Configuration import com.malinskiy.marathon.test.TestBatch import mu.KotlinLogging @@ -25,6 +27,6 @@ class AndroidDeviceTestRunner(private val device: IDevice) { logger.debug { "tests = ${tests.toList()}" } runner.setClassNames(tests) - runner.run(DebugTestRunListener(device)) + runner.run(CompositeTestRunListener(listOf(DebugTestRunListener(device)))) } } \ No newline at end of file diff --git a/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/CompositeTestRunListener.kt b/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/CompositeTestRunListener.kt new file mode 100644 index 000000000..77bae9c4c --- /dev/null +++ b/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/CompositeTestRunListener.kt @@ -0,0 +1,46 @@ +package com.malinskiy.marathon.android.executor.listeners + +import com.android.ddmlib.testrunner.ITestRunListener +import com.android.ddmlib.testrunner.TestIdentifier + +class CompositeTestRunListener(private val listeners: List) : ITestRunListener { + private inline fun execute(f: (ITestRunListener) -> Unit) { + listeners.forEach(f) + } + + override fun testRunStarted(runName: String?, testCount: Int) { + execute { it.testRunStarted(runName, testCount) } + } + + override fun testStarted(test: TestIdentifier?) { + execute { it.testStarted(test) } + } + + override fun testAssumptionFailure(test: TestIdentifier?, trace: String?) { + execute { it.testAssumptionFailure(test, trace) } + } + + override fun testRunStopped(elapsedTime: Long) { + execute { it.testRunStopped(elapsedTime) } + } + + override fun testFailed(test: TestIdentifier?, trace: String?) { + execute { it.testFailed(test, trace) } + } + + override fun testEnded(test: TestIdentifier?, testMetrics: MutableMap?) { + execute { it.testEnded(test, testMetrics) } + } + + override fun testIgnored(test: TestIdentifier?) { + execute { it.testIgnored(test) } + } + + override fun testRunFailed(errorMessage: String?) { + execute { it.testRunFailed(errorMessage) } + } + + override fun testRunEnded(elapsedTime: Long, runMetrics: MutableMap?) { + execute { it.testRunEnded(elapsedTime, runMetrics) } + } +} \ No newline at end of file diff --git a/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/DebugTestRunListener.kt b/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/DebugTestRunListener.kt similarity index 96% rename from vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/DebugTestRunListener.kt rename to vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/DebugTestRunListener.kt index f114f8e6a..6d815afbb 100644 --- a/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/DebugTestRunListener.kt +++ b/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/DebugTestRunListener.kt @@ -1,4 +1,4 @@ -package com.malinskiy.marathon.android.executor +package com.malinskiy.marathon.android.executor.listeners import com.android.ddmlib.IDevice import com.android.ddmlib.testrunner.ITestRunListener diff --git a/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/NoOpTestRunListener.kt b/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/NoOpTestRunListener.kt new file mode 100644 index 000000000..dfcc533d8 --- /dev/null +++ b/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/executor/listeners/NoOpTestRunListener.kt @@ -0,0 +1,24 @@ +package com.malinskiy.marathon.android.executor.listeners + +import com.android.ddmlib.testrunner.ITestRunListener +import com.android.ddmlib.testrunner.TestIdentifier + +open class NoOpTestRunListener : ITestRunListener { + override fun testRunStarted(runName: String, testCount: Int) {} + + override fun testStarted(test: TestIdentifier) {} + + override fun testFailed(test: TestIdentifier, trace: String) {} + + override fun testAssumptionFailure(test: TestIdentifier, trace: String) {} + + override fun testIgnored(test: TestIdentifier) {} + + override fun testEnded(test: TestIdentifier, testMetrics: Map) {} + + override fun testRunFailed(errorMessage: String) {} + + override fun testRunStopped(elapsedTime: Long) {} + + override fun testRunEnded(elapsedTime: Long, runMetrics: Map) {} +}