[tor-commits] [stem/master] Adding --test argument to selectively run tests

atagar at torproject.org atagar at torproject.org
Wed Jun 13 02:22:52 UTC 2012


commit 408dbe96e88767ca55688d196287e41c57345219
Author: Damian Johnson <atagar at torproject.org>
Date:   Tue Jun 12 09:58:08 2012 -0700

    Adding --test argument to selectively run tests
    
    Adding an argument that'll only run tests matching the given module prefix.
    This is to make it faster to write new tests (so we don't need to wait a minute
    for the full integ suite to run each time).
    
    Also adding examples to the '--help' output and rearranging the options so
    '--config' is at the end (it isn't especially useful and may be dropped in the
    future.
---
 run_tests.py       |   15 +++++++++++++--
 test/settings.cfg  |   13 ++++++++++++-
 test/testrc.sample |    1 +
 3 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/run_tests.py b/run_tests.py
index 3029094..cd7c688 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -50,13 +50,14 @@ import stem.util.enum
 import stem.util.log as log
 import stem.util.term as term
 
-OPT = "uic:l:t:h"
-OPT_EXPANDED = ["unit", "integ", "config=", "targets=", "log=", "tor=", "help"]
+OPT = "uit:l:c:h"
+OPT_EXPANDED = ["unit", "integ", "targets=", "test=", "log=", "tor=", "config=", "help"]
 DIVIDER = "=" * 70
 
 CONFIG = stem.util.conf.config_dict("test", {
   "argument.unit": False,
   "argument.integ": False,
+  "argument.test": "",
   "argument.log": None,
   "argument.tor": "tor",
   "argument.no_color": False,
@@ -168,6 +169,8 @@ def load_user_configuration(test_config):
         else:
           target_config = test_config.get("target.config", {}).get(target)
           if target_config: arg_overrides[target_config] = "true"
+    elif opt in ("-l", "--test"):
+      arg_overrides["argument.test"] = arg
     elif opt in ("-l", "--log"):
       arg_overrides["argument.log"] = arg.upper()
     elif opt in ("--tor"):
@@ -255,6 +258,10 @@ if __name__ == '__main__':
     error_tracker.set_category("UNIT TEST")
     
     for test_class in UNIT_TESTS:
+      if CONFIG["argument.test"] and \
+        not test_class.__module__.startswith(CONFIG["argument.test"]):
+        continue
+      
       test.output.print_divider(test_class.__module__)
       suite = unittest.TestLoader().loadTestsFromTestCase(test_class)
       test_results = StringIO.StringIO()
@@ -327,6 +334,10 @@ if __name__ == '__main__':
         print
         
         for test_class in INTEG_TESTS:
+          if CONFIG["argument.test"] and \
+            not test_class.__module__.startswith(CONFIG["argument.test"]):
+            continue
+          
           test.output.print_divider(test_class.__module__)
           suite = unittest.TestLoader().loadTestsFromTestCase(test_class)
           test_results = StringIO.StringIO()
diff --git a/test/settings.cfg b/test/settings.cfg
index 77156c5..44e28ab 100644
--- a/test/settings.cfg
+++ b/test/settings.cfg
@@ -12,13 +12,24 @@ msg.help
 |
 |  -u, --unit            runs unit tests
 |  -i, --integ           runs integration tests
-|  -c, --config PATH     path to a custom test configuration
 |  -t, --target TARGET   comma separated list of extra targets for integ tests
+|      --test TEST_NAME  only run tests modules matching the given name prefix
 |  -l, --log RUNLEVEL    includes logging output with test results, runlevels:
 |                          TRACE, DEBUG, INFO, NOTICE, WARN, ERROR
 |      --tor PATH        custom tor binary to run testing against
+|  -c, --config PATH     path to a custom test configuration
 |  -h, --help            presents this help
 |
+|  Examples:
+|   run_tests.py --unit --integ
+|     Run unit and integraiton tests.
+|
+|   run_tests.py --integ --target RUN_ALL
+|     Run integraion tests against all tor configurations.
+|
+|   run_tests.py --integ --test test.integ.util
+|     Only run integration tests for the util modules.
+|
 |  Integration targets:
 
  ##################
diff --git a/test/testrc.sample b/test/testrc.sample
index 165a8d8..444d7f2 100644
--- a/test/testrc.sample
+++ b/test/testrc.sample
@@ -33,6 +33,7 @@
 
 argument.unit false
 argument.integ false
+argument.test
 argument.log
 argument.tor tor
 argument.no_color false



More information about the tor-commits mailing list