Files
django-stubs/django-stubs/test/runner.pyi
PIG208 563e947402 Improve type annotation of DiscoverRunner. (#1069)
The return type of DiscoverRunner.get_resultclass should
be Optional[Type[TextTestResult]] given that it may also return PDBDebugResult:
0dd2920909/django/test/runner.py (L958-L962)

`DicoverRunner.run_tests` accepts `None` for `extra_tests` because
that's already the default value for it:
0dd2920909/django/test/runner.py (L1030)
2022-07-22 10:34:26 +03:00

144 lines
5.6 KiB
Python

import logging
from argparse import ArgumentParser
from io import StringIO
from typing import Any, Dict, List, Optional, Sequence, Set, Tuple, Type
from unittest import TestCase, TestSuite, TextTestResult
from django.db.backends.base.base import BaseDatabaseWrapper
from django.test.testcases import SimpleTestCase, TestCase
from django.utils.datastructures import OrderedSet
class DebugSQLTextTestResult(TextTestResult):
buffer: bool
descriptions: bool
dots: bool
expectedFailures: List[Any]
failfast: bool
shouldStop: bool
showAll: bool
skipped: List[Any]
tb_locals: bool
testsRun: int
unexpectedSuccesses: List[Any]
logger: logging.Logger = ...
# typeshed thinks it's TextIO, but unittest wraps it with _WritelnDecorator
# adding `writeln` method
# See https://github.com/python/cpython/blob/main/Lib/unittest/runner.py
stream: Any
def __init__(self, stream: Any, descriptions: bool, verbosity: int) -> None: ...
debug_sql_stream: StringIO = ...
handler: logging.StreamHandler = ...
def startTest(self, test: TestCase) -> None: ...
def stopTest(self, test: TestCase) -> None: ...
def addError(self, test: Any, err: Any) -> None: ...
def addFailure(self, test: Any, err: Any) -> None: ...
class RemoteTestResult:
events: List[Any] = ...
failfast: bool = ...
shouldStop: bool = ...
testsRun: int = ...
def __init__(self) -> None: ...
@property
def test_index(self): ...
def check_picklable(self, test: Any, err: Any) -> None: ...
def _confirm_picklable(self, obj: Any) -> None: ...
def check_subtest_picklable(self, test: Any, subtest: Any) -> None: ...
def stop_if_failfast(self) -> None: ...
def stop(self) -> None: ...
def startTestRun(self) -> None: ...
def stopTestRun(self) -> None: ...
def startTest(self, test: Any) -> None: ...
def stopTest(self, test: Any) -> None: ...
def addError(self, test: Any, err: Any) -> None: ...
def addFailure(self, test: Any, err: Any) -> None: ...
def addSubTest(self, test: Any, subtest: Any, err: Any) -> None: ...
def addSuccess(self, test: Any) -> None: ...
def addSkip(self, test: Any, reason: Any) -> None: ...
def addExpectedFailure(self, test: Any, err: Any) -> None: ...
def addUnexpectedSuccess(self, test: Any) -> None: ...
class RemoteTestRunner:
resultclass: Any = ...
failfast: Any = ...
def __init__(self, failfast: bool = ..., resultclass: Optional[Any] = ...) -> None: ...
def run(self, test: Any): ...
def default_test_processes() -> int: ...
class ParallelTestSuite(TestSuite):
init_worker: Any = ...
run_subsuite: Any = ...
runner_class: Any = ...
subsuites: Any = ...
processes: Any = ...
failfast: Any = ...
def __init__(self, suite: Any, processes: Any, failfast: bool = ...) -> None: ...
def run(self, result: Any): ... # type: ignore[override]
class DiscoverRunner:
test_suite: Any = ...
parallel_test_suite: Any = ...
test_runner: Any = ...
test_loader: Any = ...
reorder_by: Any = ...
pattern: Optional[str] = ...
top_level: Optional[str] = ...
verbosity: int = ...
interactive: bool = ...
failfast: bool = ...
keepdb: bool = ...
reverse: bool = ...
debug_mode: bool = ...
debug_sql: bool = ...
parallel: int = ...
tags: Set[str] = ...
exclude_tags: Set[str] = ...
def __init__(
self,
pattern: Optional[str] = ...,
top_level: Optional[str] = ...,
verbosity: int = ...,
interactive: bool = ...,
failfast: bool = ...,
keepdb: bool = ...,
reverse: bool = ...,
debug_mode: bool = ...,
debug_sql: bool = ...,
parallel: int = ...,
tags: Optional[List[str]] = ...,
exclude_tags: Optional[List[str]] = ...,
test_name_patterns: Optional[List[str]] = ...,
pdb: bool = ...,
buffer: bool = ...,
enable_faulthandler: bool = ...,
timing: bool = ...,
**kwargs: Any
) -> None: ...
@classmethod
def add_arguments(cls, parser: ArgumentParser) -> None: ...
def setup_test_environment(self, **kwargs: Any) -> None: ...
def build_suite(
self, test_labels: Sequence[str] = ..., extra_tests: Optional[List[Any]] = ..., **kwargs: Any
) -> TestSuite: ...
def setup_databases(self, **kwargs: Any) -> List[Tuple[BaseDatabaseWrapper, str, bool]]: ...
def get_resultclass(self) -> Optional[Type[TextTestResult]]: ...
def get_test_runner_kwargs(self) -> Dict[str, Optional[int]]: ...
def run_checks(self, databases: Set[str]) -> None: ...
def run_suite(self, suite: TestSuite, **kwargs: Any) -> TextTestResult: ...
def teardown_databases(self, old_config: List[Tuple[BaseDatabaseWrapper, str, bool]], **kwargs: Any) -> None: ...
def teardown_test_environment(self, **kwargs: Any) -> None: ...
def suite_result(self, suite: TestSuite, result: TextTestResult, **kwargs: Any) -> int: ...
def get_databases(self, suite: TestSuite) -> Set[str]: ...
def run_tests(self, test_labels: List[str], extra_tests: Optional[List[Any]] = ..., **kwargs: Any) -> int: ...
def is_discoverable(label: str) -> bool: ...
def reorder_suite(
suite: TestSuite, classes: Tuple[Type[TestCase], Type[SimpleTestCase]], reverse: bool = ...
) -> TestSuite: ...
def partition_suite_by_type(
suite: TestSuite, classes: Tuple[Type[TestCase], Type[SimpleTestCase]], bins: List[OrderedSet], reverse: bool = ...
) -> None: ...
def partition_suite_by_case(suite: Any): ...
def filter_tests_by_tags(suite: TestSuite, tags: Set[str], exclude_tags: Set[str]) -> TestSuite: ...