Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve pytest quality of life #10567

Merged
merged 3 commits into from
Jun 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prevents one failed tests from bleeding into another

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
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


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
Copy link
Contributor Author

@ikonst ikonst Jun 1, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Follow up for PR #4369



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