[tor-commits] [stem/master] Dropping the argument.* config options

atagar at torproject.org atagar at torproject.org
Sun Apr 14 04:33:47 UTC 2013


commit d46ecdfafd6883ac39bf24841af988d45d2fd64e
Author: Damian Johnson <atagar at torproject.org>
Date:   Thu Apr 11 09:28:18 2013 -0700

    Dropping the argument.* config options
    
    Global state is icky, and in essence all stem.util.conf usage is global state.
    As mentioned in earlier commits the argument.* options were never used. Happily
    they were only consumed within run_tests.py so narrowing their scope is
    trivial.
---
 run_tests.py      |   81 +++++++++++++++++++++++++++--------------------------
 test/settings.cfg |   20 +------------
 2 files changed, 43 insertions(+), 58 deletions(-)

diff --git a/run_tests.py b/run_tests.py
index 45c3e00..ca43539 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -30,14 +30,6 @@ OPT_EXPANDED = ["all", "unit", "integ", "style", "python3", "clean", "targets=",
 DIVIDER = "=" * 70
 
 CONFIG = stem.util.conf.config_dict("test", {
-  "argument.unit": False,
-  "argument.integ": False,
-  "argument.style": False,
-  "argument.python3": False,
-  "argument.python3_clean": False,
-  "argument.test": "",
-  "argument.log": None,
-  "argument.tor": "tor",
   "msg.help": "",
   "target.config": {},
   "target.description": {},
@@ -96,7 +88,7 @@ def _clean_orphaned_pyc():
       os.remove(pyc_file)
 
 
-def _python3_setup(python3_destination):
+def _python3_setup(python3_destination, clean):
   # Python 2.7.3 added some nice capabilities to 2to3, like '--output-dir'...
   #
   #   http://docs.python.org/2/library/2to3.html
@@ -106,7 +98,7 @@ def _python3_setup(python3_destination):
 
   test.output.print_divider("EXPORTING TO PYTHON 3", True)
 
-  if CONFIG["argument.python3_clean"]:
+  if clean:
     shutil.rmtree(python3_destination, ignore_errors = True)
 
   if os.path.exists(python3_destination):
@@ -144,7 +136,7 @@ def _python3_setup(python3_destination):
   return True
 
 
-def _print_style_issues():
+def _print_style_issues(run_unit, run_integ, run_style):
   base_path = os.path.sep.join(__file__.split(os.path.sep)[:-1]).lstrip("./")
   style_issues = test.static_checks.get_issues(os.path.join(base_path, "stem"))
   style_issues.update(test.static_checks.get_issues(os.path.join(base_path, "test")))
@@ -154,7 +146,7 @@ def _print_style_issues():
   # available then use it. Its static checks are pretty quick so there's not
   # much overhead in including it with all tests.
 
-  if CONFIG["argument.unit"] or CONFIG["argument.integ"]:
+  if run_unit or run_integ:
     if system.is_available("pyflakes"):
       style_issues.update(test.static_checks.pyflakes_issues(os.path.join(base_path, "stem")))
       style_issues.update(test.static_checks.pyflakes_issues(os.path.join(base_path, "test")))
@@ -162,7 +154,7 @@ def _print_style_issues():
     else:
       test.output.print_line("Static error checking requires pyflakes. Please install it from ...\n  http://pypi.python.org/pypi/pyflakes\n", *ERROR_ATTR)
 
-  if CONFIG["argument.style"]:
+  if run_style:
     if system.is_available("pep8"):
       style_issues.update(test.static_checks.pep8_issues(os.path.join(base_path, "stem")))
       style_issues.update(test.static_checks.pep8_issues(os.path.join(base_path, "test")))
@@ -212,21 +204,31 @@ if __name__ == '__main__':
     print "%s (for usage provide --help)" % exc
     sys.exit(1)
 
+  run_unit = False
+  run_integ = False
+  run_style = False
+  run_python3 = False
+  run_python3_clean = False
+
+  test_prefix = None
+  logging_runlevel = None
+  tor_path = "tor"
+
   for opt, arg in opts:
     if opt in ("-a", "--all"):
-      test_config.set("argument.unit", "true")
-      test_config.set("argument.integ", "true")
-      test_config.set("argument.style", "true")
+      run_unit = True
+      run_integ = True
+      run_style = True
     elif opt in ("-u", "--unit"):
-      test_config.set("argument.unit", "true")
+      run_unit = True
     elif opt in ("-i", "--integ"):
-      test_config.set("argument.integ", "true")
+      run_integ = True
     elif opt in ("-s", "--style"):
-      test_config.set("argument.style", "true")
+      run_style = True
     elif opt == "--python3":
-      test_config.set("argument.python3", "true")
+      run_python3 = True
     elif opt == "--clean":
-      test_config.set("argument.python3_clean", "true")
+      run_python3_clean = True
     elif opt in ("-t", "--targets"):
       integ_targets = arg.split(",")
 
@@ -245,11 +247,11 @@ if __name__ == '__main__':
           if target_config:
             test_config.set(target_config, "true")
     elif opt in ("-l", "--test"):
-      test_config.set("argument.test", arg)
+      test_prefix = arg
     elif opt in ("-l", "--log"):
-      test_config.set("argument.log", arg.upper())
+      logging_runlevel = arg.upper()
     elif opt in ("--tor"):
-      test_config.set("argument.tor", arg)
+      tor_path = arg
     elif opt in ("-h", "--help"):
       # Prints usage information and quits. This includes a listing of the
       # valid integration targets.
@@ -269,35 +271,34 @@ if __name__ == '__main__':
 
   # basic validation on user input
 
-  log_config = CONFIG["argument.log"]
-  if log_config and not log_config in log.LOG_VALUES:
-    print "'%s' isn't a logging runlevel, use one of the following instead:" % log_config
+  if logging_runlevel and not logging_runlevel in log.LOG_VALUES:
+    print "'%s' isn't a logging runlevel, use one of the following instead:" % logging_runlevel
     print "  TRACE, DEBUG, INFO, NOTICE, WARN, ERROR"
     sys.exit(1)
 
   # check that we have 2to3 and python3 available in our PATH
-  if CONFIG["argument.python3"]:
+  if run_python3:
     for required_cmd in ("2to3", "python3"):
       if not system.is_available(required_cmd):
         test.output.print_line("Unable to test python 3 because %s isn't in your path" % required_cmd, *test.runner.ERROR_ATTR)
         sys.exit(1)
 
-  if CONFIG["argument.python3"] and sys.version_info[0] != 3:
+  if run_python3 and sys.version_info[0] != 3:
     python3_destination = os.path.join(CONFIG["integ.test_directory"], "python3")
 
-    if _python3_setup(python3_destination):
+    if _python3_setup(python3_destination, run_python3_clean):
       python3_runner = os.path.join(python3_destination, "run_tests.py")
       exit_status = os.system("python3 %s %s" % (python3_runner, " ".join(sys.argv[1:])))
       sys.exit(exit_status)
     else:
       sys.exit(1)  # failed to do python3 setup
 
-  if not CONFIG["argument.unit"] and not CONFIG["argument.integ"] and not CONFIG["argument.style"]:
+  if not run_unit and not run_integ and not run_style:
     test.output.print_line("Nothing to run (for usage provide --help)\n")
     sys.exit()
 
   # if we have verbose logging then provide the testing config
-  our_level = stem.util.log.logging_level(CONFIG["argument.log"])
+  our_level = stem.util.log.logging_level(logging_runlevel)
   info_level = stem.util.log.logging_level(stem.util.log.INFO)
 
   if our_level <= info_level:
@@ -312,7 +313,7 @@ if __name__ == '__main__':
   )
 
   stem_logger = log.get_logger()
-  logging_buffer = log.LogBuffer(CONFIG["argument.log"])
+  logging_buffer = log.LogBuffer(logging_runlevel)
   stem_logger.addHandler(logging_buffer)
 
   test.output.print_divider("INITIALISING", True)
@@ -322,11 +323,11 @@ if __name__ == '__main__':
 
   print
 
-  if CONFIG["argument.unit"]:
+  if run_unit:
     test.output.print_divider("UNIT TESTS", True)
     error_tracker.set_category("UNIT TEST")
 
-    for test_class in test.runner.get_unit_tests(CONFIG["argument.test"]):
+    for test_class in test.runner.get_unit_tests(test_prefix):
       test.output.print_divider(test_class.__module__)
       suite = unittest.TestLoader().loadTestsFromTestCase(test_class)
       test_results = StringIO.StringIO()
@@ -341,7 +342,7 @@ if __name__ == '__main__':
 
     print
 
-  if CONFIG["argument.integ"]:
+  if run_integ:
     test.output.print_divider("INTEGRATION TESTS", True)
     integ_runner = test.runner.get_runner()
 
@@ -375,7 +376,7 @@ if __name__ == '__main__':
       if target_prereq:
         # lazy loaded to skip system call if we don't have any prereqs
         if not our_version:
-          our_version = stem.version.get_system_tor_version(CONFIG["argument.tor"])
+          our_version = stem.version.get_system_tor_version(tor_path)
 
         if our_version < stem.version.Requirement[target_prereq]:
           skip_targets.append(target)
@@ -401,12 +402,12 @@ if __name__ == '__main__':
               test.output.print_line("'%s' isn't a test.runner.Torrc enumeration" % opt)
               sys.exit(1)
 
-        integ_runner.start(CONFIG["argument.tor"], extra_torrc_opts = torrc_opts)
+        integ_runner.start(tor_path, extra_torrc_opts = torrc_opts)
 
         test.output.print_line("Running tests...", term.Color.BLUE, term.Attr.BOLD)
         print
 
-        for test_class in test.runner.get_integ_tests(CONFIG["argument.test"]):
+        for test_class in test.runner.get_integ_tests(test_prefix):
           test.output.print_divider(test_class.__module__)
           suite = unittest.TestLoader().loadTestsFromTestCase(test_class)
           test_results = StringIO.StringIO()
@@ -452,7 +453,7 @@ if __name__ == '__main__':
     # TODO: note unused config options afterward?
 
   if not stem.prereq.is_python_3():
-    _print_style_issues()
+    _print_style_issues(run_unit, run_integ, run_style)
 
   runtime = time.time() - start_time
 
diff --git a/test/settings.cfg b/test/settings.cfg
index 372ce33..81bb567 100644
--- a/test/settings.cfg
+++ b/test/settings.cfg
@@ -1,16 +1,7 @@
 # Testing Configuration
 #
-# The following are configurations used by stem's testing framework. You can
-# overwrite any of these my making your own configuratino file and using the
-# '--config' option of run_tests.py...
-#
-#   run_tests.py --config my_testrc --unit
-#
-# The commonly customized options are...
-#
-# argument.*
-#   Default test runner arguments. You can set these to always run with
-#   particular arguments.
+# The following contains customizable configuration information for stem's
+# testing framework.
 #
 # integ.test_directory
 #   Path used for our data directory and any temporary test resources. Relative
@@ -36,13 +27,6 @@
 #   authentication configurations. If the 'all' option is set then the other
 #   flags are ignored.
 
-argument.unit false
-argument.integ false
-argument.style false
-argument.test
-argument.log
-argument.tor tor
-
 integ.test_directory ./test/data
 integ.log ./test/data/log
 





More information about the tor-commits mailing list