summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@jelmer.uk>2022-07-01 19:37:40 +0100
committerGitHub <noreply@github.com>2022-07-01 19:37:40 +0100
commit73eb82e06c6578fc964a2bf4b6710ed71f3b045c (patch)
tree92b2c0de99f7edd22376aa7f5a92ff7a2a08af3a
parente4ea2ec854191c83572e0b94d5d15425a6fd9a87 (diff)
parent4c352be4d3ba2dbf870b1e19885c4a4135264295 (diff)
downloadtesttools-73eb82e06c6578fc964a2bf4b6710ed71f3b045c.tar.gz
Merge branch 'master' into compound-fixture
-rw-r--r--testtools/testcase.py2
-rw-r--r--testtools/tests/test_run.py4
-rw-r--r--testtools/tests/test_testcase.py4
-rw-r--r--testtools/tests/test_testresult.py23
-rw-r--r--testtools/tests/test_testsuite.py2
5 files changed, 22 insertions, 13 deletions
diff --git a/testtools/testcase.py b/testtools/testcase.py
index 012def3..f3bd510 100644
--- a/testtools/testcase.py
+++ b/testtools/testcase.py
@@ -275,6 +275,8 @@ class TestCase(unittest.TestCase):
return False
return self.__dict__ == other.__dict__
+ __hash__ = unittest.TestCase.__hash__
+
def __repr__(self):
# We add id to the repr because it makes testing testtools easier.
return f"<{self.id()} id=0x{id(self):0x}>"
diff --git a/testtools/tests/test_run.py b/testtools/tests/test_run.py
index ee96eec..9808421 100644
--- a/testtools/tests/test_run.py
+++ b/testtools/tests/test_run.py
@@ -202,9 +202,9 @@ unittest.loader._FailedTest.runexample
Failed to import test module: runexample
Traceback (most recent call last):
File ".../loader.py", line ..., in _find_test_path
- package = self._get_module_from_name(name)
+ package = self._get_module_from_name(name)...
File ".../loader.py", line ..., in _get_module_from_name
- __import__(name)
+ __import__(name)...
File ".../runexample/__init__.py", line 1
class not in
...^...
diff --git a/testtools/tests/test_testcase.py b/testtools/tests/test_testcase.py
index 00cb60d..c2766ff 100644
--- a/testtools/tests/test_testcase.py
+++ b/testtools/tests/test_testcase.py
@@ -86,6 +86,10 @@ class TestPlaceHolder(TestCase):
test = PlaceHolder("test id", "description")
self.assertEqual("description", test.shortDescription())
+ def test_testcase_is_hashable(self):
+ test = hash(self)
+ self.assertEqual(unittest.TestCase.__hash__(self), test)
+
def test_repr_just_id(self):
# repr(placeholder) shows you how the object was constructed.
test = PlaceHolder("test id")
diff --git a/testtools/tests/test_testresult.py b/testtools/tests/test_testresult.py
index 72ffb0a..d419f02 100644
--- a/testtools/tests/test_testresult.py
+++ b/testtools/tests/test_testresult.py
@@ -1265,11 +1265,11 @@ class TestTestResult(TestCase):
DocTestMatches(
'Traceback (most recent call last):\n'
' File "...testtools...runtest.py", line ..., in _run_user\n'
- ' return fn(*args, **kwargs)\n'
+ ' return fn(*args, **kwargs)\n...'
' File "...testtools...testcase.py", line ..., in _run_test_method\n'
- ' return self._get_test_method()()\n'
+ ' return self._get_test_method()()\n...'
' File "...testtools...tests...test_testresult.py", line ..., in error\n'
- ' 1/0\n'
+ ' 1/0\n...'
'ZeroDivisionError: ...\n',
doctest.ELLIPSIS | doctest.REPORT_UDIFF))
@@ -1282,7 +1282,7 @@ class TestTestResult(TestCase):
DocTestMatches(
'Traceback (most recent call last):\n'
' File "...testtools...tests...test_testresult.py", line ..., in error\n'
- ' 1/0\n'
+ ' 1/0\n...'
'ZeroDivisionError: ...\n',
doctest.ELLIPSIS))
@@ -1321,17 +1321,17 @@ class TestTestResult(TestCase):
DocTestMatches(
'Traceback (most recent call last):\n'
' File "...testtools...runtest.py", line ..., in _run_user\n'
- ' return fn(*args, **kwargs)\n'
+ ' return fn(*args, **kwargs)\n...'
' args = ...\n'
' fn = ...\n'
' kwargs = ...\n'
' self = ...\n'
' File "...testtools...testcase.py", line ..., in _run_test_method\n'
- ' return self._get_test_method()()\n'
+ ' return self._get_test_method()()\n...'
' result = ...\n'
' self = ...\n'
' File "...testtools...tests...test_testresult.py", line ..., in error\n'
- ' 1/0\n'
+ ' 1/0\n...'
' a = 1\n'
' self = ...\n'
'ZeroDivisionError: ...\n',
@@ -2644,12 +2644,15 @@ class TestNonAsciiResults(TestCase):
" raise RuntimeError\n"
" def __repr__(self):\n"
" raise RuntimeError\n")
+ if sys.version_info >= (3, 11):
+ expected = "UnprintableError: <exception str() failed>\n"
+ else:
+ expected = (
+ "UnprintableError: <unprintable UnprintableError object>\n")
textoutput = self._test_external_case(
modulelevel=exception_class,
testline="raise UnprintableError")
- self.assertIn(self._as_output(
- "UnprintableError: <unprintable UnprintableError object>\n"),
- textoutput)
+ self.assertIn(self._as_output(expected), textoutput)
def test_non_ascii_dirname(self):
"""Script paths in the traceback can be non-ascii"""
diff --git a/testtools/tests/test_testsuite.py b/testtools/tests/test_testsuite.py
index 358ac3a..26d2152 100644
--- a/testtools/tests/test_testsuite.py
+++ b/testtools/tests/test_testsuite.py
@@ -178,7 +178,7 @@ class TestConcurrentStreamTestSuiteRun(TestCase):
"Traceback (most recent call last):\n")
self.assertThat(events[2][6].decode('utf8'), DocTestMatches("""\
File "...testtools/testsuite.py", line ..., in _run_test
- test.run(process_result)
+ test.run(process_result)...
""", doctest.ELLIPSIS))
self.assertThat(events[3][6].decode('utf8'), DocTestMatches("""\
TypeError: ...run() takes ...1 ...argument...2...given...