From de8610a2791e90742f875b454b1373317e85d8f1 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 28 Nov 2019 15:07:05 +0300 Subject: [PATCH] [Gradle, JS] Add java class filters like in gradle --- .../src/KotlinTestsFilter.ts | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilter.ts b/libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilter.ts index 183c95c2607..ef4fcb70098 100644 --- a/libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilter.ts +++ b/libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilter.ts @@ -13,13 +13,35 @@ export function runWithFilter( ): KotlinTestRunner { let path: string[] = []; - function pathString() { + function jsClassName() { // skip root if (!path[0]) { return path.slice(1).join('.') - } else { - return path.join('.') } + + return path.join('.') + } + + function javaClassName() { + const javaClassName = `${path.slice(1).join('$')}`; + + // skip root + if (!path[0]) { + return javaClassName + } + + if (!javaClassName) { + return path[0] + } + + return `${path[0]}.${javaClassName}` + } + + function everyOfJsOrJavaNames( + predicate: (value: string) => boolean + ): boolean { + return [jsClassName(), javaClassName()] + .every(value => predicate(value)) } return { @@ -27,7 +49,8 @@ export function runWithFilter( path.push(name); try { - if (path.length > 1 && !filter.mayContainTestsFromSuite(pathString())) return; + if (path.length > 1 && everyOfJsOrJavaNames((value) => !filter.mayContainTestsFromSuite(value))) + return; runner.suite(name, isIgnored, fn); } finally { @@ -36,14 +59,12 @@ export function runWithFilter( }, test: function (name: string, isIgnored: boolean, fn: () => void) { - path.push(name); - try { - if (!filter.containsTest(pathString())) return; + if (everyOfJsOrJavaNames(value => !filter.containsTest(`${value}.${name}`))) + return; runner.test(name, isIgnored, fn); } finally { - path.pop() } } }; @@ -84,10 +105,12 @@ export class StartsWithFilter implements KotlinTestsFilter { } isPrefixMatched(fqn: string): boolean { + console.error("fqn", fqn); return startsWith(fqn + ".", this.prefix); } mayContainTestsFromSuite(fqn: string): boolean { + console.error("Prefix", this.prefix); return this.isPrefixMatched(fqn); }