In python 3.x input is unicode by default, but in python 2.x everything is a byte string by default, 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 runnging with python 2.x decode each input element into unicode using utf-8 as soon as the input is received. Signed-off-by: Dylan Baker <[email protected]> --- piglit | 17 +++++++++++++---- piglit-print-commands.py | 7 +++++-- piglit-resume.py | 6 +++++- piglit-run.py | 6 +++++- piglit-summary-html.py | 6 +++++- piglit-summary.py | 6 +++++- 6 files changed, 38 insertions(+), 10 deletions(-) diff --git a/piglit b/piglit index 514dd3f..cc05bcc 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 c891e8e..793ffae 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 6b78529..c8f0fe2 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 4c0f878..7f6cf1a 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 4b5278e..163d006 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 d1294be..62f29ce 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:]]) -- 2.7.4 _______________________________________________ Piglit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/piglit
