commit e427e6d7aff32d15ecf3d5ef3e0c78d2758deb24 Author: Damian Johnson atagar@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): """
tor-commits@lists.torproject.org