fix: record skipped and error test results (#1)

This commit is contained in:
Steven Arcangeli
2022-06-08 00:00:53 -07:00
committed by GitHub
parent e040840e65
commit fd75c18c14
2 changed files with 21 additions and 36 deletions

View File

@@ -12,6 +12,7 @@ def add_to_path():
finally: finally:
sys.path = old_path sys.path = old_path
with add_to_path(): with add_to_path():
from neotest_python import main from neotest_python import main

View File

@@ -11,16 +11,6 @@ from .base import NeotestAdapter, NeotestResultStatus
class UnittestNeotestAdapter(NeotestAdapter): class UnittestNeotestAdapter(NeotestAdapter):
def iter_suite(
self, suite: "TestSuite | TestCase"
) -> Iterator["TestCase | TestSuite"]:
if isinstance(suite, TestSuite):
for sub in suite:
for case in self.iter_suite(sub):
yield case
else:
yield suite
def case_file(self, case) -> str: def case_file(self, case) -> str:
return str(Path(inspect.getmodule(case).__file__).absolute()) # type: ignore return str(Path(inspect.getmodule(case).__file__).absolute()) # type: ignore
@@ -44,19 +34,19 @@ class UnittestNeotestAdapter(NeotestAdapter):
errs[self.case_id(test)] = err errs[self.case_id(test)] = err
return super().addFailure(test, err) return super().addFailure(test, err)
def addError(_, test: TestCase, err) -> None:
errs[self.case_id(test)] = err
return super().addError(test, err)
def addSuccess(_, test: TestCase) -> None:
results[self.case_id(test)] = {
"status": NeotestResultStatus.PASSED,
}
class NeotestUnittestRunner(TextTestRunner): class NeotestUnittestRunner(TextTestRunner):
def run(_, test: "TestSuite | TestCase") -> "TestResult": # type: ignore def run(_, test: "TestSuite | TestCase") -> "TestResult": # type: ignore
for case in self.iter_suite(test):
results[self.case_id(case)] = {
"status": NeotestResultStatus.PASSED,
"short": None,
}
results[self.case_file(case)] = {
"status": NeotestResultStatus.PASSED,
"short": None,
}
result = super().run(test) result = super().run(test)
for case, message in result.failures: for case, message in result.failures + result.errors:
case_id = self.case_id(case) case_id = self.case_id(case)
error_line = None error_line = None
case_file = self.case_file(case) case_file = self.case_file(case)
@@ -68,23 +58,17 @@ class UnittestNeotestAdapter(NeotestAdapter):
for frame in reversed(summary) for frame in reversed(summary)
if frame.filename == case_file if frame.filename == case_file
) )
results[case_id] = self.update_result( results[case_id] = {
results.get(case_id),
{
"status": NeotestResultStatus.FAILED, "status": NeotestResultStatus.FAILED,
"errors": [{"message": message, "line": error_line}], "errors": [{"message": message, "line": error_line}],
"short": None, "short": None,
}, }
)
for case, message in result.skipped: for case, message in result.skipped:
results[self.case_id(case)] = self.update_result( results[self.case_id(case)] = {
results[self.case_id(case)],
{
"short": None, "short": None,
"status": NeotestResultStatus.SKIPPED, "status": NeotestResultStatus.SKIPPED,
"errors": None, "errors": None,
}, }
)
return result return result
unittest.main( unittest.main(