From 1baea40041218a41f9141e5085ae911828a5b8cd Mon Sep 17 00:00:00 2001 From: Jan Verbeek Date: Thu, 19 Dec 2019 10:27:15 +0100 Subject: [PATCH 1/3] Add undocumented methods and make types more specific in 2/unittest --- stdlib/2/unittest.pyi | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/stdlib/2/unittest.pyi b/stdlib/2/unittest.pyi index 366a37352a44..f7fdc520e48f 100644 --- a/stdlib/2/unittest.pyi +++ b/stdlib/2/unittest.pyi @@ -15,6 +15,10 @@ _FT = TypeVar('_FT') _ExceptionType = Union[Type[BaseException], Tuple[Type[BaseException], ...]] _Regexp = Union[Text, Pattern[Text]] +_SysExcInfoType = Tuple[Optional[Type[BaseException]], + Optional[BaseException], + Optional[types.TracebackType]] + class Testable(metaclass=ABCMeta): @abstractmethod def run(self, result: TestResult) -> None: ... @@ -26,11 +30,11 @@ class Testable(metaclass=ABCMeta): # TODO ABC for test runners? class TestResult: - errors: List[Tuple[Testable, str]] - failures: List[Tuple[Testable, str]] - skipped: List[Tuple[Testable, str]] - expectedFailures: List[Tuple[Testable, str]] - unexpectedSuccesses: List[Testable] + errors: List[Tuple[TestCase, str]] + failures: List[Tuple[TestCase, str]] + skipped: List[Tuple[TestCase, str]] + expectedFailures: List[Tuple[TestCase, str]] + unexpectedSuccesses: List[TestCase] shouldStop: bool testsRun: int buffer: bool @@ -38,16 +42,16 @@ class TestResult: def wasSuccessful(self) -> bool: ... def stop(self) -> None: ... - def startTest(self, test: Testable) -> None: ... - def stopTest(self, test: Testable) -> None: ... + def startTest(self, test: TestCase) -> None: ... + def stopTest(self, test: TestCase) -> None: ... def startTestRun(self) -> None: ... def stopTestRun(self) -> None: ... - def addError(self, test: Testable, err: Tuple[type, Any, Any]) -> None: ... # TODO - def addFailure(self, test: Testable, err: Tuple[type, Any, Any]) -> None: ... # TODO - def addSuccess(self, test: Testable) -> None: ... - def addSkip(self, test: Testable, reason: str) -> None: ... - def addExpectedFailure(self, test: Testable, err: str) -> None: ... - def addUnexpectedSuccess(self, test: Testable) -> None: ... + def addError(self, test: TestCase, err: _SysExcInfoType) -> None: ... + def addFailure(self, test: TestCase, err: _SysExcInfoType) -> None: ... + def addSuccess(self, test: TestCase) -> None: ... + def addSkip(self, test: TestCase, reason: str) -> None: ... + def addExpectedFailure(self, test: TestCase, err: str) -> None: ... + def addUnexpectedSuccess(self, test: TestCase) -> None: ... class _AssertRaisesBaseContext: expected: Any @@ -240,12 +244,16 @@ defaultTestLoader: TestLoader class TextTestResult(TestResult): def __init__(self, stream: TextIO, descriptions: bool, verbosity: int) -> None: ... + def getDescription(self, test: TestCase) -> str: ... # undocumented + def printErrors(self) -> None: ... # undocumented + def printErrorList(self, flavour: str, errors: List[Tuple[TestCase, str]]) -> None: ... # undocumented class TextTestRunner: def __init__(self, stream: Optional[TextIO] = ..., descriptions: bool = ..., verbosity: int = ..., failfast: bool = ..., buffer: bool = ..., resultclass: Optional[Type[TestResult]] = ...) -> None: ... def _makeResult(self) -> TestResult: ... + def run(self, test: Testable) -> TestResult: ... # undocumented class SkipTest(Exception): ... From 896a5f9a41762b11c088a3d1d1b34a0d05d2aacc Mon Sep 17 00:00:00 2001 From: Jan Verbeek Date: Thu, 19 Dec 2019 16:43:18 +0100 Subject: [PATCH 2/3] fixup! Add undocumented methods and make types more specific in 2/unittest --- stdlib/2/unittest.pyi | 7 ++++--- stdlib/3/unittest/result.pyi | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/stdlib/2/unittest.pyi b/stdlib/2/unittest.pyi index f7fdc520e48f..4eb84617dc79 100644 --- a/stdlib/2/unittest.pyi +++ b/stdlib/2/unittest.pyi @@ -15,9 +15,10 @@ _FT = TypeVar('_FT') _ExceptionType = Union[Type[BaseException], Tuple[Type[BaseException], ...]] _Regexp = Union[Text, Pattern[Text]] -_SysExcInfoType = Tuple[Optional[Type[BaseException]], - Optional[BaseException], - Optional[types.TracebackType]] +_SysExcInfoType = Union[ + Tuple[Type[BaseException], BaseException, types.TracebackType], + Tuple[None, None, None], +] class Testable(metaclass=ABCMeta): @abstractmethod diff --git a/stdlib/3/unittest/result.pyi b/stdlib/3/unittest/result.pyi index 6ce685a290c8..234e00054e34 100644 --- a/stdlib/3/unittest/result.pyi +++ b/stdlib/3/unittest/result.pyi @@ -3,9 +3,10 @@ from types import TracebackType import unittest.case -_SysExcInfoType = Tuple[Optional[Type[BaseException]], - Optional[BaseException], - Optional[TracebackType]] +_SysExcInfoType = Union[ + Tuple[Type[BaseException], BaseException, types.TracebackType], + Tuple[None, None, None], +] class TestResult: From 79047d6984d11040fef951cebcbaa877f4fb9410 Mon Sep 17 00:00:00 2001 From: Jan Verbeek Date: Thu, 19 Dec 2019 16:55:30 +0100 Subject: [PATCH 3/3] fixup! Add undocumented methods and make types more specific in 2/unittest --- stdlib/3/unittest/result.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/3/unittest/result.pyi b/stdlib/3/unittest/result.pyi index 234e00054e34..337b93b7dacc 100644 --- a/stdlib/3/unittest/result.pyi +++ b/stdlib/3/unittest/result.pyi @@ -1,10 +1,10 @@ -from typing import List, Optional, Tuple, Type +from typing import List, Optional, Tuple, Type, Union from types import TracebackType import unittest.case _SysExcInfoType = Union[ - Tuple[Type[BaseException], BaseException, types.TracebackType], + Tuple[Type[BaseException], BaseException, TracebackType], Tuple[None, None, None], ]