[Gradle, JS] Add java class filters like in gradle
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user