[tor-commits] [stem/master] Dropping get_system_tor_version() usage from tests

atagar at torproject.org atagar at torproject.org
Tue Jan 3 04:41:40 UTC 2012


commit 29652d978ce7465f288575061c819e77a7e67013
Author: Damian Johnson <atagar at torproject.org>
Date:   Mon Jan 2 16:42:14 2012 -0800

    Dropping get_system_tor_version() usage from tests
    
    At one point our integ tests was using the get_system_tor_version() function to
    determine our test instance's version. This is fine for now since we run
    against whatever tor binary is first in our path, but in the future tor devs
    will want to be able to select the binary so that won't work.
    
    Adding a test runner method for querying our version from tor instead.
---
 test/integ/socket/control_message.py |   13 ++++---------
 test/runner.py                       |   26 +++++++++++++++++++++++++-
 2 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/test/integ/socket/control_message.py b/test/integ/socket/control_message.py
index b939c87..90ac623 100644
--- a/test/integ/socket/control_message.py
+++ b/test/integ/socket/control_message.py
@@ -120,16 +120,12 @@ class TestControlMessage(unittest.TestCase):
     Parses the 'GETINFO config-text' response.
     """
     
+    runner = test.runner.get_runner()
     req_version = stem.version.Requirement.GETINFO_CONFIG_TEXT
+    our_version = runner.get_tor_version()
     
-    try:
-      if stem.version.get_system_tor_version() < req_version:
-        self.skipTest("(requires %s)" % req_version)
-    except IOError:
-      # This is a best-effot lookup to avoid showing a valid failure. If the
-      # version lookup fails then running the test.
-      
-      pass
+    if our_version and our_version < req_version:
+      self.skipTest("(requires %s)" % req_version)
     
     # We can't be certain of the order, and there may be extra config-text
     # entries as per...
@@ -137,7 +133,6 @@ class TestControlMessage(unittest.TestCase):
     #
     # so we'll just check that the response is a superset of our config
     
-    runner = test.runner.get_runner()
     torrc_contents = []
     
     for line in runner.get_torrc_contents().split("\n"):
diff --git a/test/runner.py b/test/runner.py
index ed92126..581f95a 100644
--- a/test/runner.py
+++ b/test/runner.py
@@ -15,7 +15,8 @@ Runner - Runtime context for our integration tests.
   |- get_torrc_contents - contents of our tor instance's torrc
   |- get_connection_type - method by which controllers can connect to tor
   |- get_pid - process id of our tor process
-  +- get_tor_socket - provides a socket to the tor instance
+  |- get_tor_socket - provides a socket to the tor instance
+  +- get_tor_version - provides the version of tor we're running against
 """
 
 import os
@@ -30,6 +31,7 @@ import threading
 
 import stem.socket
 import stem.process
+import stem.version
 import stem.util.conf
 import stem.util.enum
 import stem.util.term as term
@@ -365,6 +367,28 @@ class Runner:
     
     return control_socket
   
+  def get_tor_version(self):
+    """
+    Queries our test instance for tor's version.
+    
+    Returns:
+      stem.version.Version for our test instance, None if we're unable to
+      connect to it
+    """
+    
+    # TODO: replace with higher level functions when we've completed a basic
+    # controller class
+    
+    control_socket = self.get_tor_socket()
+    if not control_socket: return None
+    
+    control_socket.send("GETINFO version")
+    version_response = control_socket.recv()
+    control_socket.close()
+    
+    tor_version = list(version_response)[0][8:]
+    return stem.version.Version(tor_version)
+  
   def _get(self, attr):
     """
     Fetches one of our attributes in a thread safe manner, raising if we aren't





More information about the tor-commits mailing list