Move the re.compile into the core.Enivironment constructor, which reduces code duplication. It also allows us to pass environment data on initilization of the object, rather that having edit it's attributes individually.
V2: - Does not remove deprecated options, only marks them as such Signed-off-by: Dylan Baker <baker.dyla...@gmail.com> --- framework/core.py | 26 +++++++++++++++------ piglit-print-commands.py | 29 +++++++++++------------ piglit-run.py | 60 ++++++++++++++++++++---------------------------- 3 files changed, 58 insertions(+), 57 deletions(-) diff --git a/framework/core.py b/framework/core.py index 645598f..3856ddf 100644 --- a/framework/core.py +++ b/framework/core.py @@ -371,14 +371,26 @@ class TestrunResult: ############################################################################# class Environment: - def __init__(self): - # If disabled, runs all tests serially from the main thread. - self.concurrent = True - self.execute = True - self.filter = [] + def __init__(self, concurrent=True, execute=True, include_filter=[], + exclude_filter=[], valgrind=False): + self.concurrent = concurrent + self.execute = execute + self.filter = [] self.exclude_filter = [] - self.exclude_tests = set() - self.valgrind = False + self.exclude_tests = set() + self.valgrind = valgrind + + """ + The filter lists that are read in should be a list of string objects, + however, the filters need to be a list or regex object. + + This code uses re.compile to rebuild the lists and set self.filter + """ + for each in include_filter: + self.filter.append(re.compile(each)) + for each in exclude_filter: + self.exclude_filter.append(re.compile(each)) + def run(self, command): try: diff --git a/piglit-print-commands.py b/piglit-print-commands.py index 9dd2290..617952c 100755 --- a/piglit-print-commands.py +++ b/piglit-print-commands.py @@ -24,7 +24,6 @@ import argparse import os.path as path -import re import sys, os import time import traceback @@ -64,25 +63,25 @@ def main(): args = parser.parse_args() - env = core.Environment() - - # If --tests is called warn that it is deprecated - if args.tests is no []: - print "Warning: Option --tests is deprecated. Use --include-tests" - - # Append includes and excludes to env - for each in args.include_tests: - env.filter.append(re.compile(each)) - for each in args.tests: - env.filter.append(re.compile(each)) - for each in args.exclude_tests: - env.exclude_filter.append(re.compile(each)) + # Deprecated + # --include-tests is the standard going forward, but for backwards + # compatability merge args.tests into args.include_tests and drop + # duplicates + if args.tests is not []: + print "Warnings: Option --tests is deprecated, use --include-tests" + args.include_tests = list(set(args.include_tests + args.tests)) + + # Set the environment, pass in the included and excluded tests + env = core.Environment( + exclude_filter=args.exclude_tests, + include_filter=args.include_tests, + ) # Change to the piglit's path piglit_dir = path.dirname(path.realpath(sys.argv[0])) os.chdir(piglit_dir) - profile = core.loadTestProfile(args.testFile) + profile = core.loadTestProfile(args.testProfile) def getCommand(test): command = '' diff --git a/piglit-run.py b/piglit-run.py index 1a50651..366c897 100755 --- a/piglit-run.py +++ b/piglit-run.py @@ -24,7 +24,6 @@ import argparse import os.path as path -import re import sys, os import time import traceback @@ -39,11 +38,8 @@ from framework.threads import synchronized_self ############################################################################# def main(): - env = core.Environment() - parser = argparse.ArgumentParser(sys.argv) - # Either require that a name for the test is passed or that # resume is requested excGroup1 = parser.add_mutually_exclusive_group() @@ -55,8 +51,10 @@ def main(): action = "store_true", help = "Resume an interupted test run") + # Setting the --dry-run flag is equivalent to env.execute=false parser.add_argument("-d", "--dry-run", - action = "store_true", + action = "store_false", + dest = "execute", help = "Do not execute the tests") parser.add_argument("-t", "--include-tests", default = [], @@ -81,7 +79,8 @@ def main(): # supplied, or it throws an error excGroup2 = parser.add_mutually_exclusive_group() excGroup2.add_argument("--no-concurrency", - action = "store_true", + action = "store_false", + dest = "concurrency", help = "Disable concurrent test runs") excGroup2.add_argument("-c", "--concurrent", action = "store", @@ -109,33 +108,26 @@ def main(): if args.platform is not None: os.environ['PIGLIT_PLATFORM'] = args.platform - # Set dry-run - if args.dry_run is True: - env.execute = False - - # Set valgrind - if args.valgrind is True: - env.valgrind = True - - # Turn concurency off if requested - # Deprecated + # Deprecated: + # If the deprecated -c, --concurrent flag is passed, override + # args.concurrency (which would otherwise be set by the --no-concurrencc) + # flag and print a warning. if args.concurrent is not None: if (args.concurrent == '1' or args.concurrent == 'on'): - env.concurrent = True + args.concurrency = True print "Warning: Option -c, --concurrent is deprecated, " \ "concurrent test runs are on by default" elif (args.concurrent == '0' or args.concurrent == 'off'): - env.concurrent = False + args.concurrency = False print "Warning: Option -c, --concurrent is deprecated, " \ "use --no-concurrent for non-concurrent test runs" # Ne need for else, since argparse restricts the arguments allowed - # Not deprecated - elif args.no_concurrency is True: - env.concurrent = False - # If the deprecated tests option was passed print a warning if args.tests is not []: + # This merges any options passed into the --tests option into the + # ones passed into -t or --tests-include and throws out duplicates + args.include_tests = list(set(args.include_tests + args.tests)) print "Warning: Option --tests is deprecated, use " \ "--include-tests instead" @@ -147,25 +139,23 @@ def main(): # Load settings from the old results JSON old_results = core.loadTestResults(resultsDir) profileFilename = old_results.options['profile'] - for value in old_results.options['filter']: - test_filter.append(value) - env.filter.append(re.compile(value)) - for value in old_results.options['exclude_filter']: - exclude_filter.append(value) - env.exclude_filter.append(re.compile(value)) + + # Changing the args to the old args allows us to set them + # all in one places down the way + args.exclude_tests = old_results.options['exclude_filter'] + args.include_tests = old_results.options['filter'] # Otherwise parse additional settings from the command line else: profileFilename = args.testProfile resultsDir = args.resultsPath - # Set the excluded and included tests regex - for each in args.include_tests: - env.filter.append(re.compile(each)) - for each in args.tests: - env.filter.append(re.compile(each)) - for each in args.exclude_tests: - env.exclude_filter.append(re.compile(each)) + # Pass arguments into Environment + env = core.Environment(concurrent=args.concurrency, + exclude_filter=args.exclude_tests, + include_filter=args.include_tests, + execute=args.execute, + valgrind=args.valgrind) # Change working directory to the root of the piglit directory piglit_dir = path.dirname(path.realpath(sys.argv[0])) -- 1.8.1.4 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit