commit 276fb65ef4dbf0536be91e3fcb1912363d5ada73 Author: Damian Johnson atagar@torproject.org Date: Mon Sep 23 12:03:25 2013 -0700
Only report connection resolvers that are in our PATH
Having get_system_resolvers() check that resolvers are in our PATH before returning them. --- stem/util/connection.py | 4 ++++ test/unit/util/connection.py | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/stem/util/connection.py b/stem/util/connection.py index 4605a57..0b93130 100644 --- a/stem/util/connection.py +++ b/stem/util/connection.py @@ -249,6 +249,10 @@ def get_system_resolvers(system = None):
resolvers = [Resolver.NETSTAT, Resolver.SOCKSTAT, Resolver.LSOF, Resolver.SS]
+ # remove any that aren't in the user's PATH + + resolvers = filter(lambda r: stem.util.system.is_available(RESOLVER_COMMAND[r]), resolvers) + # proc resolution, by far, outperforms the others so defaults to this is able
if stem.util.proc.is_available(): diff --git a/test/unit/util/connection.py b/test/unit/util/connection.py index 03d83c1..1d9e6f6 100644 --- a/test/unit/util/connection.py +++ b/test/unit/util/connection.py @@ -88,12 +88,14 @@ BSD_PROCSTAT_OUTPUT = """\
class TestConnection(unittest.TestCase): + @patch('stem.util.system.is_available') @patch('stem.util.proc.is_available') - def test_get_system_resolvers(self, proc_mock): + def test_get_system_resolvers(self, proc_mock, is_available_mock): """ Checks the get_system_resolvers function. """
+ is_available_mock.return_value = True proc_mock.return_value = False
self.assertEqual([], stem.util.connection.get_system_resolvers('Windows')) @@ -110,6 +112,11 @@ class TestConnection(unittest.TestCase):
self.assertEqual(stem.util.connection.get_system_resolvers(platform.system()), stem.util.connection.get_system_resolvers())
+ # check that lacking commands in our PATH drops them from the results + + is_available_mock.return_value = False + self.assertEqual([Resolver.PROC], stem.util.connection.get_system_resolvers('Linux')) + @patch('stem.util.proc.get_connections') def test_get_connections_by_proc(self, proc_mock): """
tor-commits@lists.torproject.org