diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2016-05-03 14:09:56 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2016-05-10 14:35:19 -0700 |
commit | a7cad94da6e53ba47c6990792e9d7663513fd645 (patch) | |
tree | 022282ebd7df83aab4d237a032782aa2883ce88e /framework | |
parent | cc4fcb5d966098ba4ea8b88e41441872694ef7ca (diff) |
framework: Add piglit-print-commands to the piglit command
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 <dylanx.c.baker@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Diffstat (limited to 'framework')
-rw-r--r-- | framework/programs/print_commands.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/framework/programs/print_commands.py b/framework/programs/print_commands.py new file mode 100644 index 000000000..8330d55b6 --- /dev/null +++ b/framework/programs/print_commands.py @@ -0,0 +1,85 @@ +# Copyright (c) 2016 Intel Corporation + +# 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: + +# The above copyright notice and 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 +# 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 each test's command in a consumable format.""" + +from __future__ import ( + absolute_import, division, print_function, unicode_literals +) +import argparse +import os +import sys + +import six + +from . import parsers +from framework import options, profile, exceptions +from framework.test import Test, GleanTest + + +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) + + # Make the test command relative to the piglit_dir + test_command = test.command[:] + test_command[0] = os.path.relpath(test_command[0], piglit_dir) + + command += ' '.join(test_command) + return command + + +@exceptions.handler +def main(input_): + """The main function.""" + 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)) |