Skip to content

Commit

Permalink
Fix various test failures with Python 3.11
Browse files Browse the repository at this point in the history
The changes for https://peps.python.org/pep-0657/ require a number of
changes in our tests.

Some tests still fail due to
https://twistedmatrix.com/trac/ticket/10336, so I'm not adding
3.11 to the test matrix yet.

Fixes #325.
  • Loading branch information
cjwatson authored and jelmer committed Jul 1, 2022
1 parent 621553d commit 6b0c2e0
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 13 deletions.
4 changes: 2 additions & 2 deletions testtools/tests/test_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,9 +202,9 @@ def test_run_list_failed_import(self):
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
...^...
Expand Down
23 changes: 13 additions & 10 deletions testtools/tests/test_testresult.py
Original file line number Diff line number Diff line change
Expand Up @@ -1265,11 +1265,11 @@ def test_traceback_formatting_without_stack_hidden(self):
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))

Expand All @@ -1282,7 +1282,7 @@ def test_traceback_formatting_with_stack_hidden(self):
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))

Expand Down Expand Up @@ -1321,17 +1321,17 @@ def test_traceback_with_locals(self):
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',
Expand Down Expand Up @@ -2644,12 +2644,15 @@ def test_unprintable_exception(self):
" 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"""
Expand Down
2 changes: 1 addition & 1 deletion testtools/tests/test_testsuite.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ def run(self):
"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...
Expand Down

0 comments on commit 6b0c2e0

Please sign in to comment.