Show More
@@ -114,11 +114,17 b' def arg_split(s, posix=False):' | |||
|
114 | 114 | # http://bugs.python.org/issue1170 |
|
115 | 115 | # At least encoding the input when it's unicode seems to help, but there |
|
116 | 116 | # may be more problems lurking. Apparently this is fixed in python3. |
|
117 | is_unicode = False | |
|
117 | 118 | if isinstance(s, unicode): |
|
118 | s = s.encode(sys.stdin.encoding) | |
|
119 | is_unicode = True | |
|
120 | s = s.encode('utf-8') | |
|
119 | 121 | lex = shlex.shlex(s, posix=posix) |
|
120 | 122 | lex.whitespace_split = True |
|
121 |
|
|
|
123 | tokens = list(lex) | |
|
124 | if is_unicode: | |
|
125 | # Convert the tokens back to unicode. | |
|
126 | tokens = [x.decode('utf-8') for x in tokens] | |
|
127 | return tokens | |
|
122 | 128 | |
|
123 | 129 | |
|
124 | 130 | def abbrev_cwd(): |
@@ -66,6 +66,9 b' def test_arg_split():' | |||
|
66 | 66 | """Ensure that argument lines are correctly split like in a shell.""" |
|
67 | 67 | tests = [['hi', ['hi']], |
|
68 | 68 | [u'hi', [u'hi']], |
|
69 | ['hello there', ['hello', 'there']], | |
|
70 | [u'h\N{LATIN SMALL LETTER A WITH CARON}llo', [u'h\N{LATIN SMALL LETTER A WITH CARON}llo']], | |
|
71 | ['something "with quotes"', ['something', '"with quotes"']], | |
|
69 | 72 | ] |
|
70 | 73 | for argstr, argv in tests: |
|
71 | 74 | nt.assert_equal(arg_split(argstr), argv) |
General Comments 0
You need to be logged in to leave comments.
Login now