jApiCmp exclusions (#4746)
* Demonstrate failing japicmp * Exclude allowable compatiblity changes * Rollback temp change to MetricExporter
This commit is contained in:
parent
d069e1b473
commit
1697130f0a
|
|
@ -22,7 +22,7 @@ dependencies {
|
|||
implementation("com.squareup.wire:wire-gradle-plugin:4.3.0")
|
||||
implementation("gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.18")
|
||||
implementation("gradle.plugin.io.morethan.jmhreport:gradle-jmh-report:0.9.0")
|
||||
implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.0")
|
||||
implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.1")
|
||||
implementation("me.champeau.jmh:jmh-gradle-plugin:0.6.6")
|
||||
implementation("net.ltgt.gradle:gradle-errorprone-plugin:2.0.2")
|
||||
implementation("net.ltgt.gradle:gradle-nullaway-plugin:1.3.0")
|
||||
|
|
|
|||
|
|
@ -35,17 +35,6 @@ val latestReleasedVersion: String by lazy {
|
|||
class AllowDefaultMethodRule : AbstractRecordingSeenMembers() {
|
||||
override fun maybeAddViolation(member: JApiCompatibility): Violation? {
|
||||
for (change in member.compatibilityChanges) {
|
||||
if (change == JApiCompatibilityChange.METHOD_NEW_DEFAULT) {
|
||||
// JApiCmp treats this as incompatible for the situation where an existing subclass may have
|
||||
// a method with the same name and different signature. We accept this corner case for
|
||||
// semver.
|
||||
continue
|
||||
}
|
||||
if (change == JApiCompatibilityChange.METHOD_ABSTRACT_NOW_DEFAULT) {
|
||||
// Adding default implementations to interface methods previously abstract is not a breaking
|
||||
// change.
|
||||
continue
|
||||
}
|
||||
if (isAbstractMethodOnAutoValue(member, change)) {
|
||||
continue
|
||||
}
|
||||
|
|
@ -125,9 +114,10 @@ if (!project.hasProperty("otel.release") && !project.name.startsWith("bom")) {
|
|||
)
|
||||
|
||||
// Reproduce defaults from https://github.com/melix/japicmp-gradle-plugin/blob/09f52739ef1fccda6b4310cf3f4b19dc97377024/src/main/java/me/champeau/gradle/japicmp/report/ViolationsGenerator.java#L130
|
||||
// only changing the BinaryIncompatibleRule to our custom one that allows new default methods
|
||||
// on interfaces, and adding default implementations to interface methods previously
|
||||
// abstract.
|
||||
// but allow new default methods on interfaces, adding default implementations to
|
||||
// interface methods previously abstract, and select additional customizations defined in
|
||||
// AllowDefaultMethodRule.
|
||||
compatibilityChangeExcludes.set(listOf("METHOD_NEW_DEFAULT", "METHOD_ABSTRACT_NOW_DEFAULT"))
|
||||
richReport {
|
||||
addSetupRule(RecordSeenMembersSetup::class.java)
|
||||
addRule(JApiChangeStatus.NEW, SourceCompatibleRule::class.java)
|
||||
|
|
|
|||
Loading…
Reference in New Issue