/* * libquassel * Copyright (c) 2021 Janne Mareike Koschinski * Copyright (c) 2021 The Quassel Project * * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at https://mozilla.org/MPL/2.0/. */ package de.justjanne.coverageconverter import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.testing.jacoco.plugins.JacocoPluginExtension import org.gradle.testing.jacoco.tasks.JacocoReport import java.io.File class CoverageConverterPlugin : Plugin<Project> { override fun apply(project: Project) { val extension = project.extensions.create("coverage", CoverageConverterExtension::class.java) if (extension.autoConfigureCoverage) { val jacocoPluginExtension = project.extensions.findByType(JacocoPluginExtension::class.java) if (jacocoPluginExtension != null) { jacocoPluginExtension.toolVersion = "0.8.3" } } project.afterEvaluate { val testTask = tasks.getByName("test") val jacocoReportTask = tasks.getByName("jacocoTestReport") as? JacocoReport if (jacocoReportTask != null) { jacocoReportTask.dependsOn(testTask) if (extension.autoConfigureCoverage) { jacocoReportTask.sourceDirectories.from(fileTree("src/main/kotlin")) jacocoReportTask.classDirectories.from(fileTree("build/classes")) jacocoReportTask.reports { xml.destination = File("${buildDir}/reports/jacoco/report.xml") html.isEnabled = true xml.isEnabled = true csv.isEnabled = false } } tasks.register("coberturaTestReport") { dependsOn(jacocoReportTask) mustRunAfter(jacocoReportTask) group = "verification" doLast(CoverageConverterAction(jacocoReportTask)) } } } } }