[Gradle, JS] Add java class filters like in gradle
This commit is contained in:
@@ -13,13 +13,35 @@ export function runWithFilter(
|
|||||||
): KotlinTestRunner {
|
): KotlinTestRunner {
|
||||||
let path: string[] = [];
|
let path: string[] = [];
|
||||||
|
|
||||||
function pathString() {
|
function jsClassName() {
|
||||||
// skip root
|
// skip root
|
||||||
if (!path[0]) {
|
if (!path[0]) {
|
||||||
return path.slice(1).join('.')
|
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 {
|
return {
|
||||||
@@ -27,7 +49,8 @@ export function runWithFilter(
|
|||||||
path.push(name);
|
path.push(name);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (path.length > 1 && !filter.mayContainTestsFromSuite(pathString())) return;
|
if (path.length > 1 && everyOfJsOrJavaNames((value) => !filter.mayContainTestsFromSuite(value)))
|
||||||
|
return;
|
||||||
|
|
||||||
runner.suite(name, isIgnored, fn);
|
runner.suite(name, isIgnored, fn);
|
||||||
} finally {
|
} finally {
|
||||||
@@ -36,14 +59,12 @@ export function runWithFilter(
|
|||||||
},
|
},
|
||||||
|
|
||||||
test: function (name: string, isIgnored: boolean, fn: () => void) {
|
test: function (name: string, isIgnored: boolean, fn: () => void) {
|
||||||
path.push(name);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!filter.containsTest(pathString())) return;
|
if (everyOfJsOrJavaNames(value => !filter.containsTest(`${value}.${name}`)))
|
||||||
|
return;
|
||||||
|
|
||||||
runner.test(name, isIgnored, fn);
|
runner.test(name, isIgnored, fn);
|
||||||
} finally {
|
} finally {
|
||||||
path.pop()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -84,10 +105,12 @@ export class StartsWithFilter implements KotlinTestsFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
isPrefixMatched(fqn: string): boolean {
|
isPrefixMatched(fqn: string): boolean {
|
||||||
|
console.error("fqn", fqn);
|
||||||
return startsWith(fqn + ".", this.prefix);
|
return startsWith(fqn + ".", this.prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
mayContainTestsFromSuite(fqn: string): boolean {
|
mayContainTestsFromSuite(fqn: string): boolean {
|
||||||
|
console.error("Prefix", this.prefix);
|
||||||
return this.isPrefixMatched(fqn);
|
return this.isPrefixMatched(fqn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user