[tor-commits] [stem/master] Skip running async tests under python 2.6

atagar at torproject.org atagar at torproject.org
Fri Oct 27 17:11:22 UTC 2017


commit 70b49df22b11f9dfc18e939413d9e847996c1f11
Author: Damian Johnson <atagar at torproject.org>
Date:   Fri Oct 27 09:20:43 2017 -0700

    Skip running async tests under python 2.6
    
    Turns out importlib was added in python 2.7...
    
      Traceback (most recent call last):
        File "./run_tests.py", line 9, in <module>
          import importlib
      ImportError: No module named importlib
    
    This means we're losing quite a bit of test coverage under python 2.6 but...
    screw it. Guido rolled his eyes when I mentioned we even offered 2.6 support.
    It's been dead a long time.
    
    We'll continue to support python 2.6 until stem 2.0, but not gonna bend over
    backwards for it. This change will let us invoke our tests again.
---
 run_tests.py            | 11 +++++++++--
 stem/util/test_tools.py |  6 ++++++
 test/integ/process.py   |  2 +-
 test/task.py            | 14 ++++++++++++--
 4 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/run_tests.py b/run_tests.py
index e2bc19ad..fe4a908f 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -6,7 +6,6 @@
 Runs unit and integration tests. For usage information run this with '--help'.
 """
 
-import importlib
 import os
 import sys
 import threading
@@ -15,6 +14,14 @@ import traceback
 import unittest
 
 try:
+  # TODO: added in python 2.7, drop check when removing 2.6 support
+
+  import importlib
+  RUN_ASYNC_TESTS = true
+except ImportError:
+  RUN_ASYNC_TESTS = False
+
+try:
   from StringIO import StringIO
 except ImportError:
   from io import StringIO
@@ -194,7 +201,7 @@ def main():
     async_args = test.AsyncTestArgs(default_test_dir, args.tor_path)
 
     for module_str in stem.util.test_tools.ASYNC_TESTS:
-      if not args.specific_test or module_str.startswith(args.specific_test):
+      if RUN_ASYNC_TESTS and (not args.specific_test or module_str.startswith(args.specific_test)):
         module = importlib.import_module(module_str.rsplit('.', 1)[0])
         test_classes = [v for k, v in module.__dict__.items() if k.startswith('Test')]
 
diff --git a/stem/util/test_tools.py b/stem/util/test_tools.py
index d12ccf82..62ca1577 100644
--- a/stem/util/test_tools.py
+++ b/stem/util/test_tools.py
@@ -158,6 +158,9 @@ class AsyncTest(object):
     self._status = AsyncStatus.PENDING
 
   def run(self, *runner_args, **kwargs):
+    if stem.prereq._is_python_26():
+      return  # not supported under python 2.6
+
     def _wrapper(conn, runner, args):
       os.nice(12)
 
@@ -199,6 +202,9 @@ class AsyncTest(object):
     self.result(None)
 
   def result(self, test):
+    if stem.prereq._is_python_26():
+      return  # not supported under python 2.6
+
     with self._process_lock:
       if self._status == AsyncStatus.PENDING:
         self.run()
diff --git a/test/integ/process.py b/test/integ/process.py
index 72cba38b..1c8035b5 100644
--- a/test/integ/process.py
+++ b/test/integ/process.py
@@ -45,7 +45,7 @@ PublishServerDescriptor 0
 DataDirectory %s
 """
 
-TOR_CMD = None
+TOR_CMD = 'tor'
 
 
 def random_port():
diff --git a/test/task.py b/test/task.py
index 53606a19..2af92875 100644
--- a/test/task.py
+++ b/test/task.py
@@ -22,7 +22,6 @@
   +- PYCODESTYLE_TASK - style checks
 """
 
-import importlib
 import os
 import re
 import sys
@@ -39,6 +38,14 @@ import test.output
 
 from test.output import STATUS, ERROR, NO_NL, println
 
+try:
+  # TODO: remove check when dropping python 2.6 support
+
+  import importlib
+  HAS_IMPORTLIB = True
+except ImportError:
+  HAS_IMPORTLIB = False
+
 CONFIG = stem.util.conf.config_dict('test', {
   'integ.test_directory': './test/data',
   'test.unit_tests': '',
@@ -81,6 +88,9 @@ def _import_tests():
   register if they're asynchronous.
   """
 
+  if not HAS_IMPORTLIB:
+    return
+
   for module in (CONFIG['test.unit_tests'].splitlines() + CONFIG['test.integ_tests'].splitlines()):
     importlib.import_module(module.rsplit('.', 1)[0])
 
@@ -217,7 +227,7 @@ class ModuleVersion(Task):
     def version_check():
       if prereq_check is None or prereq_check():
         for module in modules:
-          if stem.util.test_tools._module_exists(module):
+          if HAS_IMPORTLIB and stem.util.test_tools._module_exists(module):
             return importlib.import_module(module).__version__
 
       return 'missing'





More information about the tor-commits mailing list