[tor-commits] [stem/master] Drop test runner's is_ptraceable() method

atagar at torproject.org atagar at torproject.org
Mon May 22 18:30:29 UTC 2017


commit 1b7cb4ff2ba853ee5021d8d5eb137f5922a06431
Author: Damian Johnson <atagar at torproject.org>
Date:   Fri May 12 17:34:02 2017 -0700

    Drop test runner's is_ptraceable() method
    
    This method is effectively only used in one spot, and the caller can do this.
---
 test/integ/util/connection.py |  5 ++---
 test/runner.py                | 18 +-----------------
 test/util.py                  | 22 ++++++++++++++++++++--
 3 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/test/integ/util/connection.py b/test/integ/util/connection.py
index 63f62ff..f641a37 100644
--- a/test/integ/util/connection.py
+++ b/test/integ/util/connection.py
@@ -8,18 +8,17 @@ import unittest
 import test.runner
 
 from stem.util.connection import Resolver, get_connections, system_resolvers
+from test.util import require_ptrace
 
 
 class TestConnection(unittest.TestCase):
+  @require_ptrace
   def check_resolver(self, resolver):
     runner = test.runner.get_runner()
 
     if test.runner.Torrc.PORT not in runner.get_options():
       self.skipTest('(no control port)')
       return
-    elif not runner.is_ptraceable():
-      self.skipTest('(DisableDebuggerAttachment set)')
-      return
     elif resolver not in system_resolvers():
       self.skipTest('(resolver unavailable on this platform)')
       return
diff --git a/test/runner.py b/test/runner.py
index 4b4d29d..0f5a1d0 100644
--- a/test/runner.py
+++ b/test/runner.py
@@ -19,7 +19,6 @@ about the tor test instance they're running against.
     |- stop - stops our tor instance and cleans up any temporary files
     |- is_running - checks if our tor test instance is running
     |- is_accessible - checks if our tor instance can be connected to
-    |- is_ptraceable - checks if DisableDebuggerAttachment is set
     |- get_options - custom torrc options used for our test instance
     |- get_test_dir - testing directory path
     |- get_torrc_path - path to our tor instance's torrc
@@ -48,10 +47,9 @@ import stem.process
 import stem.socket
 import stem.util.conf
 import stem.util.enum
-import stem.version
 
 from test.output import println, STATUS, ERROR, SUBSTATUS, NO_NL
-from test.util import Target, STEM_BASE, tor_version
+from test.util import Target, STEM_BASE
 
 CONFIG = stem.util.conf.config_dict('test', {
   'integ.test_directory': './test/data',
@@ -312,20 +310,6 @@ class Runner(object):
 
     return Torrc.PORT in self._custom_opts or Torrc.SOCKET in self._custom_opts
 
-  def is_ptraceable(self):
-    """
-    Checks if tor's 'DisableDebuggerAttachment' option is set. This feature has
-    a lot of adverse side effects (:trac:`3313`).
-
-    :returns: True if debugger attachment is allowed, False otherwise
-    """
-
-    # If we're running a tor version where ptrace is disabled and we didn't
-    # set 'DisableDebuggerAttachment=1' then we can infer that it's disabled.
-
-    has_option = tor_version() >= stem.version.Requirement.TORRC_DISABLE_DEBUGGER_ATTACHMENT
-    return not has_option or Torrc.PTRACE in self.get_options()
-
   def get_options(self):
     """
     Provides the custom torrc options our tor instance is running with.
diff --git a/test/util.py b/test/util.py
index 7b6f312..99de3a6 100644
--- a/test/util.py
+++ b/test/util.py
@@ -303,6 +303,26 @@ def require_version(req_version):
   return require(lambda: tor_version() >= req_version, 'requires %s' % req_version)
 
 
+def require_ptrace(func):
+  """
+  Skips the test unless 'DisableDebuggerAttachment' is set. This feature has a
+  lot of adverse side effects (:trac:`3313`).
+  """
+
+  def wrapped(self, *args, **kwargs):
+    # If we're running a tor version where ptrace is disabled and we didn't
+    # set 'DisableDebuggerAttachment=1' then we can infer that it's disabled.
+
+    has_option = tor_version() >= stem.version.Requirement.TORRC_DISABLE_DEBUGGER_ATTACHMENT
+
+    if not has_option or test.runner.Torrc.PTRACE in test.runner.get_runner().get_options():
+      return func(self, *args, **kwargs)
+    else:
+      self.skipTest('(DisableDebuggerAttachment is set)')
+
+  return wrapped
+
+
 def require_online(func):
   """
   Skips the test if we weren't started with the ONLINE target, which indicates
@@ -636,5 +656,3 @@ class Task(object):
 
 
 import test.runner  # needs to be imported at the end to avoid a circular dependency
-
-require_ptrace = require(test.runner.get_runner().is_ptraceable, 'DisableDebuggerAttachment is set')





More information about the tor-commits mailing list