diff --git a/be-js/src/commonMain/kotlin/lang/temper/be/js/RunJs.kt b/be-js/src/commonMain/kotlin/lang/temper/be/js/RunJs.kt index 97871306..50a682d2 100644 --- a/be-js/src/commonMain/kotlin/lang/temper/be/js/RunJs.kt +++ b/be-js/src/commonMain/kotlin/lang/temper/be/js/RunJs.kt @@ -65,8 +65,9 @@ internal fun runJsBestEffort( when (request) { is RunBackendSpecificCompilationStepRequest -> error("$request") is RunLibraryRequest -> { + // Null for a library the build does not know, which the metadata check below reports. mainLibraryConfig = dependencies.libraryConfigurations - .byLibraryName.getValue(request.libraryName) + .byLibraryName[request.libraryName] val jsLibraryName = dependencies.metadata[request.libraryName, JsMetadataKey.JsLibraryName] ?: return listOf( ToolchainResult(result = RFailure(CliFailure("No JS library name for $request"))), diff --git a/cli/src/test/kotlin/lang/temper/cli/RunTest.kt b/cli/src/test/kotlin/lang/temper/cli/RunTest.kt index 9b192c1b..e1f2b59f 100644 --- a/cli/src/test/kotlin/lang/temper/cli/RunTest.kt +++ b/cli/src/test/kotlin/lang/temper/cli/RunTest.kt @@ -31,6 +31,7 @@ import kotlin.test.Ignore import kotlin.test.Test import kotlin.test.assertContains import kotlin.test.assertEquals +import kotlin.test.assertFalse import kotlin.test.assertTrue class RunTest { @@ -106,6 +107,26 @@ class RunTest { @Test fun runJsBackend() = runRunTest("run", JsBackend.Factory.backendId) + @Test + fun runJsBackendUnknownLibrary() { + val path = resourcePath("/run/input") + // Clean up in case someone ran a build in the source tree. + removeDirRecursive(path.resolve(TEMPER_OUT_NAME)) + runWithTemporaryDirCopyOf("RunJsBackendUnknownLibrary", path) { tempDir -> + val result = doRun( + RunTask( + backends = setOf(JsBackend.Factory.backendId), + request = RunLibraryRequest( + DashedIdentifier.from("no-such-library")!!, + taskName = "RunJsBackendUnknownLibrary", + ), + ), + workRoot = tempDir, + ) + assertFalse(result.ok) + } + } + @Ignore("Reexamine how import strategy and run tasks affect running only cherry-picked modules") @Test fun runJsBackendTop() = runRunTest("runTopLevel", JsBackend.Factory.backendId)