[Gradle, JS] Java and JS difference in fqn should affect exclude patterns too

This commit is contained in:
Ilya Goncharov
2019-12-05 15:52:59 +01:00
parent da16d48068
commit 770e5147d0
@@ -2,7 +2,7 @@ import {escapeRegExp, startsWith, trim} from "./utils";
import {KotlinTestRunner} from "./KotlinTestRunner"; import {KotlinTestRunner} from "./KotlinTestRunner";
export interface KotlinTestsFilter { export interface KotlinTestsFilter {
mayContainTestsFromSuite(fqn: string): boolean; mayContainTestsFromSuite(fqn: string, alternativeFqn?: string): boolean;
containsTest(fqn: string): boolean; containsTest(fqn: string): boolean;
} }
@@ -42,7 +42,9 @@ export function runWithFilter(
predicate: (value: string) => boolean predicate: (value: string) => boolean
): boolean { ): boolean {
return [jsClassName(), javaClassName()] return [jsClassName(), javaClassName()]
.every(value => predicate(value)) .every(value => {
return predicate(value);
})
} }
return { return {
@@ -50,8 +52,9 @@ export function runWithFilter(
path.push(name); path.push(name);
try { try {
if (path.length > 0 && everyOfJsOrJavaNames((value) => !filter.mayContainTestsFromSuite(value))) if (path.length > 0 && !filter.mayContainTestsFromSuite(jsClassName(), javaClassName())) {
return; return;
}
runner.suite(name, isIgnored, fn); runner.suite(name, isIgnored, fn);
} finally { } finally {
@@ -84,7 +87,7 @@ export function newKotlinTestsFilter(wildcard: string | null): KotlinTestsFilter
// by adding explicit prefix matcher to not visit unneeded suites // by adding explicit prefix matcher to not visit unneeded suites
// (RegExpKotlinTestsFilter doesn't support suites matching) // (RegExpKotlinTestsFilter doesn't support suites matching)
const [prefix, rest] = wildcard.split('*', 2); const [prefix, rest] = wildcard.split('*', 2);
return new StartsWithFilter(prefix, rest ? new RegExpKotlinTestsFilter(wildcard) : null) return new StartsWithFilter(prefix.slice(0, -1), rest ? new RegExpKotlinTestsFilter(wildcard) : null)
} }
} }
@@ -115,7 +118,7 @@ export class StartsWithFilter implements KotlinTestsFilter {
} }
containsAllTestsFromSuite(fqn: string): boolean { containsAllTestsFromSuite(fqn: string): boolean {
return this.filter == null && this.isPrefixMatched(fqn); return this.filter == null && startsWith(fqn, this.prefix);
} }
containsTest(fqn: string): boolean { containsTest(fqn: string): boolean {
@@ -182,12 +185,16 @@ export class CompositeTestFilter implements KotlinTestsFilter {
}) })
} }
mayContainTestsFromSuite(fqn: string): boolean { mayContainTestsFromSuite(fqn: string, alternativeFqn: string): boolean {
for (const excl of this.excludePrefix) { for (const excl of this.excludePrefix) {
if (excl.containsAllTestsFromSuite(fqn)) return false if (excl.containsAllTestsFromSuite(fqn) || excl.containsAllTestsFromSuite(alternativeFqn)) {
return false
}
} }
for (const incl of this.include) { for (const incl of this.include) {
if (incl.mayContainTestsFromSuite(fqn)) return true if (incl.mayContainTestsFromSuite(fqn) || incl.mayContainTestsFromSuite(alternativeFqn)) {
return true
}
} }
return false; return false;
} }