Skip to content

Commit d7b03ae

Browse files
authored
chore(java): add api compat check (#1335)
1 parent 69aa997 commit d7b03ae

File tree

5 files changed

+48
-1
lines changed

5 files changed

+48
-1
lines changed

.github/.cache_version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.17
1+
0.0.18

.github/workflows/check.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,10 @@ jobs:
232232
if: ${{ steps.cache.outputs.cache-hit != 'true' && matrix.client.language == 'javascript' && contains(matrix.client.toRun,'algoliasearch') }}
233233
run: cd ${{ matrix.client.path }} && yarn workspace algoliasearch test
234234

235+
- name: Run Java 'algoliasearch' public API validation
236+
if: ${{ steps.cache.outputs.cache-hit != 'true' && matrix.client.language == 'java' }}
237+
run: cd ${{ matrix.client.path }} && ./gradlew :api:japicmp
238+
235239
- name: Remove previous CTS output
236240
run: rm -rf ${{ matrix.client.testsToDelete }} || true
237241

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ dist
3030

3131
generators/bin
3232

33+
**/java/bin/
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// This package is to check the public API (binary) compatibility of the latest
2+
// published release with `algoliasearch-client-java` package.
3+
4+
import me.champeau.gradle.japicmp.JapicmpTask
5+
6+
plugins {
7+
id 'java-library'
8+
id 'me.champeau.gradle.japicmp' version '0.4.1'
9+
}
10+
11+
repositories {
12+
maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
13+
mavenCentral()
14+
}
15+
16+
def baselineConfig = configurations.register('baseline')
17+
def latestConfig = configurations.register('latest')
18+
19+
dependencies {
20+
baseline('com.algolia:algoliasearch-client-java:4.+') {
21+
transitive = false
22+
}
23+
latest(projects.algoliasearchCore)
24+
}
25+
26+
def japicmp = tasks.register('japicmp', JapicmpTask) {
27+
dependsOn tasks.findByName("jar")
28+
oldClasspath.setFrom(baselineConfig)
29+
newClasspath.setFrom(latestConfig)
30+
onlyBinaryIncompatibleModified.set(true)
31+
failOnModification.set(true)
32+
txtOutputFile.set(file("$buildDir/reports/japi.txt"))
33+
ignoreMissingClasses.set(true)
34+
includeSynthetic.set(true)
35+
}
36+
37+
tasks.findByName('check').configure {
38+
dependsOn japicmp
39+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
rootProject.name = "algoliasearch-client-java"
22

33
include(":algoliasearch-core")
4+
include(":api")
5+
6+
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")

0 commit comments

Comments
 (0)