diff --git a/libraries/tools/kotlin-test-nodejs-runner/build.gradle.kts b/libraries/tools/kotlin-test-nodejs-runner/build.gradle.kts index 7152384de05..caa8db12a4d 100644 --- a/libraries/tools/kotlin-test-nodejs-runner/build.gradle.kts +++ b/libraries/tools/kotlin-test-nodejs-runner/build.gradle.kts @@ -45,6 +45,7 @@ tasks { inputs.dir("src") inputs.files( "cli.ts", + "karma.ts", "nodejs-source-map-support.js", "package.json", "rollup.config.js", diff --git a/libraries/tools/kotlin-test-nodejs-runner/karma.ts b/libraries/tools/kotlin-test-nodejs-runner/karma.ts new file mode 100755 index 00000000000..dfa6d87bd37 --- /dev/null +++ b/libraries/tools/kotlin-test-nodejs-runner/karma.ts @@ -0,0 +1,25 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +import {CliArgsParser, getDefaultCliDescription} from "./src/CliArgsParser"; +import {getAdapter} from "./src/Adapter"; + +const kotlin_test = require('kotlin-test'); + +process.hrtime = require('browser-process-hrtime'); +process.exit = (exitCode) => { + throw new Error(`Exit with ${exitCode}`) +}; + + +const processArgs = window.__karma__.config.args; + +const cliDescription = getDefaultCliDescription(); +cliDescription.freeArgsTitle = null; +const parser = new CliArgsParser(cliDescription); +const untypedArgs = parser.parse(processArgs); + +const initialAdapter = kotlin_test.kotlin.test.detectAdapter_8be2vx$(); +kotlin_test.setAdapter(getAdapter(initialAdapter, untypedArgs)); \ No newline at end of file diff --git a/libraries/tools/kotlin-test-nodejs-runner/package.json b/libraries/tools/kotlin-test-nodejs-runner/package.json index 36f0ebfbdb8..c3f15f45d59 100644 --- a/libraries/tools/kotlin-test-nodejs-runner/package.json +++ b/libraries/tools/kotlin-test-nodejs-runner/package.json @@ -15,7 +15,8 @@ }, "dependencies": { "@types/node": "^10.12.21", - "source-map-support": "^0.5.11" + "source-map-support": "^0.5.11", + "browser-process-hrtime": "^1.0.0" }, "devDependencies": { "copyfiles": "^2.1.0", diff --git a/libraries/tools/kotlin-test-nodejs-runner/rollup.config.js b/libraries/tools/kotlin-test-nodejs-runner/rollup.config.js index 8809a7b256c..d65d576a987 100644 --- a/libraries/tools/kotlin-test-nodejs-runner/rollup.config.js +++ b/libraries/tools/kotlin-test-nodejs-runner/rollup.config.js @@ -14,44 +14,7 @@ export default [ banner: '#!/usr/bin/env node', sourcemap: true }, - plugins: [ - nodeResolve({ - jsnext: true, - main: true - }), - commonjs(), - typescript({ - tsconfig: "tsconfig.json" - }), - uglify({ - sourcemap: true, - compress: { - // hoist_funs: true, - // hoist_vars: true, - toplevel: true, - unsafe: true, - dead_code: true, - global_defs: { - DEBUG: false, - VERSION: pckg.version, - BIN: Object.keys(pckg.bin)[0], - DESCRIPTION: pckg.description - } - }, - mangle: { - properties: { - keep_quoted: true, - reserved: [ - "argv", "hrtime", - "kotlin_test", "kotlin", "setAdapter", "setAssertHook_4duqou$", - "suite", "test", - "stack" - ] - }, - toplevel: true, - } - }) - ] + plugins: plugins() }, { input: './nodejs-source-map-support.js', @@ -72,5 +35,56 @@ export default [ sourcemap: true }) ] + }, + { + input: './karma.ts', + output: { + file: 'lib/kotlin-test-karma-runner.js', + format: 'cjs', + sourcemap: true + }, + plugins: plugins() } -] \ No newline at end of file +] + +function plugins() { + return [ + nodeResolve({ + jsnext: true, + main: true + }), + commonjs(), + typescript({ + tsconfig: "tsconfig.json" + }), + uglify({ + sourcemap: true, + compress: { + // hoist_funs: true, + // hoist_vars: true, + toplevel: true, + unsafe: true, + dead_code: true, + global_defs: { + DEBUG: false, + VERSION: pckg.version, + BIN: Object.keys(pckg.bin)[0], + DESCRIPTION: pckg.description + } + }, + mangle: { + properties: { + keep_quoted: true, + reserved: [ + "argv", "hrtime", + "kotlin_test", "kotlin", "setAdapter", "setAssertHook_4duqou$", "detectAdapter_8be2vx$", + "__karma__", "config", "args", + "suite", "test", + "stack" + ] + }, + toplevel: true, + } + }) + ] +} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-nodejs-runner/window.d.ts b/libraries/tools/kotlin-test-nodejs-runner/window.d.ts new file mode 100644 index 00000000000..186ca8ed39b --- /dev/null +++ b/libraries/tools/kotlin-test-nodejs-runner/window.d.ts @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +interface Window { + __karma__: { + config: { + args: string[] + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-nodejs-runner/yarn.lock b/libraries/tools/kotlin-test-nodejs-runner/yarn.lock index eb0b812d6ec..c7b9a8db0c4 100644 --- a/libraries/tools/kotlin-test-nodejs-runner/yarn.lock +++ b/libraries/tools/kotlin-test-nodejs-runner/yarn.lock @@ -101,6 +101,11 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"