=== modified file 'tests/runtests.py'
--- tests/runtests.py	2007-05-20 03:51:21 +0000
+++ tests/runtests.py	2007-06-02 04:35:52 +0000
@@ -103,13 +103,27 @@
 
     # Load all the test model apps.
     test_models = []
+    if not tests_to_run or '.*' in tests_to_run:
+        desired_test = lambda x:True
+    else:
+        tests_filter = tests_to_run[:]
+        for idx, x in enumerate(tests_filter):
+            if x.endswith(".*"):
+                x = x.rstrip(".*")
+            tests_filter[idx] = x + "."
+        def desired_test(name):
+            name += '.'
+            if name in tests_filter:
+                return True
+            return bool([x for x in tests_filter if name.startswith(x)])
+
     for model_dir, model_name in get_test_models():
         model_label = '.'.join([model_dir, model_name])
         try:
             # if the model was named on the command line, or
             # no models were named (i.e., run all), import
             # this model and add it to the list to test.
-            if not tests_to_run or model_name in tests_to_run:
+            if desired_test(model_label):
                 if verbosity >= 1:
                     print "Importing model %s" % model_name
                 mod = load_app(model_label)
@@ -125,7 +139,7 @@
     extra_tests = []
     for model_dir, model_name in get_invalid_models():
         model_label = '.'.join([model_dir, model_name])
-        if not tests_to_run or model_name in tests_to_run:
+        if desired_test(model_label):
             extra_tests.append(InvalidModelTestCase(model_label))
 
     # Run the test suite, including the extra validation tests.
@@ -144,7 +158,7 @@
 
 if __name__ == "__main__":
     from optparse import OptionParser
-    usage = "%prog [options] [model model model ...]"
+    usage = "%prog [options] [ [ modeltests.model1 modeltests.model2 ...] || modeltests.* ] [ [ regressiontests.regression1 regresiontests.regresion2 ...] || regresiontests.* ]"
     parser = OptionParser(usage=usage)
     parser.add_option('-v','--verbosity', action='store', dest='verbosity', default='0',
         type='choice', choices=['0', '1', '2'],

