mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Merged revisions 80578 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r80578 | nick.coghlan | 2010-04-29 00:29:06 +1000 (Thu, 29 Apr 2010) | 1 line Issue 7490: make IGNORE_EXCEPTION_DETAIL also ignore details of the module containing the exception under test (original patch by Lennart Regebro) ........
This commit is contained in:
parent
0681785d09
commit
5e76e94fd4
5 changed files with 108 additions and 14 deletions
|
@ -864,6 +864,77 @@ detail:
|
|||
>>> doctest.DocTestRunner(verbose=False).run(test)
|
||||
TestResults(failed=0, attempted=1)
|
||||
|
||||
IGNORE_EXCEPTION_DETAIL also ignores difference in exception formatting
|
||||
between Python versions. For example, in Python 2.x, the module path of
|
||||
the exception is not in the output, but this will fail under Python 3:
|
||||
|
||||
>>> def f(x):
|
||||
... r'''
|
||||
... >>> from http.client import HTTPException
|
||||
... >>> raise HTTPException('message')
|
||||
... Traceback (most recent call last):
|
||||
... HTTPException: message
|
||||
... '''
|
||||
>>> test = doctest.DocTestFinder().find(f)[0]
|
||||
>>> doctest.DocTestRunner(verbose=False).run(test)
|
||||
... # doctest: +ELLIPSIS
|
||||
**********************************************************************
|
||||
File ..., line 4, in f
|
||||
Failed example:
|
||||
raise HTTPException('message')
|
||||
Expected:
|
||||
Traceback (most recent call last):
|
||||
HTTPException: message
|
||||
Got:
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
http.client.HTTPException: message
|
||||
TestResults(failed=1, attempted=2)
|
||||
|
||||
But in Python 3 the module path is included, and therefore a test must look
|
||||
like the following test to succeed in Python 3. But that test will fail under
|
||||
Python 2.
|
||||
|
||||
>>> def f(x):
|
||||
... r'''
|
||||
... >>> from http.client import HTTPException
|
||||
... >>> raise HTTPException('message')
|
||||
... Traceback (most recent call last):
|
||||
... http.client.HTTPException: message
|
||||
... '''
|
||||
>>> test = doctest.DocTestFinder().find(f)[0]
|
||||
>>> doctest.DocTestRunner(verbose=False).run(test)
|
||||
TestResults(failed=0, attempted=2)
|
||||
|
||||
However, with IGNORE_EXCEPTION_DETAIL, the module name of the exception
|
||||
(or its unexpected absence) will be ignored:
|
||||
|
||||
>>> def f(x):
|
||||
... r'''
|
||||
... >>> from http.client import HTTPException
|
||||
... >>> raise HTTPException('message') #doctest: +IGNORE_EXCEPTION_DETAIL
|
||||
... Traceback (most recent call last):
|
||||
... HTTPException: message
|
||||
... '''
|
||||
>>> test = doctest.DocTestFinder().find(f)[0]
|
||||
>>> doctest.DocTestRunner(verbose=False).run(test)
|
||||
TestResults(failed=0, attempted=2)
|
||||
|
||||
The module path will be completely ignored, so two different module paths will
|
||||
still pass if IGNORE_EXCEPTION_DETAIL is given. This is intentional, so it can
|
||||
be used when exceptions have changed module.
|
||||
|
||||
>>> def f(x):
|
||||
... r'''
|
||||
... >>> from http.client import HTTPException
|
||||
... >>> raise HTTPException('message') #doctest: +IGNORE_EXCEPTION_DETAIL
|
||||
... Traceback (most recent call last):
|
||||
... foo.bar.HTTPException: message
|
||||
... '''
|
||||
>>> test = doctest.DocTestFinder().find(f)[0]
|
||||
>>> doctest.DocTestRunner(verbose=False).run(test)
|
||||
TestResults(failed=0, attempted=2)
|
||||
|
||||
But IGNORE_EXCEPTION_DETAIL does not allow a mismatch in the exception type:
|
||||
|
||||
>>> def f(x):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue