1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2024-09-19 16:42:47 +02:00
IntelliJ-IdeaVim/.teamcity/_Self/buildTypes/TestingBuildType.kt
2023-04-05 22:57:48 +03:00

73 lines
1.9 KiB
Kotlin

@file:Suppress("ClassName")
package _Self.buildTypes
import _Self.IdeaVimBuildType
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
open class TestingBuildType(
private val testName: String,
private val branch: String,
private val version: String = testName,
private val javaVersion: String? = null,
private val javaPlugin: Boolean = true,
) : IdeaVimBuildType({
id("IdeaVimTests_${testName.vanish()}")
name = "Tests for IntelliJ $testName"
params {
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", javaPlugin.not().toString())
param("env.ORG_GRADLE_PROJECT_ideaVersion", version)
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
if (javaVersion != null) {
param("env.ORG_GRADLE_PROJECT_javaVersion", javaVersion)
}
}
vcs {
root(DslContext.settingsRoot)
branchFilter = "+:$branch"
checkoutMode = CheckoutMode.AUTO
}
steps {
gradle {
tasks = "clean test"
buildFile = ""
enableStacktrace = true
}
}
triggers {
vcs {
branchFilter = "+:$branch"
}
}
failureConditions {
failOnMetricChange {
metric = BuildFailureOnMetric.MetricType.TEST_COUNT
threshold = 20
units = BuildFailureOnMetric.MetricUnit.PERCENTS
comparison = BuildFailureOnMetric.MetricComparison.LESS
compareTo = build {
buildRule = lastSuccessful()
}
}
}
})
private fun String.vanish(): String {
return this
.replace(' ', '_')
.replace('.', '_')
.replace('-', '_')
}