Skip to content

Commit afb5e55

Browse files
bpo-32852: Fix trace changing sys.argv to tuple. (GH-5692)
(cherry picked from commit 9f42232) Co-authored-by: Kyle Altendorf <sda@fstab.net>
1 parent 025544a commit afb5e55

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

Lib/test/test_trace.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,5 +387,15 @@ def test_listfuncs_flag_success(self):
387387
status, stdout, stderr = assert_python_ok('-m', 'trace', '-l', TESTFN)
388388
self.assertIn(b'functions called:', stdout)
389389

390+
def test_sys_argv_list(self):
391+
with open(TESTFN, 'w') as fd:
392+
self.addCleanup(unlink, TESTFN)
393+
fd.write("import sys\n")
394+
fd.write("print(type(sys.argv))\n")
395+
396+
status, direct_stdout, stderr = assert_python_ok(TESTFN)
397+
status, trace_stdout, stderr = assert_python_ok('-m', 'trace', '-l', TESTFN)
398+
self.assertIn(direct_stdout.strip(), trace_stdout)
399+
390400
if __name__ == '__main__':
391401
unittest.main()

Lib/trace.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,7 @@ def parse_ignore_dir(s):
705705
if opts.filename is None:
706706
parser.error('filename is missing: required with the main options')
707707

708-
sys.argv = opts.filename, *opts.arguments
708+
sys.argv = [opts.filename, *opts.arguments]
709709
sys.path[0] = os.path.dirname(opts.filename)
710710

711711
t = Trace(opts.count, opts.trace, countfuncs=opts.listfuncs,
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Make sure sys.argv remains as a list when running trace.

0 commit comments

Comments
 (0)