[tor-commits] [ooni-probe/master] Fix bug in cmd_line_argument parsing when using test decks

art at torproject.org art at torproject.org
Sat Dec 8 17:46:11 UTC 2012


commit c0272e26d3baecc1a218c2374ded94414aa95bbe
Author: Arturo Filastò <art at fuffa.org>
Date:   Sat Dec 8 18:46:34 2012 +0100

    Fix bug in cmd_line_argument parsing when using test decks
    This solution to the problem is "quick and dirty" as it involves tight coupling
    between functions. Take note of the actual proper solution to this problem.
---
 ooni/runner.py |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/ooni/runner.py b/ooni/runner.py
index b451816..77d7e7d 100644
--- a/ooni/runner.py
+++ b/ooni/runner.py
@@ -26,7 +26,7 @@ from ooni.utils import log, checkForRoot, pushFilenameStack
 from ooni.utils import NotRootError, Storage
 from ooni.utils.net import randomFreePort
 
-def processTest(obj):
+def processTest(obj, cmd_line_options):
     """
     Process the parameters and :class:`twisted.python.usage.Options` of a
     :class:`ooni.nettest.Nettest`.
@@ -58,7 +58,7 @@ def processTest(obj):
 
     options = obj.usageOptions()
 
-    options.parseOptions(config.cmd_line_options['subargs'])
+    options.parseOptions(cmd_line_options['subargs'])
     obj.localOptions = options
 
     if obj.inputFile:
@@ -91,7 +91,7 @@ def isTestCase(obj):
     except TypeError:
         return False
 
-def findTestClassesFromFile(filename):
+def findTestClassesFromFile(cmd_line_options):
     """
     Takes as input the command line config parameters and returns the test
     case classes.
@@ -103,11 +103,12 @@ def findTestClassesFromFile(filename):
         A list of class objects found in a file or module given on the
         commandline.
     """
+    filename = cmd_line_options['test']
     classes = []
     module = filenameToModule(filename)
     for name, val in inspect.getmembers(module):
         if isTestCase(val):
-            classes.append(processTest(val))
+            classes.append(processTest(val, cmd_line_options))
     return classes
 
 def makeTestCases(klass, tests, method_prefix):
@@ -550,7 +551,10 @@ def loadTest(cmd_line_options):
     Takes care of parsing test command line arguments and loading their
     options.
     """
-    classes = findTestClassesFromFile(cmd_line_options['test'])
+    # XXX here there is too much strong coupling with cmd_line_options
+    # Ideally this would get all wrapped in a nice little class that get's
+    # instanced with it's cmd_line_options as an instance attribute
+    classes = findTestClassesFromFile(cmd_line_options)
     test_cases, options = loadTestsAndOptions(classes, cmd_line_options)
 
     return test_cases, options, cmd_line_options



More information about the tor-commits mailing list