commit: f5e2efbbf0a4a1fa02df09a12ce9ec69970ab14c
parent b0872c19ea6fb5dcc20d695d6faead4af42da364
Author: Philipp Hagemeister <phihag@phihag.de>
Date: Tue, 24 Mar 2015 16:39:46 +0100
[options] Handle special characters in argv (Fixes #5157)
Diffstat:
2 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/test/test_execution.py b/test/test_execution.py
@@ -1,4 +1,6 @@
#!/usr/bin/env python
+# coding: utf-8
+
from __future__ import unicode_literals
import unittest
@@ -27,5 +29,12 @@ class TestExecution(unittest.TestCase):
def test_main_exec(self):
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__':
unittest.main()
diff --git a/youtube_dl/options.py b/youtube_dl/options.py
@@ -794,6 +794,11 @@ def parseOpts(overrideArguments=None):
write_string('[debug] Override config: ' + repr(overrideArguments) + '\n')
else:
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:
system_conf = []
user_conf = []