Index: tests/pybin/settings.py
===================================================================
--- tests/pybin/settings.py	(revision d65818318d7231329b68e5c6644b65c248b52a57)
+++ tests/pybin/settings.py	(revision 92e7631c742d91efe39fcc19647764af9d15f167)
@@ -77,5 +77,6 @@
 			print("updated to %s" % self.target)
 
-	def match(self, arch):
+	def filter(self, tests):
+		return [test for test in tests if not test.arch or self.target == test.arch]
 		return True if not arch else self.target == arch
 
@@ -113,8 +114,11 @@
 
 def init( options ):
+	global all_arch
+	global all_debug
+	global all_install
 	global arch
 	global archive
+	global continue_
 	global debug
-	global distcc
 	global dry_run
 	global generating
@@ -125,11 +129,11 @@
 	global timeout2gdb
 
-	arch         = Architecture(options.arch)
+	all_arch     = [Architecture(o) for o in list(dict.fromkeys(options.arch   ))]
+	all_debug    = [Debug(o)        for o in list(dict.fromkeys(options.debug  ))]
+	all_install  = [Install(o)      for o in list(dict.fromkeys(options.install))]
 	archive      = os.path.abspath(os.path.join(original_path, options.archive_errors)) if options.archive_errors else None
-	debug        = Debug(options.debug)
+	continue_    = options.continue_
 	dry_run      = options.dry_run # must be called before tools.config_hash()
-	distcc       = "DISTCC_CFA_PATH=~/.cfadistcc/%s/cfa" % tools.config_hash()
 	generating   = options.regenerate_expected
-	install      = Install(options.install)
 	make         = ['make']
 	output_width = 24
@@ -148,4 +152,8 @@
 
 def validate():
+	"""Validate the current configuration and update globals"""
+
+	global distcc
+	distcc       = "DISTCC_CFA_PATH=~/.cfadistcc/%s/cfa" % tools.config_hash()
 	errf = os.path.join(BUILDDIR, ".validate.err")
 	make_ret, out = tools.make( ".validate", error_file = errf, output_file=subprocess.DEVNULL, error=subprocess.DEVNULL )
Index: tests/pybin/tools.py
===================================================================
--- tests/pybin/tools.py	(revision d65818318d7231329b68e5c6644b65c248b52a57)
+++ tests/pybin/tools.py	(revision 92e7631c742d91efe39fcc19647764af9d15f167)
@@ -327,4 +327,8 @@
 	raise argparse.ArgumentTypeError(msg)
 
+# Convert a function that converts a string to one that converts comma separated string.
+def comma_separated(elements):
+    return lambda string: [elements(part) for part in string.split(',')]
+
 def fancy_print(text):
 	column = which('column')
