Created on 2020-09-06 04:57 by xtreak, last changed 2020-09-12 09:10 by xtreak. This issue is now closed.
When verbosity level is more than 1 the test tries to print the script_exec_args passed to script. It fails when the tuple has more than 1 elements and is used in formatting with %r. The two tests fail as below : ./python -m test test_cmd_line_script -vv ====================================================================== ERROR: test_package_error (test.test_cmd_line_script.CmdLineTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/root/cpython/Lib/test/test_cmd_line_script.py", line 368, in test_package_error self._check_import_error(["-m", "test_pkg"], msg, cwd=script_dir) File "/root/cpython/Lib/test/test_cmd_line_script.py", line 148, in _check_import_error print('Output from test script %r:' % script_exec_args) TypeError: not all arguments converted during string formatting ====================================================================== ERROR: test_package_recursion (test.test_cmd_line_script.CmdLineTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/root/cpython/Lib/test/test_cmd_line_script.py", line 379, in test_package_recursion self._check_import_error(["-m", "test_pkg"], msg, cwd=script_dir) File "/root/cpython/Lib/test/test_cmd_line_script.py", line 148, in _check_import_error print('Output from test script %r:' % script_exec_args) TypeError: not all arguments converted during string formatting ---------------------------------------------------------------------- Ran 44 tests in 4.936s FAILED (errors=2) test test_cmd_line_script failed test_cmd_line_script failed == Tests result: FAILURE == 1 test failed: test_cmd_line_script Total duration: 5.0 sec Tests result: FAILURE
I verified with master on Win10 debug 32 build. The relevant lines, 147-151, are
if verbose > 1:
print('Output from test script %r:' % script_exec_args)
print(repr(err))
print('Expected output: %r' % expected_msg)
self.assertIn(expected_msg.encode('utf-8'), err)
Normally, 'script_exec_args' is singular, the absolute file name to be executed. In the two failing cases, file 'name' is an import name, preceded by -m. Line 148 prints an informational header, when very verbose is requested, that only serves to identify the following lines. It is *not* tested. Therefore, we need not worry about the exact format, just avoiding a spurious error. The following is equivalent except when the value is a list (which should have been a tuple), when is prints without error:
print(f'Output from test script {script_exec_args!r:}')
"Output from test script ['-m', 'test_pkg']:" seems clear enough for any human reader. I ran entire suite with -vv and did not find any other new, unexpected errors. PR to follow shortly.
New changeset 7e711ead26fea6465e0ef2e3b8880b57ba8fc129 by Terry Jan Reedy in branch 'master': bpo-41731: Make test_cmd_line_script pass with -vv (GH-22206) https://github.com/python/cpython/commit/7e711ead26fea6465e0ef2e3b8880b57ba8fc129
New changeset 77901dc6c3d06dd31f6c84b2d3cb21dc26b1e351 by Miss Islington (bot) in branch '3.8': bpo-41731: Make test_cmd_line_script pass with -vv (GH-22206) https://github.com/python/cpython/commit/77901dc6c3d06dd31f6c84b2d3cb21dc26b1e351
New changeset 34e3c7592be70f652c293eb179593bf2928adeb4 by Miss Islington (bot) in branch '3.9': bpo-41731: Make test_cmd_line_script pass with -vv (GH-22206) https://github.com/python/cpython/commit/34e3c7592be70f652c293eb179593bf2928adeb4
Thanks Terry.