Skip to content

Commit 53ec652

Browse files
authored
Merge pull request #566 from stephenfin/restore-compat-helpers
Re-add removed helpers
2 parents eca83db + 3665841 commit 53ec652

16 files changed

Lines changed: 267 additions & 11 deletions

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ module = [
8282
# except tests (we're not sadists)
8383
"testtools.twistedsupport.*",
8484
"tests.*",
85+
# NOTE(stephenfin): These are deprecated so we're not going to type them
86+
"testtools.tests.helpers",
8587
]
8688
disallow_untyped_calls = false
8789
disallow_untyped_defs = false

tests/matchers/test_basic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
_BinaryMismatch,
2525
_NotNearlyEqual,
2626
)
27+
from testtools.matchers.test import TestMatchersInterface
2728

2829
from ..helpers import FullStackRunTest
29-
from ..matchers.helpers import TestMatchersInterface
3030

3131

3232
class Test_BinaryMismatch(TestCase):

tests/matchers/test_const.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44

55
from testtools import TestCase
66
from testtools.matchers import Always, Never
7-
8-
from ..matchers.helpers import TestMatchersInterface
7+
from testtools.matchers.test import TestMatchersInterface
98

109

1110
class TestAlwaysInterface(TestMatchersInterface, TestCase):

tests/matchers/test_datastructures.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
MatchesSetwise,
2121
MatchesStructure,
2222
)
23+
from testtools.matchers.test import TestMatchersInterface
2324

2425
from ..helpers import FullStackRunTest
25-
from ..matchers.helpers import TestMatchersInterface
2626

2727

2828
def run_doctest(obj, name):

tests/matchers/test_dict.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
MatchesDict,
1515
_SubDictOf,
1616
)
17-
18-
from ..matchers.helpers import TestMatchersInterface
17+
from testtools.matchers.test import TestMatchersInterface
1918

2019

2120
class TestMatchesAllDictInterface(TestCase, TestMatchersInterface):

tests/matchers/test_doctest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
from testtools import TestCase
77
from testtools.matchers._doctest import DocTestMatches
8+
from testtools.matchers.test import TestMatchersInterface
89

910
from ..helpers import FullStackRunTest
10-
from ..matchers.helpers import TestMatchersInterface
1111

1212

1313
class TestDocTestMatchesInterface(TestCase, TestMatchersInterface):

tests/matchers/test_exception.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
Raises,
1414
raises,
1515
)
16+
from testtools.matchers.test import TestMatchersInterface
1617

1718
from ..helpers import FullStackRunTest
18-
from ..matchers.helpers import TestMatchersInterface
1919

2020

2121
def make_error(type, *args, **kwargs):

tests/matchers/test_higherorder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
MatchesPredicateWithParams,
2424
Not,
2525
)
26+
from testtools.matchers.test import TestMatchersInterface
2627

2728
from ..helpers import FullStackRunTest
28-
from ..matchers.helpers import TestMatchersInterface
2929

3030

3131
class TestAllMatch(TestCase, TestMatchersInterface):

tests/matchers/test_warnings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
MatchesStructure,
1414
)
1515
from testtools.matchers._warnings import IsDeprecated, WarningMessage, Warnings
16+
from testtools.matchers.test import TestMatchersInterface
1617

1718
from ..helpers import FullStackRunTest
18-
from ..matchers.helpers import TestMatchersInterface
1919

2020

2121
def make_warning(warning_type, message):

tests/test_compat.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
import ast
66
import io
77
import sys
8+
import traceback
89

910
import testtools
1011
from testtools.compat import (
12+
reraise,
1113
text_repr,
1214
unicode_output_stream,
1315
)
@@ -216,6 +218,43 @@ def test_unicode_examples_multiline(self):
216218
self.assertEqual(ast.literal_eval(actual), u)
217219

218220

221+
class TestReraise(testtools.TestCase):
222+
"""Tests for trivial reraise wrapper needed for Python 2/3 changes"""
223+
224+
def test_exc_info(self):
225+
"""After reraise exc_info matches plus some extra traceback"""
226+
try:
227+
raise ValueError("Bad value")
228+
except ValueError:
229+
_exc_info = sys.exc_info()
230+
try:
231+
reraise(*_exc_info)
232+
except ValueError:
233+
_new_exc_info = sys.exc_info()
234+
self.assertIs(_exc_info[0], _new_exc_info[0])
235+
self.assertIs(_exc_info[1], _new_exc_info[1])
236+
expected_tb = traceback.extract_tb(_exc_info[2])
237+
self.assertEqual(
238+
expected_tb, traceback.extract_tb(_new_exc_info[2])[-len(expected_tb) :]
239+
)
240+
241+
def test_custom_exception_no_args(self):
242+
"""Reraising does not require args attribute to contain params"""
243+
244+
class CustomException(Exception):
245+
"""Exception that expects and sets attrs but not args"""
246+
247+
def __init__(self, value):
248+
Exception.__init__(self)
249+
self.value = value
250+
251+
try:
252+
raise CustomException("Some value")
253+
except CustomException:
254+
_exc_info = sys.exc_info()
255+
self.assertRaises(CustomException, reraise, *_exc_info)
256+
257+
219258
def test_suite():
220259
from unittest import TestLoader
221260

0 commit comments

Comments
 (0)