Skip to content

Commit

Permalink
Improve pytest quality of life (#10567)
Browse files Browse the repository at this point in the history
  • Loading branch information
ikonst authored Jun 1, 2021
1 parent e702679 commit 98ac487
Show file tree
Hide file tree
Showing 5 changed files with 132 additions and 140 deletions.
6 changes: 4 additions & 2 deletions mypy/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,7 @@ def strict_optional_set(value: bool) -> Iterator[None]:
global strict_optional
saved = strict_optional
strict_optional = value
yield
strict_optional = saved
try:
yield
finally:
strict_optional = saved
17 changes: 4 additions & 13 deletions mypy/test/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import shutil
import contextlib

from typing import List, Iterable, Dict, Tuple, Callable, Any, Optional, Iterator
from typing import List, Iterable, Dict, Tuple, Callable, Any, Iterator

from mypy import defaults
import mypy.api as api
Expand Down Expand Up @@ -50,6 +50,7 @@ def assert_string_arrays_equal(expected: List[str], actual: List[str],
Display any differences in a human-readable form.
"""
__tracebackhide__ = True

actual = clean_up(actual)
actual = [line.replace("can't", "cannot") for line in actual]
Expand Down Expand Up @@ -326,18 +327,6 @@ def retry_on_error(func: Callable[[], Any], max_wait: float = 1.0) -> None:
raise
time.sleep(wait_time)

# TODO: assert_true and assert_false are redundant - use plain assert


def assert_true(b: bool, msg: Optional[str] = None) -> None:
if not b:
raise AssertionError(msg)


def assert_false(b: bool, msg: Optional[str] = None) -> None:
if b:
raise AssertionError(msg)


def good_repr(obj: object) -> str:
if isinstance(obj, str):
Expand All @@ -352,6 +341,7 @@ def good_repr(obj: object) -> str:


def assert_equal(a: object, b: object, fmt: str = '{} != {}') -> None:
__tracebackhide__ = True
if a != b:
raise AssertionError(fmt.format(good_repr(a), good_repr(b)))

Expand All @@ -364,6 +354,7 @@ def typename(t: type) -> str:


def assert_type(typ: type, value: object) -> None:
__tracebackhide__ = True
if type(value) != typ:
raise AssertionError('Invalid type {}, expected {}'.format(
typename(type(value)), typename(typ)))
Expand Down
6 changes: 3 additions & 3 deletions mypy/test/testsubtypes.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from mypy.test.helpers import Suite, assert_true, skip
from mypy.test.helpers import Suite, skip
from mypy.nodes import CONTRAVARIANT, INVARIANT, COVARIANT
from mypy.subtypes import is_subtype
from mypy.test.typefixture import TypeFixture, InterfaceTypeFixture
Expand Down Expand Up @@ -188,10 +188,10 @@ def test_type_callable_subtyping(self) -> None:
# * generic function types

def assert_subtype(self, s: Type, t: Type) -> None:
assert_true(is_subtype(s, t), '{} not subtype of {}'.format(s, t))
assert is_subtype(s, t), '{} not subtype of {}'.format(s, t)

def assert_not_subtype(self, s: Type, t: Type) -> None:
assert_true(not is_subtype(s, t), '{} subtype of {}'.format(s, t))
assert not is_subtype(s, t), '{} subtype of {}'.format(s, t)

def assert_strict_subtype(self, s: Type, t: Type) -> None:
self.assert_subtype(s, t)
Expand Down
Loading

0 comments on commit 98ac487

Please sign in to comment.