[options] Handle special characters in argv (Fixes #5157)

This commit is contained in:
Philipp Hagemeister 2015-03-24 16:39:46 +01:00
parent b0872c19ea
commit f5e2efbbf0
2 changed files with 14 additions and 0 deletions

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
# coding: utf-8
from __future__ import unicode_literals from __future__ import unicode_literals
import unittest import unittest
@ -27,5 +29,12 @@ class TestExecution(unittest.TestCase):
def test_main_exec(self): def test_main_exec(self):
subprocess.check_call([sys.executable, 'youtube_dl/__main__.py', '--version'], cwd=rootDir, stdout=_DEV_NULL) subprocess.check_call([sys.executable, 'youtube_dl/__main__.py', '--version'], cwd=rootDir, stdout=_DEV_NULL)
def test_cmdline_umlauts(self):
p = subprocess.Popen(
[sys.executable, 'youtube_dl/__main__.py', 'ä', '--version'],
cwd=rootDir, stdout=_DEV_NULL, stderr=subprocess.PIPE)
_, stderr = p.communicate()
self.assertFalse(stderr)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

View file

@ -794,6 +794,11 @@ def parseOpts(overrideArguments=None):
write_string('[debug] Override config: ' + repr(overrideArguments) + '\n') write_string('[debug] Override config: ' + repr(overrideArguments) + '\n')
else: else:
command_line_conf = sys.argv[1:] command_line_conf = sys.argv[1:]
# Workaround for Python 2.x, where argv is a byte list
if sys.version_info < (3,):
command_line_conf = [
a.decode('utf-8', 'replace') for a in command_line_conf]
if '--ignore-config' in command_line_conf: if '--ignore-config' in command_line_conf:
system_conf = [] system_conf = []
user_conf = [] user_conf = []