Index: tests/pybin/settings.py
===================================================================
--- tests/pybin/settings.py	(revision 99581ee3ebb93015c6498c2976cbb8fcb21c84b6)
+++ tests/pybin/settings.py	(revision a2f2fda0a7a5501347525d2e999fe2d7d54e5fba)
@@ -85,5 +85,4 @@
 	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
 
 	@staticmethod
@@ -101,14 +100,22 @@
 	def __init__(self, ast):
 		if ast == "new":
+			self.target = ast
 			self.string = "New AST"
 			self.flags  = """AST_FLAGS=-XCFA,--new-ast"""
 		elif ast == "old":
+			self.target = ast
 			self.string = "Old AST"
 			self.flags  = """AST_FLAGS=-XCFA,--old-ast"""
 		elif ast == None:
-			self.string = "Default AST (%s)" % ("new" if config.NEWAST else "old")
+			self.target = "new" if config.NEWAST else "old"
+			self.string = "Default AST (%s)" % self.target
 			self.flags  = """AST_FLAGS="""
 		else:
 			print("""ERROR: Invalid ast configuration, must be "old", "new" or left unspecified, was %s""" % (value), file=sys.stderr)
+			sys.exit(1)
+
+	def filter(self, tests):
+
+		return [test for test in tests if not test.astv or self.target == test.astv]
 
 class Install:
Index: tests/pybin/test_run.py
===================================================================
--- tests/pybin/test_run.py	(revision 99581ee3ebb93015c6498c2976cbb8fcb21c84b6)
+++ tests/pybin/test_run.py	(revision a2f2fda0a7a5501347525d2e999fe2d7d54e5fba)
@@ -11,7 +11,8 @@
 		self.path = ''
 		self.arch = ''
+		self.astv = ''
 
 	def toString(self):
-		return "{:25s} ({:5s} {:s})".format( self.name, self.arch if self.arch else "Any", self.target() )
+		return "{:25s} ({:5s} arch, {:s} ast: {:s})".format( self.name, self.arch if self.arch else "Any", self.astv if self.astv else "Any", self.target() )
 
 	def prepare(self):
@@ -20,5 +21,7 @@
 
 	def expect(self):
-		return os.path.normpath( os.path.join(settings.SRCDIR  , self.path, ".expect", "%s%s.txt" % (self.name,'' if not self.arch else ".%s" % self.arch)) )
+		arch = '' if not self.arch else ".%s" % self.arch
+		astv = '' if not self.astv else ".nast" if self.astv == "new" else ".oast"
+		return os.path.normpath( os.path.join(settings.SRCDIR  , self.path, ".expect", "%s%s%s.txt" % (self.name,astv,arch)) )
 
 	def error_log(self):
@@ -45,9 +48,10 @@
 
 	@staticmethod
-	def new_target(target, arch):
+	def new_target(target, arch, astv):
 		test = Test()
 		test.name = os.path.basename(target)
 		test.path = os.path.relpath (os.path.dirname(target), settings.SRCDIR)
 		test.arch = arch.target if arch else ''
+		test.astv = astv.target if astv else ''
 		return test
 
