Skip to content

Commit 10dd25b

Browse files
committed
Add roseau tasks for comparison with japicmp
1 parent 6d5b0b4 commit 10dd25b

File tree

3 files changed

+62
-3
lines changed

3 files changed

+62
-3
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ openTestReporting-events = { module = "org.opentest4j.reporting:open-test-report
6464
openTestReporting-tooling-core = { module = "org.opentest4j.reporting:open-test-reporting-tooling-core", version.ref = "openTestReporting" }
6565
openTestReporting-tooling-spi = { module = "org.opentest4j.reporting:open-test-reporting-tooling-spi", version.ref = "openTestReporting" }
6666
picocli = { module = "info.picocli:picocli", version = "4.7.7" }
67+
roseau-cli = { module = "io.github.alien-tools:roseau-cli", version = "0.3.0" }
6768
slf4j-julBinding = { module = "org.slf4j:slf4j-jdk14", version = "2.0.17" }
6869
snapshotTests-junit5 = { module = "de.skuzzle.test:snapshot-tests-junit5", version.ref = "snapshotTests" }
6970
snapshotTests-xml = { module = "de.skuzzle.test:snapshot-tests-xml", version.ref = "snapshotTests" }

gradle/plugins/backward-compatibility/src/main/kotlin/junitbuild.backward-compatibility.gradle.kts

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import junitbuild.compatibility.japicmp.AcceptedViolationsPostProcessRule
66
import junitbuild.compatibility.japicmp.BreakingSuperClassChangeRule
77
import junitbuild.compatibility.japicmp.InternalApiFilter
88
import junitbuild.compatibility.japicmp.SourceIncompatibleRule
9+
import junitbuild.extensions.dependencyFromLibs
910
import junitbuild.extensions.javaModuleName
1011
import me.champeau.gradle.japicmp.JapicmpTask
1112
import me.champeau.gradle.japicmp.report.stdrules.BinaryIncompatibleRule
@@ -17,6 +18,14 @@ plugins {
1718
id("me.champeau.gradle.japicmp")
1819
}
1920

21+
val roseauDependencies = configurations.dependencyScope("roseau")
22+
val roseauClasspath = configurations.resolvable("roseauClasspath") {
23+
extendsFrom(roseauDependencies.get())
24+
}
25+
dependencies {
26+
roseauDependencies(dependencyFromLibs("roseau-cli"))
27+
}
28+
2029
val extension = extensions.create<BackwardCompatibilityChecksExtension>("backwardCompatibilityChecks").apply {
2130
enabled.convention(true)
2231
acceptedIncompatibilities.apply {
@@ -49,11 +58,56 @@ val downloadPreviousReleaseJar by tasks.registering(Download::class) {
4958
outputs.cacheIf { true }
5059
}
5160

52-
val checkBackwardCompatibility by tasks.registering(JapicmpTask::class) {
61+
val roseauCsvFile = layout.buildDirectory.file("reports/roseau/breaking-changes.csv")
62+
63+
val roseau by tasks.registering(JavaExec::class) {
5364
if (gradle.startParameter.isOffline) {
5465
enabled = false
5566
}
5667
onlyIf { extension.enabled.get() }
68+
69+
mainClass = "io.github.alien.roseau.cli.RoseauCLI"
70+
classpath = files(roseauClasspath)
71+
72+
inputs.files(configurations.compileClasspath)
73+
.withNormalizer(CompileClasspathNormalizer::class)
74+
.withPropertyName("apiClasspath")
75+
76+
val v1Jar = downloadPreviousReleaseJar.map { it.outputFiles.single() }
77+
inputs.file(v1Jar)
78+
.withNormalizer(CompileClasspathNormalizer::class)
79+
.withPropertyName("v1")
80+
81+
val v2Jar = tasks.jar.flatMap { it.archiveFile }.map { it.asFile }
82+
inputs.file(v2Jar)
83+
.withNormalizer(CompileClasspathNormalizer::class)
84+
.withPropertyName("v2")
85+
86+
outputs.file(roseauCsvFile)
87+
.withPropertyName("report")
88+
89+
argumentProviders.add(CommandLineArgumentProvider {
90+
listOf(
91+
"--classpath", configurations.compileClasspath.get().asPath,
92+
"--v1", v1Jar.get().absolutePath,
93+
"--v2", v2Jar.get().absolutePath,
94+
"--diff",
95+
"--report", roseauCsvFile.get().asFile.absolutePath,
96+
)
97+
})
98+
99+
doFirst {
100+
roseauCsvFile.get().asFile.parentFile.mkdirs()
101+
}
102+
}
103+
104+
val japicmp by tasks.registering(JapicmpTask::class) {
105+
if (gradle.startParameter.isOffline) {
106+
enabled = false
107+
}
108+
onlyIf { extension.enabled.get() }
109+
shouldRunAfter(roseau)
110+
57111
oldClasspath.from(downloadPreviousReleaseJar.map { it.outputFiles })
58112
newClasspath.from(tasks.jar)
59113
onlyModified = true
@@ -73,6 +127,10 @@ val checkBackwardCompatibility by tasks.registering(JapicmpTask::class) {
73127
}
74128
}
75129

130+
val checkBackwardCompatibility by tasks.registering {
131+
dependsOn(roseau, japicmp)
132+
}
133+
76134
tasks.check {
77135
dependsOn(checkBackwardCompatibility)
78136
}
@@ -81,7 +139,7 @@ afterEvaluate {
81139
val params = mapOf(
82140
"acceptedIncompatibilities" to extension.acceptedIncompatibilities.get().joinToString(",")
83141
)
84-
checkBackwardCompatibility {
142+
japicmp {
85143
richReport {
86144
addViolationTransformer(AcceptedViolationSuppressor::class.java, params)
87145
addPostProcessRule(AcceptedViolationsPostProcessRule::class.java, params)

junit-jupiter-api/junit-jupiter-api.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ tasks {
3636
compileJava {
3737
options.compilerArgs.add("-Xlint:-module") // due to qualified exports
3838
}
39-
checkBackwardCompatibility {
39+
japicmp {
4040
classExcludes.addAll($$"*.AssertionsKt$assert*", $$"*.AssertionsKt$evaluate*")
4141
}
4242
jar {

0 commit comments

Comments
 (0)