- 
                Notifications
    
You must be signed in to change notification settings  - Fork 5
 
Open
Description
It would be useful to have a check in the CI that validates that we don't accidentally update the public API. One way to do that would be by using binary compatibility validation from the Gradle plugin (see).
I've made a start with it here: holodorum@18e62ac. However, it updates the targets depending on the platform the abi is created from. So for example for my Mac the header of the API Dump is:
// Klib ABI Dump
// Targets: [js, macosArm64.nativeKson]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true`
However, running it in circleCI gives:
// Klib ABI Dump
// Targets: [js, macosArm64.nativeKson]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true`
Which will resolve in a failing test since the ABI has changed:
  <<<ABI has changed>>>
  --- /home/circleci/repo/kson-lib/api/kson-lib.klib.api
  +++ /home/circleci/repo/kson-lib/build/kotlin/abi-legacy/kson-lib.klib.api
  @@ -1,5 +1,5 @@
   // Klib ABI Dump
  -// Targets: [js, macosArm64.nativeKson]
  +// Targets: [js, linuxX64.nativeKson]
   // Rendering settings:
   // - Signature version: 2
   // - Show manifest properties: true
I can think of a few workarounds, but don't think it's worth writing too much custom code or spending a lot of time on it for now. Hopefully someone knows a straightforward way to configure this.
Metadata
Metadata
Assignees
Labels
No labels