Issue 18381: unittest warnings counter (original) (raw)
I get a test failure when I run the test suite with unittest.patch:
test_Exit (unittest.test.test_program.Test_TestProgram) ... test test_unittest crashed -- Traceback (most recent call last): File "/home/berker/projects/cpython-default/Lib/test/regrtest.py", line 1278, in runtest_inner test_runner() File "/home/berker/projects/cpython-default/Lib/test/test_unittest.py", line 8, in test_main support.run_unittest(unittest.test.suite()) File "/home/berker/projects/cpython-default/Lib/test/support/init.py", line 1764, in run_unittest _run_suite(suite) File "/home/berker/projects/cpython-default/Lib/test/support/init.py", line 1730, in _run_suite result = runner.run(suite) File "/home/berker/projects/cpython-default/Lib/unittest/runner.py", line 178, in run test(result) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 87, in call return self.run(*args, **kwds) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 125, in run test(result) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 87, in call return self.run(*args, **kwds) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 125, in run test(result) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 87, in call return self.run(*args, **kwds) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 125, in run test(result) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 87, in call return self.run(*args, **kwds) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 125, in run test(result) File "/home/berker/projects/cpython-default/Lib/unittest/case.py", line 647, in call return self.run(*args, **kwds) File "/home/berker/projects/cpython-default/Lib/unittest/case.py", line 597, in run testMethod() File "/home/berker/projects/cpython-default/Lib/unittest/test/test_program.py", line 119, in test_Exit testLoader=self.FooBarLoader()) File "/home/berker/projects/cpython-default/Lib/unittest/case.py", line 726, in assertRaises return context.handle('assertRaises', callableObj, args, kwargs) File "/home/berker/projects/cpython-default/Lib/unittest/case.py", line 173, in handle callable_obj(*args, **kwargs) File "/home/berker/projects/cpython-default/Lib/unittest/main.py", line 93, in init self.runTests() File "/home/berker/projects/cpython-default/Lib/unittest/main.py", line 244, in runTests self.result = testRunner.run(self.test) File "/home/berker/projects/cpython-default/Lib/unittest/runner.py", line 178, in run test(result) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 87, in call return self.run(*args, **kwds) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 125, in run test(result) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 87, in call return self.run(*args, **kwds) File "/home/berker/projects/cpython-default/Lib/unittest/suite.py", line 125, in run test(result) File "/home/berker/projects/cpython-default/Lib/unittest/case.py", line 647, in call return self.run(*args, **kwds) File "/home/berker/projects/cpython-default/Lib/unittest/case.py", line 597, in run testMethod() File "/home/berker/projects/cpython-default/Lib/unittest/test/test_program.py", line 60, in testFail assert False AssertionError
The new patch (see .diff) fixes that failure. Other changes:
- Added documentation
- Added a test case for addWarning and TestResult.warnings
- Added "print warning" feature
Thanks for the review, Giampaolo.
Attached a new patch which fixes text_logging and test_doctest tests.
However, this patch will broke the current behavior of test.support.check_warnings. See Lib/test/test_xml_etree.py for example:
test test_xml_etree crashed -- Traceback (most recent call last): File "/home/berker/projects/cpython-default/Lib/test/regrtest.py", line 1278, in runtest_inner test_runner() File "/home/berker/projects/cpython-default/Lib/test/test_xml_etree.py", line 2580, in test_main support.run_unittest(*test_classes) File "/home/berker/projects/cpython-default/Lib/test/test_xml_etree.py", line 2537, in exit self.checkwarnings.exit(*args) File "/home/berker/projects/cpython-default/Lib/contextlib.py", line 66, in exit next(self.gen) File "/home/berker/projects/cpython-default/Lib/test/support/init.py", line 1081, in _filterwarnings missing[0]) AssertionError: filter ("This search is broken in 1.3 and earlier, and will be fixed in a future version. If you rely on the current behaviour, change it to '.+'", FutureWarning) did not catch any warning