All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlinx.jupyter.test.ConfigTest.kt Maven / Gradle / Ivy

package org.jetbrains.kotlinx.jupyter.test

import io.kotest.matchers.shouldBe
import jupyter.kotlin.JavaRuntime
import org.jetbrains.kotlinx.jupyter.api.KotlinKernelVersion
import org.jetbrains.kotlinx.jupyter.config.defaultRuntimeProperties
import org.jetbrains.kotlinx.jupyter.iKotlinClass
import org.jetbrains.kotlinx.jupyter.log
import org.jetbrains.kotlinx.jupyter.startup.MAIN_CLASS_NAME
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNull
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import kotlin.test.assertNotNull

class ConfigTest {
    @Test
    fun testBranch() {
        val branch = defaultRuntimeProperties.currentBranch
        log.debug("Runtime git branch is: $branch")

        if (!branch.matches(Regex("pull/[1-9]\\d*"))) {
            assertEquals(-1, branch.indexOf('/'), "Branch name should be simple")
        }

        assertTrue(branch.isNotBlank(), "Branch name shouldn't be blank")

        val commit = defaultRuntimeProperties.currentSha
        assertEquals(40, commit.length)
    }

    @Test
    fun testVersion() {
        val version = defaultRuntimeProperties.version
        log.debug("Runtime version is: {}", version)

        assertNotNull(version)
    }

    @Test
    fun testVersionRuntimeHelpers() {
        val minExpectedVersion = 6
        val maxExpectedVersion = 20

        assertTrue(JavaRuntime.versionAsInt >= minExpectedVersion)
        JavaRuntime.assertVersion { it >= minExpectedVersion }
        JavaRuntime.assertVersionAtLeast(minExpectedVersion)
        JavaRuntime.assertVersionInRange(minExpectedVersion, maxExpectedVersion)
    }

    @Test
    fun testKernelVersion() {
        val major = 0
        val minor = 8
        val micro = 12
        val build = 100500
        val dev = 2

        val fullVersion = KotlinKernelVersion.from(major, minor, micro, build, dev)
        assertEquals("0.8.12.100500.dev2", fullVersion.toString())

        val releaseVersion = KotlinKernelVersion.from("0.8.12")
        val stableVersion = KotlinKernelVersion.from("0.8.12.100500")
        val devVersion = KotlinKernelVersion.from("0.8.12.100500.dev2")

        assertNotNull(fullVersion)
        assertNotNull(releaseVersion)
        assertNotNull(stableVersion)
        assertNotNull(devVersion)

        for (ver in listOf(fullVersion, releaseVersion, stableVersion, devVersion)) {
            assertEquals(major, ver.major)
            assertEquals(minor, ver.minor)
            assertEquals(micro, ver.micro)
        }

        for (ver in listOf(fullVersion, stableVersion, devVersion)) {
            assertEquals(build, ver.build)
        }
        assertNull(releaseVersion.build)

        for (ver in listOf(fullVersion, devVersion)) {
            assertEquals(dev, ver.dev)
        }
        assertNull(releaseVersion.dev)
        assertNull(stableVersion.dev)

        assertTrue(releaseVersion < stableVersion)
        assertTrue(stableVersion < devVersion)
        assertEquals(fullVersion, devVersion)
        assertTrue(KotlinKernelVersion.from("5.0.2")!! > KotlinKernelVersion.from("5.0.1.999")!!)

        assertNull(KotlinKernelVersion.from("0.-1.2"))
        assertNull(KotlinKernelVersion.from("5.1.2.3.4"))
    }

    @Test
    fun `fromMavenVersion should work correctly`() {
        with(KotlinKernelVersion.Companion) {
            from("0.8.12") shouldBe fromMavenVersion("0.8.12")
            from("0.8.12.100500") shouldBe fromMavenVersion("0.8.12-100500")
            from("0.8.12.100500.dev2") shouldBe fromMavenVersion("0.8.12-100500-2")
        }
    }

    @Test
    fun `maven central versions should be sorted correctly`() {
        val sortedVersions =
            listOf(
                "0.8.0-1-2",
                "0.12.0-1",
                "yux",
                "0.11.0-42",
                "abcdef",
                "0.11.0-2",
                "0.10.4.2",
                "0.8.0-1-1",
                "0.8.0-42",
                "0.10.3.1.dev1",
            ).sortedWith(KotlinKernelVersion.STRING_VERSION_COMPARATOR)

        sortedVersions shouldBe
            listOf(
                "abcdef",
                "yux",
                "0.8.0-1-1",
                "0.8.0-1-2",
                "0.8.0-42",
                "0.10.3.1.dev1",
                "0.10.4.2",
                "0.11.0-2",
                "0.11.0-42",
                "0.12.0-1",
            )
    }

    @Test
    fun `kernel main class name should be consistent`() {
        MAIN_CLASS_NAME shouldBe iKotlinClass.name
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy