Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
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
62 changes: 58 additions & 4 deletions okio/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import kotlinx.validation.ApiValidationExtension
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithTests
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
import org.jetbrains.kotlin.gradle.plugin.mpp.TestExecutable
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
kotlin("multiplatform")
Expand All @@ -14,6 +15,7 @@ plugins {
id("com.vanniktech.maven.publish.base")
id("build-support")
id("binary-compatibility-validator")
`jvm-test-suite`
}

/*
Expand Down Expand Up @@ -211,17 +213,55 @@ kotlin {
}
}
}

jvm {
withJava()
}
}

val java9 by sourceSets.registering

configurations.named("java9CompileClasspath") {
extendsFrom(configurations["jvmCompileClasspath"])
}

testing {
suites {
register<JvmTestSuite>("integrationTest") {
useKotlinTest(libs.versions.kotlin)
dependencies {
implementation(project())
}
targets.configureEach {
testTask.configure {
onlyIf {
!javaLauncher.get().metadata.javaRuntimeVersion.startsWith("1.8")
}
}
}
}
}
}

tasks {
val jvmJar by getting(Jar::class) {
// BundleTaskExtension() crashes unless there's a 'main' source set.
sourceSets.create(SourceSet.MAIN_SOURCE_SET_NAME)
val compileJava9Java = named<JavaCompile>("compileJava9Java") {
dependsOn("compileKotlinJvm")
// https://kotlinlang.org/docs/gradle-configure-project.html#configure-with-java-modules-jpms-enabled
options.compilerArgumentProviders.add(CommandLineArgumentProvider {
listOf("--patch-module", "okio=${sourceSets["main"].output.asPath}")
})
options.release = 9
}

named<Jar>("jvmJar") {
from(compileJava9Java.flatMap { it.destinationDirectory }) {
into("META-INF/versions/9")
}
val bndExtension = BundleTaskExtension(this)
bndExtension.setBnd(
"""
Export-Package: okio
Automatic-Module-Name: okio
Multi-Release: true
Bundle-SymbolicName: com.squareup.okio
""",
)
Expand All @@ -231,6 +271,20 @@ tasks {
.execute(this)
}
}

named<JavaCompile>("compileIntegrationTestJava") {
options.release = 9
}

val integrationTest = named<Test>("integrationTest") {
jvmArgumentProviders.add(CommandLineArgumentProvider {
listOf("--patch-module", "okio.test.integration=${sourceSets["integrationTest"].output.asPath}")
})
}

check {
dependsOn(integrationTest)
}
}

configure<MavenPublishBaseExtension> {
Expand Down
6 changes: 6 additions & 0 deletions okio/src/jvmIntegrationTest/java/module-info.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
open module okio.test.integration {
requires kotlin.stdlib;
requires kotlin.test;
requires okio;
requires org.junit.jupiter.api;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package okio.test.integration

import kotlin.test.Test
import kotlin.test.assertFalse
import kotlin.test.assertTrue

class ModuleTest {
@Test
fun testModule() {
// assert okio is modular
val okioModule = ModuleLayer.boot().modules().single { it.name == "okio" }
assertFalse(okioModule.descriptor.isAutomatic)
assertTrue(okioModule.isExported("okio"))
assertFalse(okioModule.isExported("okio.internal"))
}
}
5 changes: 5 additions & 0 deletions okio/src/jvmJava9/java/module-info.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module okio {
requires kotlin.stdlib;

exports okio;
}