opentelemetry-java-instrume.../gradle/jacoco.gradle

71 lines
1.9 KiB
Groovy

apply plugin: "jacoco"
jacoco {
toolVersion = "0.8.2"
}
jacocoTestReport {
dependsOn test
reports {
xml.enabled true
csv.enabled false
html.destination file("${buildDir}/reports/jacoco/")
}
}
if (project.parent.hasProperty("excludedClassesConverage")) {
project.ext.excludedClassesConverage = parent.excludedClassesConverage
} else {
project.ext.excludedClassesConverage = []
}
if (project.parent.hasProperty("excludedClassesBranchConverage")) {
project.ext.excludedClassesBranchConverage = parent.excludedClassesBranchConverage
} else {
project.ext.excludedClassesBranchConverage = []
}
if (project.parent.hasProperty("excludedClassesInstructionConverage")) {
project.ext.excludedClassesInstructionConverage = parent.excludedClassesInstructionConverage
} else {
project.ext.excludedClassesInstructionConverage = []
}
// defaults can be overridden per project:
project.ext.minimumBranchCoverage = 0.9
project.ext.minimumInstructionCoverage = 0.9
afterEvaluate {
test {
jacoco {
// Make sure that excluded classes do not get jacoc instrumentation applied since it may confuse apm agent in some cases
excludes = project.excludedClassesConverage
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
element = 'CLASS'
excludes = project.excludedClassesBranchConverage + project.excludedClassesConverage
limit {
counter = 'BRANCH'
minimum = project.minimumBranchCoverage
}
}
rule {
element = 'CLASS'
excludes = project.excludedClassesInstructionConverage + project.excludedClassesConverage
limit {
counter = 'INSTRUCTION'
minimum = project.minimumInstructionCoverage
}
}
}
}
jacocoTestCoverageVerification.dependsOn jacocoTestReport
check.dependsOn jacocoTestCoverageVerification
}