Browse Source
Co-authored-by: Oleksandr.Karpovich <oleksandr.karpovich@jetbrains.com>pull/4048/head
Oleksandr Karpovich
11 months ago
committed by
GitHub
6 changed files with 94 additions and 15 deletions
@ -0,0 +1,55 @@
|
||||
// see https://kotlinlang.org/docs/js-project-setup.html#webpack-configuration-file
|
||||
// This file provides karma.config.d configuration to run tests with k/wasm
|
||||
|
||||
const path = require("path"); |
||||
|
||||
config.browserConsoleLogOptions.level = "debug"; |
||||
|
||||
const basePath = config.basePath; |
||||
const projectPath = path.resolve(basePath, "..", "..", "..", ".."); |
||||
const generatedAssetsPath = path.resolve(projectPath, "build", "karma-webpack-out") |
||||
|
||||
const debug = message => console.log(`[karma-config] ${message}`); |
||||
|
||||
debug(`karma basePath: ${basePath}`); |
||||
debug(`karma generatedAssetsPath: ${generatedAssetsPath}`); |
||||
|
||||
config.proxies["/"] = path.resolve(basePath, "kotlin"); |
||||
|
||||
config.files = [ |
||||
{pattern: path.resolve(generatedAssetsPath, "**/*"), included: false, served: true, watched: false}, |
||||
{pattern: path.resolve(basePath, "kotlin", "**/*.png"), included: false, served: true, watched: false}, |
||||
{pattern: path.resolve(basePath, "kotlin", "**/*.gif"), included: false, served: true, watched: false}, |
||||
{pattern: path.resolve(basePath, "kotlin", "**/*.ttf"), included: false, served: true, watched: false}, |
||||
{pattern: path.resolve(basePath, "kotlin", "**/*.txt"), included: false, served: true, watched: false}, |
||||
{pattern: path.resolve(basePath, "kotlin", "**/*.json"), included: false, served: true, watched: false}, |
||||
{pattern: path.resolve(basePath, "kotlin", "**/*.xml"), included: false, served: true, watched: false}, |
||||
].concat(config.files); |
||||
|
||||
function KarmaWebpackOutputFramework(config) { |
||||
// This controller is instantiated and set during the preprocessor phase.
|
||||
const controller = config.__karmaWebpackController; |
||||
|
||||
// only if webpack has instantiated its controller
|
||||
if (!controller) { |
||||
console.warn( |
||||
"Webpack has not instantiated controller yet.\n" + |
||||
"Check if you have enabled webpack preprocessor and framework before this framework" |
||||
) |
||||
return |
||||
} |
||||
|
||||
config.files.push({ |
||||
pattern: `${controller.outputPath}/**/*`, |
||||
included: false, |
||||
served: true, |
||||
watched: false |
||||
}) |
||||
} |
||||
|
||||
const KarmaWebpackOutputPlugin = { |
||||
'framework:webpack-output': ['factory', KarmaWebpackOutputFramework], |
||||
}; |
||||
|
||||
config.plugins.push(KarmaWebpackOutputPlugin); |
||||
config.frameworks.push("webpack-output"); |
@ -1,9 +1,7 @@
|
||||
package org.jetbrains.compose.resources |
||||
|
||||
import kotlinx.coroutines.CoroutineScope |
||||
import kotlinx.coroutines.DelicateCoroutinesApi |
||||
import kotlinx.coroutines.GlobalScope |
||||
import kotlinx.coroutines.promise |
||||
import kotlinx.coroutines.* |
||||
|
||||
@OptIn(DelicateCoroutinesApi::class) |
||||
actual fun runBlockingTest(block: suspend CoroutineScope.() -> Unit): dynamic = GlobalScope.promise(block = block) |
||||
actual typealias TestReturnType = Any |
||||
actual fun runBlockingTest(block: suspend CoroutineScope.() -> Unit): TestReturnType = |
||||
TODO("Implement if necessary. We focus on k/wasm target for now") |
@ -1,7 +1,17 @@
|
||||
package org.jetbrains.compose.resources |
||||
|
||||
import kotlinx.coroutines.CoroutineScope |
||||
import kotlinx.coroutines.* |
||||
import kotlinx.coroutines.test.runTest |
||||
|
||||
actual fun runBlockingTest(block: suspend CoroutineScope.() -> Unit) { |
||||
TODO("To be implemented in PR 4031") |
||||
@JsFun("() => ''") |
||||
private external fun jsRef(): JsAny |
||||
|
||||
|
||||
actual typealias TestReturnType = Any |
||||
/** |
||||
* Runs the [block] in a coroutine. |
||||
*/ |
||||
actual fun runBlockingTest(block: suspend CoroutineScope.() -> Unit): TestReturnType = MainScope().promise { |
||||
block() |
||||
jsRef() |
||||
} |
Loading…
Reference in new issue