aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--framework/core.py26
-rwxr-xr-xpiglit-print-commands.py27
-rwxr-xr-xpiglit-run.py60
3 files changed, 57 insertions, 56 deletions
diff --git a/framework/core.py b/framework/core.py
index 645598f1..3856ddfd 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 2d8ed8b2..228ac84b 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
+ # 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 != []:
- 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))
+ 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 e5e38226..6d6ec770 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-concurrency)
+ # 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-concurrency 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 != []:
+ # 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]))