summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <baker.dylan.c@gmail.com>2016-03-25 13:37:36 -0700
committerDylan Baker <baker.dylan.c@gmail.com>2016-03-28 09:51:22 -0700
commit6a9d0146407656bcf54b61c44b3d06fa6ddb12d9 (patch)
tree9f478503bcdef0e533c00d601e0e44c72e211a98
parentcc83192b948e056b1c63636e39255030dd1ceee9 (diff)
framework: fix unicode command line arguments with python 2.x
In python 3.x input is unicode by default, but in python 2.x everything is a byte string by default (which assumes ascii encoding), this includes input. Currently when running with python 3.x it's possible to use unicode for input, but python 2.x will choke when it tries to encode the bytes into unicode using the ascii codec. For example, this will work with python 3.x but no with python 2.x: (The character is yuki, Japanese for snow, if memory serves) ./piglit run quick 雪 -c This is actually pretty easy to fix, when running with python 2.x decode each input element into unicode using utf-8 as soon as the input is received. This fixes the above example to work. Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com> Tested-by: Marek Olšák <marek.olsak@amd.com>
-rwxr-xr-xpiglit17
-rwxr-xr-xpiglit-print-commands.py7
-rwxr-xr-xpiglit-resume.py6
-rwxr-xr-xpiglit-run.py6
-rwxr-xr-xpiglit-summary-html.py6
-rwxr-xr-xpiglit-summary.py6
6 files changed, 38 insertions, 10 deletions
diff --git a/piglit b/piglit
index 514dd3ff0..cc05bcc5b 100755
--- a/piglit
+++ b/piglit
@@ -31,12 +31,16 @@ capture -h/--help and the results will not be useful.
"""
-from __future__ import print_function
-
+from __future__ import (
+ absolute_import, division, print_function, unicode_literals
+)
+import argparse
import os
import os.path as path
import sys
-import argparse
+
+import six
+
def setup_module_search_path():
"""Add Piglit's data directory to Python's module search path.
@@ -110,6 +114,11 @@ import framework.programs.summary as summary
def main():
""" Parse argument and call other executables """
+ if six.PY2:
+ input_ = [i.decode('utf-8') for i in sys.argv[1:]]
+ elif six.PY3:
+ input_ = sys.argv[1:]
+
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
@@ -147,7 +156,7 @@ def main():
# Parse the known arguments (piglit run or piglit summary html for
# example), and then pass the arguments that this parser doesn't know about
# to that executable
- parsed, args = parser.parse_known_args()
+ parsed, args = parser.parse_known_args(input_)
returncode = parsed.func(args)
sys.exit(returncode)
diff --git a/piglit-print-commands.py b/piglit-print-commands.py
index c891e8e0a..793ffaef6 100755
--- a/piglit-print-commands.py
+++ b/piglit-print-commands.py
@@ -22,7 +22,9 @@
# DEALINGS IN THE SOFTWARE.
-from __future__ import print_function
+from __future__ import (
+ absolute_import, division, print_function, unicode_literals
+)
import argparse
import sys
import os
@@ -36,6 +38,7 @@ from framework.test import Test, GleanTest
def main():
+ input_ = [i.decode('utf-8') for i in sys.argv[1:]]
parser = argparse.ArgumentParser(parents=[parsers.CONFIG])
parser.add_argument("-t", "--include-tests",
default=[],
@@ -52,7 +55,7 @@ def main():
parser.add_argument("testProfile",
metavar="<Path to testfile>",
help="Path to results folder")
- args = parser.parse_args()
+ args = parser.parse_args(input_)
options.OPTIONS.exclude_filter = args.exclude_tests
options.OPTIONS.include_filter = args.include_tests
diff --git a/piglit-resume.py b/piglit-resume.py
index 6b78529fc..c8f0fe276 100755
--- a/piglit-resume.py
+++ b/piglit-resume.py
@@ -26,7 +26,11 @@ Deprecated compatability wrapper
"""
+from __future__ import (
+ absolute_import, division, print_function, unicode_literals
+)
import sys
+
from framework.programs.run import resume
-resume(sys.argv[1:])
+resume([i.decode('utf-8') for i in sys.argv[1:]])
diff --git a/piglit-run.py b/piglit-run.py
index 4c0f87861..7f6cf1ae0 100755
--- a/piglit-run.py
+++ b/piglit-run.py
@@ -26,7 +26,11 @@ Deprecated compatability wrapper
"""
+from __future__ import (
+ absolute_import, division, print_function, unicode_literals
+)
import sys
+
from framework.programs.run import run
-run(sys.argv[1:])
+run([i.decode('utf-8') for i in sys.argv[1:]])
diff --git a/piglit-summary-html.py b/piglit-summary-html.py
index 4b5278e77..163d0069a 100755
--- a/piglit-summary-html.py
+++ b/piglit-summary-html.py
@@ -22,7 +22,11 @@
""" Deprecated compatability wrapper for html summary """
+from __future__ import (
+ absolute_import, division, print_function, unicode_literals
+)
import sys
+
from framework.programs.summary import html
-html(sys.argv[1:])
+html([i.decode('utf-8') for i in sys.argv[1:]])
diff --git a/piglit-summary.py b/piglit-summary.py
index d1294be3e..62f29ce91 100755
--- a/piglit-summary.py
+++ b/piglit-summary.py
@@ -22,7 +22,11 @@
""" Deprecated compatability wrapper for console summary """
+from __future__ import (
+ absolute_import, division, print_function, unicode_literals
+)
import sys
+
from framework.programs.summary import console
-console(sys.argv[1:])
+console([i.decode('utf-8') for i in sys.argv[1:]])