This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: test_trace uses test_pprint
Type: behavior Stage: patch review
Components: Tests Versions: Python 3.4, Python 3.5
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: belopolsky, larry, python-dev, r.david.murray, serhiy.storchaka, terry.reedy
Priority: normal Keywords: patch

Created on 2015-05-17 05:55 by serhiy.storchaka, last changed 2022-04-11 14:58 by admin.

Files
File name Uploaded Description Edit
issue24215.patch serhiy.storchaka, 2015-05-19 13:33 review
Messages (10)
msg243386 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-05-17 05:55
Converting test_pprint to be unittest discoverable had broke the test_trace that uses test_main from test_pprint.

======================================================================
ERROR: test_coverage (test.test_trace.TestCoverage)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/serhiy/py/cpython/Lib/test/test_trace.py", line 312, in test_coverage
    self._coverage(tracer)
  File "/home/serhiy/py/cpython/Lib/test/test_trace.py", line 305, in _coverage
    tracer.run(cmd)
  File "/home/serhiy/py/cpython/Lib/trace.py", line 500, in run
    self.runctx(cmd, dict, dict)
  File "/home/serhiy/py/cpython/Lib/trace.py", line 508, in runctx
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
AttributeError: module 'test.test_pprint' has no attribute 'test_main'

======================================================================
ERROR: test_coverage_ignore (test.test_trace.TestCoverage)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/serhiy/py/cpython/Lib/test/test_trace.py", line 327, in test_coverage_ignore
    self._coverage(tracer)
  File "/home/serhiy/py/cpython/Lib/test/test_trace.py", line 305, in _coverage
    tracer.run(cmd)
  File "/home/serhiy/py/cpython/Lib/trace.py", line 500, in run
    self.runctx(cmd, dict, dict)
  File "/home/serhiy/py/cpython/Lib/trace.py", line 508, in runctx
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
AttributeError: module 'test.test_pprint' has no attribute 'test_main'

----------------------------------------------------------------------

The simplest way to fix the regression is to restore test_main in test_pprint. But for now test_pprint is much larger and slower than it was when test_trace was written. Perhaps it is not the best example for testing tracing. Are there better ideas?
msg243416 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-05-17 16:59
Since test files should no longer have test_main, test_trace should no longer look for one.  (And indeed, test_trace itself should be converted, which looks trivial.) The offending line is
  cmd='from test import test_pprint; test_pprint.test_main()'):
The use of 'test_main' is just a convenience; it could just as well be 'trace_main'.  But there is no need to put anything extra in the traced file.  The following works for me on on 3.4.3
                  cmd='import unittest, test.test_pprint;'
                  'unittest.main(test.test_pprint, exit=False)'):

This solves the problem of this issue, but the tracing takes about 10 of 14.5 seconds total, An alternative might be considered, but test_coverage is tied to the output from pprint run by unittest.  Alexander, can you suggest an alternate target and output test that would still fulfill the intent of the test?
msg243582 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2015-05-19 12:20
I've backed out the change set that broke the buildbots (see de9c43fabda6).

I can understand this changeset getting committed, since one doesn't normally expect a change in the tests to break other tests (though I myself do often run the full test suite anyway), but it is not acceptable that the breakage of the buildbots was not addressed quickly.  The problem should have been fixed or the changeset backed out within hours of the problem being recognized.
msg243584 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-05-19 12:26
New changeset cf52756f19b6 by R David Murray in branch '3.4':
#24215: also back out changeset that broke test_trace in 3.4.
https://hg.python.org/cpython/rev/cf52756f19b6
msg243588 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-05-19 13:33
Sorry, I expected this issue be solved much faster.

Unfortunately Terry's recipe doesn't work. Here is a patch that reapplies changes that broke buildbots (additional tests for buildins and making test_pprint discoverable), and also fixes test_trace and makes it discoverable.

I found yet one issue with test_trace. It fails if run regrtest with the -m option (both patched and unpatched versions, there is no regression).

$ ./python -m test.regrtest test_trace
[1/1] test_trace
1 test OK.
$ ./python -m test.regrtest -m test_coverage test_trace
[1/1] test_trace
test test_trace failed -- Traceback (most recent call last):
  File "/home/serhiy/py/cpython-3.4/Lib/test/test_trace.py", line 313, in test_coverage
    self.assertTrue("pprint.cover" in files)
AssertionError: False is not true

1 test failed:
    test_trace

It fails because run_unittest() is used in tested script. That is yet one argument against using test_pprint in test_trace.
msg243592 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2015-05-19 14:13
If you are looking for a small test file to switch to, perhaps test_uu would be a good candidate.  It isn't very likely to grow, since I don't think uu encoding is used much any more, so the likelyhood of someone caring about it is relatively low.  But I haven't looked at what test_trace is using test_pprint for, so perhaps it isn't suitable.
msg243594 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-05-19 14:23
There are issues with additional tests for uu.

The fact that test_trace fails with the -m option means that any file that runs unittest is not good example (unittest looks on sys.argv).
msg243614 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-05-19 18:11
My recipe worked for me, but I am not surprised that it might fail elsewhere.  Is the specific purpose of the two problemmatic test_trace test to test that trace works with unittest?  It did not seem like it to me.  If not,  test_trace could be decoupled from other tests and use a 'tracetest.py' file that defines one function to be traced.

In the meanwhile, I think you should disable the two tests in test_trace and apply the test_pprint changes, rather than hold test_pprint hostage.
msg243679 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-05-20 16:38
New changeset 2c074a8dd084 by Serhiy Storchaka in branch '3.4':
Issue 24215: Added tests for more builtin types in test_pprint.
https://hg.python.org/cpython/rev/2c074a8dd084

New changeset da711bdcc1bf by Serhiy Storchaka in branch 'default':
Issue 24215: Added tests for more builtin types in test_pprint.
https://hg.python.org/cpython/rev/da711bdcc1bf
msg318561 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2018-06-03 15:47
There is different failure when run this test separately:

$ ./python -m test -v -m test_coverage test_trace
...
======================================================================
FAIL: test_coverage (test.test_trace.TestCoverage)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/serhiy/py/cpython/Lib/test/test_trace.py", line 318, in test_coverage
    self.assertIn("pprint.cover", files)
AssertionError: 'pprint.cover' not found in ['warnings.cover', 'unittest.case.cover', 'test.support.__init__.cover', 'test.test_pprint.cover', 'trace.cover', 'platform.cover', 'weakref.cover', 'unittest.loader.cover', 'unittest.util.cover', 'copy.cover', 'unittest.runner.cover', 'unittest.result.cover', 'unittest.suite.cover', 'unittest.signals.cover', 'test.test_set.cover']

----------------------------------------------------------------------
History
Date User Action Args
2022-04-11 14:58:16adminsetgithub: 68403
2018-06-03 15:47:58serhiy.storchakasetmessages: + msg318561
2015-05-20 16:38:31python-devsetmessages: + msg243679
2015-05-19 18:11:22terry.reedysetmessages: + msg243614
2015-05-19 14:23:05serhiy.storchakasetmessages: + msg243594
2015-05-19 14:13:12r.david.murraysetmessages: + msg243592
2015-05-19 13:33:37serhiy.storchakasetfiles: + issue24215.patch
keywords: + patch
messages: + msg243588

stage: needs patch -> patch review
2015-05-19 12:30:28r.david.murraysetpriority: release blocker -> normal
2015-05-19 12:26:11python-devsetnosy: + python-dev
messages: + msg243584
2015-05-19 12:20:36r.david.murraysetnosy: + r.david.murray
messages: + msg243582
2015-05-17 16:59:16terry.reedysetnosy: + terry.reedy

messages: + msg243416
stage: needs patch
2015-05-17 05:55:50serhiy.storchakacreate