[tor-commits] [stem/master] Fixes for prior version parsing fixes

atagar at torproject.org atagar at torproject.org
Fri Mar 30 15:21:29 UTC 2012


commit e427e6d7aff32d15ecf3d5ef3e0c78d2758deb24
Author: Damian Johnson <atagar at torproject.org>
Date:   Fri Mar 30 08:14:33 2012 -0700

    Fixes for prior version parsing fixes
    
    I never cease to be amazed at how error prone something that sounds as simple
    as 'parse the tor version' can be. Guess that's why we're writing a library...
    
    This has a couple fixes for the prior set of fixes.
    
    a. The runner was misparsing 'GETINFO version' output for verisons without a
       space.
    
    b. Sinister bug (took me almost an hour to track down) where the results from
       our mocked "tor --version" call were cached and broke later tests. This only
       manifested if your tor version wasn't 0.2.2.35 and you ran both the unit and
       integ tests together.
---
 test/runner.py       |    4 +++-
 test/unit/version.py |    8 ++++++++
 2 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/test/runner.py b/test/runner.py
index dcc7f9c..32c3872 100644
--- a/test/runner.py
+++ b/test/runner.py
@@ -409,7 +409,9 @@ class Runner:
       control_socket.close()
       
       tor_version = list(version_response)[0]
-      tor_version = tor_version[8:tor_version.find(' ', 8)]
+      tor_version = tor_version[8:]
+      if " " in tor_version: tor_version = tor_version.split(' ', 1)[0]
+      
       return stem.version.Version(tor_version)
     except TorInaccessable:
       return stem.version.get_system_tor_version(self.get_tor_command())
diff --git a/test/unit/version.py b/test/unit/version.py
index 4843321..2b5cf96 100644
--- a/test/unit/version.py
+++ b/test/unit/version.py
@@ -18,6 +18,12 @@ class TestVersion(unittest.TestCase):
     mocking.revert_mocking()
   
   def test_get_system_tor_version(self):
+    # Clear the version cache both before and after the test. Without this
+    # prior results short circuit the system call, and future calls will
+    # provide this mocked value.
+    
+    stem.version.VERSION_CACHE = {}
+    
     def _mock_call(command):
       if command == "tor --version":
         return TOR_VERSION_OUTPUT.splitlines()
@@ -27,6 +33,8 @@ class TestVersion(unittest.TestCase):
     mocking.mock(stem.util.system.call, _mock_call)
     version = stem.version.get_system_tor_version()
     self.assert_versions_match(version, 0, 2, 2, 35, None)
+    
+    stem.version.VERSION_CACHE = {}
   
   def test_parsing(self):
     """



More information about the tor-commits mailing list