All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmTest.kt Maven / Gradle / Ivy

There is a newer version: 2.0.20-RC
Show newest version
/*
 * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
 * that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.gradle.targets.jvm.tasks

import org.gradle.api.internal.tasks.testing.*
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.testing.Test
import org.gradle.api.tasks.testing.TestFilter
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.KotlinTestRun

open class KotlinJvmTest : Test() {
    @Input
    @Optional
    var targetName: String? = null

    override fun createTestExecuter(): TestExecuter =
        if (targetName != null) Executor(
            super.createTestExecuter(),
            targetName!!
        )
        else super.createTestExecuter()

    class Executor(
        private val delegate: TestExecuter,
        private val targetName: String
    ) : TestExecuter by delegate {
        override fun execute(testExecutionSpec: JvmTestExecutionSpec, testResultProcessor: TestResultProcessor) {
            delegate.execute(testExecutionSpec, object : TestResultProcessor by testResultProcessor {
                override fun started(test: TestDescriptorInternal, event: TestStartEvent) {
                    val myTest = object : TestDescriptorInternal by test {
                        override fun getDisplayName(): String = "${test.displayName}[$targetName]"
                        override fun getClassName(): String? = test.className?.replace('$', '.')
                        override fun getClassDisplayName(): String? = test.classDisplayName?.replace('$', '.')
                    }
                    testResultProcessor.started(myTest, event)
                }
            })
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy