[tor-commits] [stem/master] Helper for getting torrc of a target

atagar at torproject.org atagar at torproject.org
Thu Apr 25 03:16:32 UTC 2013


commit c7ed4c84b30c8555ba8e2e63c158b74876d08db2
Author: Damian Johnson <atagar at torproject.org>
Date:   Wed Apr 24 09:27:07 2013 -0700

    Helper for getting torrc of a target
    
    Breaking a chunk of run_tests.py into a get_torrc_entries() helper function to
    improve readability. The runner could use an overhaul, and might later take on
    this functionality.
---
 run_tests.py |   21 ++++++---------------
 test/util.py |   31 +++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+), 15 deletions(-)

diff --git a/run_tests.py b/run_tests.py
index 17c9145..41fa2b3 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -181,21 +181,7 @@ def main():
       error_tracker.set_category(target)
 
       try:
-        # converts the 'target.torrc' csv into a list of test.runner.Torrc enums
-        config_csv = CONFIG["target.torrc"].get(target)
-        torrc_opts = []
-
-        if config_csv:
-          for opt in config_csv.split(','):
-            opt = opt.strip()
-
-            if opt in test.runner.Torrc.keys():
-              torrc_opts.append(test.runner.Torrc[opt])
-            else:
-              println("'%s' isn't a test.runner.Torrc enumeration" % opt)
-              sys.exit(1)
-
-        integ_runner.start(target, args.attribute_targets, args.tor_path, extra_torrc_opts = torrc_opts)
+        integ_runner.start(target, args.attribute_targets, args.tor_path, extra_torrc_opts = test.util.get_torrc_entries(target))
 
         println("Running tests...\n", STATUS)
 
@@ -219,6 +205,11 @@ def main():
       except KeyboardInterrupt:
         println("  aborted starting tor: keyboard interrupt\n", ERROR)
         break
+      except ValueError, exc:
+        # can arise if get_torrc_entries() runs into a bad settings.cfg data
+
+        println(exc, ERROR)
+        break
       except OSError:
         error_tracker.register_error()
       finally:
diff --git a/test/util.py b/test/util.py
index 12effd0..309851b 100644
--- a/test/util.py
+++ b/test/util.py
@@ -10,6 +10,7 @@ Helper functions for our test framework.
   get_integ_tests - provides our integration tests
 
   get_prereq - provides the tor version required to run the given target
+  get_torrc_entries - provides the torrc entries for a given target
   get_help_message - provides usage information for running our tests
   get_python3_destination - location where a python3 copy of stem is exported to
   get_stylistic_issues - checks for PEP8 and other stylistic issues
@@ -56,6 +57,7 @@ CONFIG = stem.util.conf.config_dict("test", {
   "msg.help": "",
   "target.description": {},
   "target.prereq": {},
+  "target.torrc": {},
   "pep8.ignore": [],
   "pyflakes.ignore": [],
   "integ.test_directory": "./test/data",
@@ -174,6 +176,35 @@ def get_prereq(target):
     return None
 
 
+def get_torrc_entries(target):
+  """
+  Provides the torrc entries used to run the given target.
+
+  :param Target target: target to provide the custom torrc contents of
+
+  :returns: list of :class:`~test.runner.Torrc` entries for the given target
+
+  :raises: **ValueError** if the target.torrc config has entries that don't map
+    to test.runner.Torrc
+  """
+
+  # converts the 'target.torrc' csv into a list of test.runner.Torrc enums
+
+  config_csv = CONFIG["target.torrc"].get(target)
+  torrc_opts = []
+
+  if config_csv:
+    for opt in config_csv.split(','):
+      opt = opt.strip()
+
+      if opt in test.runner.Torrc.keys():
+        torrc_opts.append(test.runner.Torrc[opt])
+      else:
+        raise ValueError("'%s' isn't a test.runner.Torrc enumeration" % opt)
+
+  return torrc_opts
+
+
 def get_python3_destination():
   """
   Provides the location where a python 3 copy of stem is exported to for





More information about the tor-commits mailing list