Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update template: codecov + kover + binary compatibility #1

Merged
merged 1 commit into from
Aug 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/workflows/CODECOV.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: CODECOV
# https://docs.github.com/en/actions/learn-github-actions/expressions

on:
push:
branches: [ main, 'release/**' ]
pull_request:
branches: [ main, 'release/**' ]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
CI: true

JAVA_VERSION: 17
JAVA_DISTRIBUTION: zulu

jobs:
test:
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- { uses: actions/checkout@v4 }
- { name: Use Node.js 20.x, uses: actions/setup-node@v4, with: { node-version: 20.x } }
- { name: Setup Deno, uses: denoland/setup-deno@v1, with: { deno-version: "1.44.4" } }
- { name: Replace gradle wrapper, run: "sed 's/-all/-bin/g' gradle/wrapper/gradle-wrapper.properties > gradle/wrapper/gradle-wrapper.properties.bak; cp gradle/wrapper/gradle-wrapper.properties.bak gradle/wrapper/gradle-wrapper.properties" }
- { name: Set up JDK, uses: actions/setup-java@v4, with: { distribution: "${{ env.JAVA_DISTRIBUTION }}", java-version: "${{ env.JAVA_VERSION }}" } }
- { name: Prepare Gradle, uses: gradle/actions/setup-gradle@d9c87d481d55275bb5441eef3fe0e46805f9ef70 } # https://github.com/gradle/actions/releases/tag/v3.5.0
- { name: Start gradle, run: ./gradlew }
- { name: Code coverage, run: ./gradlew koverXmlReport }
- name: Upload coverage reports to Codecov
uses: codecov/[email protected]
with:
token: ${{ secrets.CODECOV_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/TEST.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
#- { outputKey: testJs, os: ubuntu-latest, testTask: "wasmBrowserTest", buildTasks: "jsNodeTest jsBrowserTest" }
- { outputKey: testJs, os: ubuntu-latest, testTask: "wasmBrowserTest", buildTasks: "jsBrowserTest jsDenoTest" }
- { outputKey: testAndroid, os: ubuntu-latest, enableAndroid: true }
- { outputKey: testJvmMacos, os: macos-latest, testTask: jvmTest }
- { outputKey: testJvmMacos, os: macos-latest, testTask: jvmTest apiCheck }
- { outputKey: testJvmLinux, os: ubuntu-latest, testTask: jvmTest, precompileTask: compileTestKotlinJvm, enableKotlinNative: true, enableSandbox: true, e2e: true }
- { outputKey: testJvmWindows, os: windows-latest, testTask: jvmTest, precompileTask: compileTestKotlinJvm }
#if: ${{ needs.changes.outputs[matrix.outputKey] == 'true' }}
Expand Down
11 changes: 11 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import java.util.concurrent.*
plugins {
kotlin("multiplatform") version "2.0.0"
id("com.android.library") version "8.2.2"
id("org.jetbrains.kotlinx.kover") version "0.8.3" apply false
id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.16.2"
id("org.jetbrains.dokka") version "1.9.20"
`maven-publish`
signing
Expand Down Expand Up @@ -971,10 +973,12 @@ class MicroAmper(val project: Project) {
main = maybeCreate("${name}Main").also {
it.kotlin.srcDirIfExists("src$atName")
it.resources.srcDirIfExists("resources$atName")
it.kotlin.srcDir("build/generated/ksp/$name/${name}Main/kotlin")
},
test = maybeCreate("${name}Test").also {
it.kotlin.srcDirIfExists("test$atName")
it.resources.srcDirIfExists("testResources$atName")
it.kotlin.srcDir("build/generated/ksp/$name/${name}Test/kotlin")
}
)
}
Expand All @@ -988,6 +992,8 @@ class MicroAmper(val project: Project) {
ssDependsOn("appleNonWatchos", "apple")
ssDependsOn("appleIosTvos", "apple")

maybeCreate("commonMain").kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin")

for (platform in kotlinPlatforms) {
val isMacos = platform.startsWith("macos")
val isIos = platform.startsWith("ios")
Expand Down Expand Up @@ -1122,6 +1128,7 @@ allprojects {

subprojects {
plugins.apply("org.jetbrains.dokka")
plugins.apply("org.jetbrains.kotlinx.kover")
}

allprojects {
Expand All @@ -1130,3 +1137,7 @@ allprojects {
offlineMode.set(true)
}
}

apiValidation {
ignoredProjects.addAll(listOf(rootProject.name))
}
152 changes: 152 additions & 0 deletions korlibs-inject/api/android/korlibs-inject.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
public final class korlibs/inject/AsyncInjectorJvmExtKt {
public static final fun jvmAutomapping (Lkorlibs/inject/Injector;)Lkorlibs/inject/Injector;
public static final fun jvmFallback (Lkorlibs/inject/Injector$Companion;Lkorlibs/inject/Injector;Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;)Lkorlibs/inject/ObjectProvider;
public static final fun jvmRemoveMappingsByClassName (Lkorlibs/inject/Injector;Ljava/util/Set;)V
}

public abstract interface annotation class korlibs/inject/FactoryClass : java/lang/annotation/Annotation {
public abstract fun clazz ()Ljava/lang/Class;
}

public final class korlibs/inject/FactoryObjectProvider : korlibs/inject/ObjectProvider {
public fun <init> (Lkotlin/jvm/functions/Function1;)V
public fun deinit ()V
public fun get (Lkorlibs/inject/Injector;)Ljava/lang/Object;
public final fun getGenerator ()Lkotlin/jvm/functions/Function1;
public fun toString ()Ljava/lang/String;
}

public abstract interface class korlibs/inject/InjectedHandler {
public abstract fun injectedInto (Ljava/lang/Object;)V
}

public final class korlibs/inject/Injector {
public static final field Companion Lkorlibs/inject/Injector$Companion;
public fun <init> ()V
public fun <init> (Lkorlibs/inject/Injector;I)V
public synthetic fun <init> (Lkorlibs/inject/Injector;IILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun addDeinit (Lkorlibs/inject/InjectorDestructor;)V
public final fun child ()Lkorlibs/inject/Injector;
public final fun deinit ()V
public final fun dump ()V
public final fun get (Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;)Ljava/lang/Object;
public static synthetic fun get$default (Lkorlibs/inject/Injector;Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;ILjava/lang/Object;)Ljava/lang/Object;
public final fun getClassDefiner (Lkotlin/reflect/KClass;)Lkorlibs/inject/Injector;
public final fun getFallbackProvider ()Lkotlin/jvm/functions/Function2;
public final fun getLevel ()I
public final fun getNearestFallbackProvider ()Lkotlin/jvm/functions/Function2;
public final fun getOrNull (Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;)Ljava/lang/Object;
public static synthetic fun getOrNull$default (Lkorlibs/inject/Injector;Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;ILjava/lang/Object;)Ljava/lang/Object;
public final fun getParent ()Lkorlibs/inject/Injector;
public final fun getProvider (Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;)Lkorlibs/inject/ObjectProvider;
public static synthetic fun getProvider$default (Lkorlibs/inject/Injector;Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;ILjava/lang/Object;)Lkorlibs/inject/ObjectProvider;
public final fun getProviderOrNull (Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;)Lkorlibs/inject/ObjectProvider;
public static synthetic fun getProviderOrNull$default (Lkorlibs/inject/Injector;Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;ILjava/lang/Object;)Lkorlibs/inject/ObjectProvider;
public final fun getProvidersByClass ()Ljava/util/LinkedHashMap;
public final fun getRoot ()Lkorlibs/inject/Injector;
public final fun getWith (Lkotlin/reflect/KClass;[Ljava/lang/Object;)Ljava/lang/Object;
public final fun has (Lkotlin/reflect/KClass;)Z
public final fun mapFactory (Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;)Lkorlibs/inject/Injector;
public final fun mapInstance (Lkotlin/reflect/KClass;Ljava/lang/Object;)Lkorlibs/inject/Injector;
public final fun mapPrototype (Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;)Lkorlibs/inject/Injector;
public final fun mapSingleton (Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;)Lkorlibs/inject/Injector;
public final fun removeMapping (Lkotlin/reflect/KClass;)V
public final fun setFallbackProvider (Lkotlin/jvm/functions/Function2;)V
public fun toString ()Ljava/lang/String;
}

public final class korlibs/inject/Injector$Companion {
}

public final class korlibs/inject/Injector$NotMappedException : java/lang/RuntimeException {
public fun <init> (Lkotlin/reflect/KClass;Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;Ljava/lang/String;)V
public synthetic fun <init> (Lkotlin/reflect/KClass;Lkotlin/reflect/KClass;Lkorlibs/inject/Injector$RequestContext;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun getClazz ()Lkotlin/reflect/KClass;
public final fun getCtx ()Lkorlibs/inject/Injector$RequestContext;
public final fun getMsg ()Ljava/lang/String;
public final fun getRequestedByClass ()Lkotlin/reflect/KClass;
}

public final class korlibs/inject/Injector$RequestContext {
public fun <init> (Lkotlin/reflect/KClass;)V
public final fun component1 ()Lkotlin/reflect/KClass;
public final fun copy (Lkotlin/reflect/KClass;)Lkorlibs/inject/Injector$RequestContext;
public static synthetic fun copy$default (Lkorlibs/inject/Injector$RequestContext;Lkotlin/reflect/KClass;ILjava/lang/Object;)Lkorlibs/inject/Injector$RequestContext;
public fun equals (Ljava/lang/Object;)Z
public final fun getInitialClazz ()Lkotlin/reflect/KClass;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class korlibs/inject/InjectorContext : kotlin/coroutines/CoroutineContext$Element {
public static final field Companion Lkorlibs/inject/InjectorContext$Companion;
public fun <init> (Lkorlibs/inject/Injector;)V
public fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
public fun get (Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
public final fun getInjector ()Lkorlibs/inject/Injector;
public fun getKey ()Lkorlibs/inject/InjectorContext$Companion;
public synthetic fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
public fun minusKey (Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
public fun plus (Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
}

public final class korlibs/inject/InjectorContext$Companion : kotlin/coroutines/CoroutineContext$Key {
}

public final class korlibs/inject/InjectorCoroutineContextKt {
public static final fun injector (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public static final fun withInjector (Lkorlibs/inject/Injector;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
}

public abstract interface class korlibs/inject/InjectorDependency {
public abstract fun init (Lkorlibs/inject/Injector;)V
}

public abstract interface class korlibs/inject/InjectorDestructor {
public abstract fun deinit ()V
}

public abstract interface class korlibs/inject/InjectorFactory {
public abstract fun create ()Ljava/lang/Object;
}

public final class korlibs/inject/InstanceObjectProvider : korlibs/inject/ObjectProvider {
public fun <init> (Ljava/lang/Object;)V
public fun deinit ()V
public fun get (Lkorlibs/inject/Injector;)Ljava/lang/Object;
public final fun getInstance ()Ljava/lang/Object;
public fun toString ()Ljava/lang/String;
}

public abstract interface class korlibs/inject/ObjectProvider {
public abstract fun deinit ()V
public abstract fun get (Lkorlibs/inject/Injector;)Ljava/lang/Object;
}

public abstract interface annotation class korlibs/inject/Optional : java/lang/annotation/Annotation {
}

public abstract interface annotation class korlibs/inject/Prototype : java/lang/annotation/Annotation {
}

public final class korlibs/inject/PrototypeObjectProvider : korlibs/inject/ObjectProvider {
public fun <init> (Lkotlin/jvm/functions/Function1;)V
public fun deinit ()V
public fun get (Lkorlibs/inject/Injector;)Ljava/lang/Object;
public final fun getGenerator ()Lkotlin/jvm/functions/Function1;
public fun toString ()Ljava/lang/String;
}

public abstract interface annotation class korlibs/inject/Singleton : java/lang/annotation/Annotation {
}

public final class korlibs/inject/SingletonObjectProvider : korlibs/inject/ObjectProvider {
public fun <init> (Lkotlin/jvm/functions/Function1;)V
public fun deinit ()V
public fun get (Lkorlibs/inject/Injector;)Ljava/lang/Object;
public final fun getGenerator ()Lkotlin/jvm/functions/Function1;
public final fun getValue ()Ljava/lang/Object;
public final fun setValue (Ljava/lang/Object;)V
public fun toString ()Ljava/lang/String;
}

Loading