summaryrefslogtreecommitdiff
path: root/Lib
diff options
context:
space:
mode:
authorÉric Araujo <merwok@netwok.org>2011-08-09 23:18:06 +0200
committerÉric Araujo <merwok@netwok.org>2011-08-09 23:18:06 +0200
commit7fc0394a12d4bb5632424bfdfd4bb35590dec2e5 (patch)
treead4b890d2fe33e31c5a85b9476fe317311227f37 /Lib
parent18205baf251495b5a54b08c1f9b0e1763eb27aa1 (diff)
parentef1e94a848533f2e7dbb2ed7a8b2de50e97e4b7f (diff)
downloadcpython-git-7fc0394a12d4bb5632424bfdfd4bb35590dec2e5.tar.gz
Avoid unwanted behavior change in shlex.quote (see #9723).
I simplified the quote code to use a regex instead of a loop+test when I moved pipes.quote to shlex in 5966eeb0457d; Ezio Melotti pointed out that my regex contained redundant parts (now removed) and allowed non-ASCII characters (now disallowed). I think common UNIX shells don’t quote non-ASCII characters, but there’s no harm in doing so. We’ll see if users request a change.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/shlex.py2
-rw-r--r--Lib/test/test_shlex.py3
2 files changed, 3 insertions, 2 deletions
diff --git a/Lib/shlex.py b/Lib/shlex.py
index 279ab48405..92c49c3608 100644
--- a/Lib/shlex.py
+++ b/Lib/shlex.py
@@ -276,7 +276,7 @@ def split(s, comments=False, posix=True):
return list(lex)
-_find_unsafe = re.compile(r'[^\w\d@%_\-\+=:,\./]').search
+_find_unsafe = re.compile(r'[^\w@%\-\+=:,\./]', re.ASCII).search
def quote(s):
"""Return a shell-escaped version of the string *s*."""
diff --git a/Lib/test/test_shlex.py b/Lib/test/test_shlex.py
index ea3d777ceb..d4463f3004 100644
--- a/Lib/test/test_shlex.py
+++ b/Lib/test/test_shlex.py
@@ -176,7 +176,8 @@ class ShlexTest(unittest.TestCase):
def testQuote(self):
safeunquoted = string.ascii_letters + string.digits + '@%_-+=:,./'
- unsafe = '"`$\\!'
+ unicode_sample = '\xe9\xe0\xdf' # e + acute accent, a + grave, sharp s
+ unsafe = '"`$\\!' + unicode_sample
self.assertEqual(shlex.quote(''), "''")
self.assertEqual(shlex.quote(safeunquoted), safeunquoted)