diff options
-rw-r--r-- | Lib/subprocess.py | 6 | ||||
-rw-r--r-- | Lib/test/test_subprocess.py | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py index bae42599fe..975a924aba 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -471,8 +471,8 @@ def list2cmdline(seq): 2) A string surrounded by double quotation marks is interpreted as a single argument, regardless of white space - contained within. A quoted string can be embedded in an - argument. + or pipe characters contained within. A quoted string can be + embedded in an argument. 3) A double quotation mark preceded by a backslash is interpreted as a literal double quotation mark. @@ -498,7 +498,7 @@ def list2cmdline(seq): if result: result.append(' ') - needquote = (" " in arg) or ("\t" in arg) or not arg + needquote = (" " in arg) or ("\t" in arg) or ("|" in arg) or not arg if needquote: result.append('"') diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index a7e309ef56..9886f3d8fa 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -434,6 +434,8 @@ class ProcessTestCase(unittest.TestCase): '"a\\\\b\\ c" d e') self.assertEqual(subprocess.list2cmdline(['ab', '']), 'ab ""') + self.assertEqual(subprocess.list2cmdline(['echo', 'foo|bar']), + 'echo "foo|bar"') def test_poll(self): |