This is mostly just restructuring code so that piglit-print-command works like the other piglit-* commands, calling back into the same module that the main piglit application does. This allows the addition of the 'piglit print-cmds' for those who prefer that (or who use an installed piglit and don't have piglit-*.
Signed-off-by: Dylan Baker <[email protected]> --- .../programs/print_commands.py | 17 +--- piglit | 5 + piglit-print-commands.py | 113 ++++++--------------- 3 files changed, 38 insertions(+), 97 deletions(-) copy piglit-print-commands.py => framework/programs/print_commands.py (90%) diff --git a/piglit-print-commands.py b/framework/programs/print_commands.py similarity index 90% copy from piglit-print-commands.py copy to framework/programs/print_commands.py index 46241c0..06bd004 100755 --- a/piglit-print-commands.py +++ b/framework/programs/print_commands.py @@ -32,9 +32,8 @@ import sys import six -sys.path.append(os.path.dirname(os.path.realpath(sys.argv[0]))) -from framework import options, profile -from framework.programs import parsers +from . import parsers +from framework import options, profile, exceptions from framework.test import Test, GleanTest @@ -53,13 +52,9 @@ def get_command(test, piglit_dir): return command -def main(): [email protected] +def main(input_): """The main function.""" - if six.PY2: - input_ = [i.decode('utf-8') for i in sys.argv[1:]] - elif six.PY3: - input_ = sys.argv[1:] - parser = argparse.ArgumentParser(parents=[parsers.CONFIG]) parser.add_argument("-t", "--include-tests", default=[], @@ -91,7 +86,3 @@ def main(): for name, test in six.iteritems(profile_.test_list): assert isinstance(test, Test) print(name, ':::', get_command(test, piglit_dir)) - - -if __name__ == "__main__": - main() diff --git a/piglit b/piglit index e3c1f51..05fff14 100755 --- a/piglit +++ b/piglit @@ -110,6 +110,7 @@ def setup_module_search_path(): setup_module_search_path() import framework.programs.run as run import framework.programs.summary as summary +import framework.programs.print_commands as pc def main(): @@ -121,6 +122,10 @@ def main(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers() + print_cmd = subparsers.add_parser('print-cmd', + add_help=False, + help="Print piglit commands, one per line.") + print_cmd.set_defaults(func=pc.main) parse_run = subparsers.add_parser('run', add_help=False, diff --git a/piglit-print-commands.py b/piglit-print-commands.py index 46241c0..aeabe92 100755 --- a/piglit-print-commands.py +++ b/piglit-print-commands.py @@ -1,97 +1,42 @@ #!/usr/bin/env python -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# This permission notice shall be included in all copies or -# substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR(S) BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF -# OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. -"""Print each test's command in a consumable format.""" +# Copyright (c) 2014, 2016 Intel Corporation -from __future__ import ( - absolute_import, division, print_function, unicode_literals -) -import argparse -import os -import sys +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: -import six +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. -sys.path.append(os.path.dirname(os.path.realpath(sys.argv[0]))) -from framework import options, profile -from framework.programs import parsers -from framework.test import Test, GleanTest +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +"""Print piglit commands to the console. -def get_command(test, piglit_dir): - """Get just the name of the command with a path relative to bin.""" - command = '' - if isinstance(test, GleanTest): - for var, val in test.env.items(): - command += "{}='{}'".format(var, val) +Deprecated compatibility wrapper - # Make the test command relative to the piglit_dir - test_command = test.command[:] - test_command[0] = os.path.relpath(test_command[0], piglit_dir) +""" + +from __future__ import ( + absolute_import, division, print_function, unicode_literals +) +import sys - command += ' '.join(test_command) - return command +import six +from framework.programs.print_commands import main -def main(): - """The main function.""" +if __name__ == '__main__': if six.PY2: - input_ = [i.decode('utf-8') for i in sys.argv[1:]] + main([i.decode('utf-8') for i in sys.argv[1:]]) elif six.PY3: - input_ = sys.argv[1:] - - parser = argparse.ArgumentParser(parents=[parsers.CONFIG]) - parser.add_argument("-t", "--include-tests", - default=[], - action="append", - metavar="<regex>", - help="Run only matching tests " - "(can be used more than once)") - parser.add_argument("-x", "--exclude-tests", - default=[], - action="append", - metavar="<regex>", - help="Exclude matching tests (can be used more than " - "once)") - parser.add_argument("testProfile", - metavar="<Path to testfile>", - help="Path to results folder") - args = parser.parse_args(input_) - - options.OPTIONS.exclude_filter = args.exclude_tests - options.OPTIONS.include_filter = args.include_tests - - # Change to the piglit's path - piglit_dir = os.path.dirname(os.path.realpath(sys.argv[0])) - os.chdir(piglit_dir) - - profile_ = profile.load_test_profile(args.testProfile) - - profile_._prepare_test_list() - for name, test in six.iteritems(profile_.test_list): - assert isinstance(test, Test) - print(name, ':::', get_command(test, piglit_dir)) - - -if __name__ == "__main__": - main() + main(sys.argv[1:]) -- 2.8.2 _______________________________________________ Piglit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/piglit
