mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-26102: Suggest test runner for any file starting with "test_"
Any file that starts with "test_" may be used as pytest/nosetest target regardless its content. Unittest is skipped because of "testCaseClassRequired".
This commit is contained in:
@@ -74,7 +74,8 @@ public final class PythonUnitTestUtil {
|
||||
if (isTestCaseClassRequired(file, testCaseClassRequired)) {
|
||||
return false;
|
||||
}
|
||||
return file.getTopLevelFunctions().stream().anyMatch(o -> isTestFunction(o, testCaseClassRequired, context));
|
||||
return file.getName().startsWith("test_") ||
|
||||
file.getTopLevelFunctions().stream().anyMatch(o -> isTestFunction(o, testCaseClassRequired, context));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+5
-1
@@ -52,6 +52,7 @@ class CreateConfigurationMultipleCasesTask<T extends PyAbstractTestConfiguration
|
||||
|
||||
result.add(getDir("tests_package/package_test"));
|
||||
result.add(getFile("tests_package/package_test", "test_in_package.py"));
|
||||
result.add(getFile("/", "test_foo.py"));
|
||||
result.add(getFile("tests_package/package_test", "test_in_package.py").findTopLevelClass("TestLogic"));
|
||||
|
||||
result.add(getDir("tests_folder"));
|
||||
@@ -123,6 +124,9 @@ class CreateConfigurationMultipleCasesTask<T extends PyAbstractTestConfiguration
|
||||
else if (element instanceof PyFunction && elementName.endsWith("foo")) {
|
||||
Assert.assertEquals("non-test function should lead to level-based test", TestTargetType.PATH, target.getTargetType());
|
||||
}
|
||||
else if (element instanceof PyFile && elementName.endsWith("test_foo.py")) {
|
||||
Assert.assertEquals("Wrong path for file-based target", TestTargetType.PATH, target.getTargetType());
|
||||
}
|
||||
else {
|
||||
throw new AssertionError("Unexpected configuration " + configuration);
|
||||
}
|
||||
@@ -141,7 +145,7 @@ class CreateConfigurationMultipleCasesTask<T extends PyAbstractTestConfiguration
|
||||
@NotNull
|
||||
private PyFile getFile(@NotNull final String dirName, @NotNull final String fileName) {
|
||||
final PsiFile psiFile = getDir(dirName).findFile(fileName);
|
||||
assert psiFile instanceof PyFile : "Bad file " + psiFile;
|
||||
assert psiFile instanceof PyFile : "Bad file " + psiFile + "name: " + fileName;
|
||||
return (PyFile)psiFile;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -666,9 +666,13 @@ public final class PythonUnitTestingTest extends PythonUnitTestingLikeTest<PyUni
|
||||
PyUnitTestConfiguration.class) {
|
||||
@Override
|
||||
protected boolean configurationShouldBeProducedForElement(@NotNull final PsiElement element) {
|
||||
// test_functions.py does not conttain any TestCase and can't be launched with unittest
|
||||
// test_functions.py and test_foo do not contain any TestCase and can't be launched with unittest
|
||||
final PsiFile file = element.getContainingFile();
|
||||
return file == null || !file.getName().endsWith("test_functions.py");
|
||||
if (file == null) {
|
||||
return true;
|
||||
}
|
||||
final String name = file.getName();
|
||||
return !(name.endsWith("test_functions.py") || name.endsWith("test_foo.py"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user