diff --git a/clients/fossid-webapp/src/main/kotlin/FossIdRestService.kt b/clients/fossid-webapp/src/main/kotlin/FossIdRestService.kt index f1f5643061eed..91d459d63fc86 100644 --- a/clients/fossid-webapp/src/main/kotlin/FossIdRestService.kt +++ b/clients/fossid-webapp/src/main/kotlin/FossIdRestService.kt @@ -185,7 +185,7 @@ interface FossIdRestService { * Create the [FossIdServiceWithVersion] to interact with the FossID instance running at the given [url], * optionally using a pre-built OkHttp [client]. */ - fun create(url: String, client: OkHttpClient? = null): FossIdServiceWithVersion { + suspend fun create(url: String, client: OkHttpClient? = null): FossIdServiceWithVersion { logger.info { "The FossID server URL is $url." } val retrofit = Retrofit.Builder() diff --git a/clients/fossid-webapp/src/main/kotlin/FossIdServiceWithVersion.kt b/clients/fossid-webapp/src/main/kotlin/FossIdServiceWithVersion.kt index 916b8bfaed1a5..24705c11b7452 100644 --- a/clients/fossid-webapp/src/main/kotlin/FossIdServiceWithVersion.kt +++ b/clients/fossid-webapp/src/main/kotlin/FossIdServiceWithVersion.kt @@ -19,8 +19,6 @@ package org.ossreviewtoolkit.clients.fossid -import kotlinx.coroutines.runBlocking - import org.ossreviewtoolkit.clients.fossid.model.status.UnversionedScanDescription abstract class FossIdServiceWithVersion(val version: String) : FossIdRestService { @@ -29,15 +27,14 @@ abstract class FossIdServiceWithVersion(val version: String) : FossIdRestService * Construct a new instance of [FossIdServiceWithVersion] for given [delegate]. The implementation matching * FossID version will be instantiated and returned. */ - fun create(delegate: FossIdRestService): FossIdServiceWithVersion = - runBlocking { - val version = delegate.getFossIdVersion().orEmpty() + suspend fun create(delegate: FossIdRestService): FossIdServiceWithVersion { + val version = delegate.getFossIdVersion().orEmpty() - when { - version >= "2021.2" -> VersionedFossIdService2021dot2(delegate, version) - else -> VersionedFossIdService(delegate, version) - } + return when { + version >= "2021.2" -> VersionedFossIdService2021dot2(delegate, version) + else -> VersionedFossIdService(delegate, version) } + } } /** diff --git a/clients/fossid-webapp/src/test/kotlin/FossId2021dot2Test.kt b/clients/fossid-webapp/src/test/kotlin/FossId2021dot2Test.kt index 7267dc4e676be..59dc6ae6212ce 100644 --- a/clients/fossid-webapp/src/test/kotlin/FossId2021dot2Test.kt +++ b/clients/fossid-webapp/src/test/kotlin/FossId2021dot2Test.kt @@ -28,7 +28,7 @@ import io.kotest.matchers.shouldBe import io.kotest.matchers.types.shouldBeInstanceOf import io.mockk.clearAllMocks -import io.mockk.every +import io.mockk.coEvery import io.mockk.mockkObject import org.ossreviewtoolkit.clients.fossid.model.status.ScanStatus @@ -51,7 +51,7 @@ class FossId2021dot2Test : StringSpec({ server.start() mockkObject(FossIdServiceWithVersion) - every { FossIdServiceWithVersion.create(any()) } answers { + coEvery { FossIdServiceWithVersion.create(any()) } answers { VersionedFossIdService2021dot2(firstArg(), "2021.2.2") } diff --git a/clients/fossid-webapp/src/test/kotlin/FossId2023dot1Test.kt b/clients/fossid-webapp/src/test/kotlin/FossId2023dot1Test.kt index 76779146d546e..bc8466259462c 100644 --- a/clients/fossid-webapp/src/test/kotlin/FossId2023dot1Test.kt +++ b/clients/fossid-webapp/src/test/kotlin/FossId2023dot1Test.kt @@ -28,7 +28,7 @@ import io.kotest.matchers.shouldBe import io.kotest.matchers.types.shouldBeInstanceOf import io.mockk.clearAllMocks -import io.mockk.every +import io.mockk.coEvery import io.mockk.mockkObject private const val PROJECT_CODE = "semver4j" @@ -52,7 +52,7 @@ class FossId2023dot1Test : StringSpec({ server.start() mockkObject(FossIdServiceWithVersion.Companion) - every { FossIdServiceWithVersion.Companion.create(any()) } answers { + coEvery { FossIdServiceWithVersion.Companion.create(any()) } answers { VersionedFossIdService2021dot2(firstArg(), "2023.2.0") } diff --git a/clients/fossid-webapp/src/test/kotlin/FossIdRulesTest.kt b/clients/fossid-webapp/src/test/kotlin/FossIdRulesTest.kt index 2c2fb7bde420e..a023c9959756f 100644 --- a/clients/fossid-webapp/src/test/kotlin/FossIdRulesTest.kt +++ b/clients/fossid-webapp/src/test/kotlin/FossIdRulesTest.kt @@ -28,7 +28,7 @@ import io.kotest.matchers.collections.shouldHaveSize import io.kotest.matchers.nulls.shouldNotBeNull import io.mockk.clearAllMocks -import io.mockk.every +import io.mockk.coEvery import io.mockk.mockkObject import org.ossreviewtoolkit.clients.fossid.model.rules.IgnoreRule @@ -49,7 +49,7 @@ class FossIdRulesTest : StringSpec({ server.start() mockkObject(FossIdServiceWithVersion) - every { FossIdServiceWithVersion.create(any()) } answers { + coEvery { FossIdServiceWithVersion.create(any()) } answers { VersionedFossIdService2021dot2(firstArg(), "2021.2.2") } diff --git a/plugins/reporters/fossid/src/main/kotlin/FossIdReporter.kt b/plugins/reporters/fossid/src/main/kotlin/FossIdReporter.kt index 003f787500f10..55ec43b2ac1f4 100644 --- a/plugins/reporters/fossid/src/main/kotlin/FossIdReporter.kt +++ b/plugins/reporters/fossid/src/main/kotlin/FossIdReporter.kt @@ -98,9 +98,8 @@ class FossIdReporter : Reporter { }.getOrNull() } ?: SelectionType.INCLUDE_ALL_LICENSES - val service = FossIdRestService.create(serverUrl) - return runBlocking(Dispatchers.IO) { + val service = FossIdRestService.create(serverUrl) val scanResults = input.ortResult.getScanResults().values.flatten() val scanCodes = scanResults.flatMapTo(mutableSetOf()) { it.additionalData[SCAN_CODE_KEY]?.split(',').orEmpty() diff --git a/plugins/reporters/fossid/src/test/kotlin/FossIdReporterTest.kt b/plugins/reporters/fossid/src/test/kotlin/FossIdReporterTest.kt index 4f02813b78be1..0e0304c089aed 100644 --- a/plugins/reporters/fossid/src/test/kotlin/FossIdReporterTest.kt +++ b/plugins/reporters/fossid/src/test/kotlin/FossIdReporterTest.kt @@ -29,7 +29,6 @@ import io.mockk.clearAllMocks import io.mockk.coEvery import io.mockk.coVerify import io.mockk.coVerifyAll -import io.mockk.every import io.mockk.mockk import io.mockk.mockkObject import io.mockk.mockkStatic @@ -273,7 +272,7 @@ private fun createReporterMock(): Pair { val serviceMock = mockk() val reporterMock = spyk() - every { FossIdRestService.create(any()) } returns serviceMock + coEvery { FossIdRestService.create(any()) } returns serviceMock coEvery { serviceMock.generateReport(any(), any(), any(), any(), any(), any()) diff --git a/plugins/scanners/fossid/src/main/kotlin/FossId.kt b/plugins/scanners/fossid/src/main/kotlin/FossId.kt index 2595de0720457..48114872aa5cc 100644 --- a/plugins/scanners/fossid/src/main/kotlin/FossId.kt +++ b/plugins/scanners/fossid/src/main/kotlin/FossId.kt @@ -34,7 +34,6 @@ import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.flow -import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withTimeoutOrNull import org.apache.logging.log4j.kotlin.logger @@ -97,6 +96,7 @@ import org.ossreviewtoolkit.scanner.provenance.NestedProvenance import org.ossreviewtoolkit.utils.common.Options import org.ossreviewtoolkit.utils.common.enumSetOf import org.ossreviewtoolkit.utils.common.replaceCredentialsInUri +import org.ossreviewtoolkit.utils.ort.runBlocking import org.ossreviewtoolkit.utils.ort.showStackTrace import org.semver4j.Semver @@ -223,7 +223,7 @@ class FossId internal constructor( // of scans for each package. private val createdScans = mutableSetOf() - private val service = FossIdRestService.create(config.serverUrl) + private val service = runBlocking { FossIdRestService.create(config.serverUrl) } override val version = service.version override val configuration = "" diff --git a/plugins/scanners/fossid/src/test/kotlin/FossIdSnippetChoiceTest.kt b/plugins/scanners/fossid/src/test/kotlin/FossIdSnippetChoiceTest.kt index bba8ceb613c33..c793def7f268c 100644 --- a/plugins/scanners/fossid/src/test/kotlin/FossIdSnippetChoiceTest.kt +++ b/plugins/scanners/fossid/src/test/kotlin/FossIdSnippetChoiceTest.kt @@ -91,7 +91,7 @@ class FossIdSnippetChoiceTest : WordSpec({ mockkObject(FossIdRestService) mockkObject(VersionControlSystem) - every { FossIdRestService.create(any()) } returns createServiceMock() + coEvery { FossIdRestService.create(any()) } returns createServiceMock() every { VersionControlSystem.forUrl(any()) } returns createVersionControlSystemMock() } diff --git a/plugins/scanners/fossid/src/test/kotlin/FossIdTest.kt b/plugins/scanners/fossid/src/test/kotlin/FossIdTest.kt index f36ff860c33ba..5c859109d5912 100644 --- a/plugins/scanners/fossid/src/test/kotlin/FossIdTest.kt +++ b/plugins/scanners/fossid/src/test/kotlin/FossIdTest.kt @@ -82,7 +82,7 @@ class FossIdTest : WordSpec({ mockkObject(FossIdRestService) mockkObject(VersionControlSystem) - every { FossIdRestService.create(any()) } returns createServiceMock() + coEvery { FossIdRestService.create(any()) } returns createServiceMock() every { VersionControlSystem.forUrl(any()) } returns createVersionControlSystemMock() }