[tor-commits] [stem/master] Sanity testing the that the tor command points to tor

atagar at torproject.org atagar at torproject.org
Fri Dec 21 16:07:25 UTC 2012


commit e22a753058a2b9c61301c62e2d2123ccea046f29
Author: Damian Johnson <atagar at torproject.org>
Date:   Fri Dec 21 08:02:10 2012 -0800

    Sanity testing the that the tor command points to tor
    
    Adding some basic sanity tests to launch_tor() so that we provide a better
    error message if our tor command is wrong. This is to address the following,
    which was admittedly really confusing error output...
    
    https://lists.torproject.org/pipermail/tor-dev/2012-December/004296.html
    
    Caught thanks to Simon.
---
 run_tests.py    |    5 -----
 stem/process.py |   12 ++++++++++++
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/run_tests.py b/run_tests.py
index d57765b..129c479 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -248,11 +248,6 @@ def load_user_configuration(test_config):
     print "'%s' isn't a logging runlevel, use one of the following instead:" % log_config
     print "  TRACE, DEBUG, INFO, NOTICE, WARN, ERROR"
     sys.exit(1)
-  
-  tor_config = CONFIG["argument.tor"]
-  if CONFIG["argument.integ"] and not os.path.exists(tor_config) and not stem.util.system.is_available(tor_config):
-    print "Unable to start tor, '%s' does not exists." % tor_config
-    sys.exit(1)
 
 def _clean_orphaned_pyc():
   test.output.print_noline("  checking for orphaned .pyc files... ", *test.runner.STATUS_ATTR)
diff --git a/stem/process.py b/stem/process.py
index aaa36ac..a27c68e 100644
--- a/stem/process.py
+++ b/stem/process.py
@@ -64,6 +64,18 @@ def launch_tor(tor_cmd = "tor", args = None, torrc_path = None, completion_perce
   if stem.util.system.is_windows():
     timeout = None
   
+  # sanity check that we got a tor binary
+  
+  if os.path.sep in tor_cmd:
+    # got a path (either relative or absolute), check what it leads to
+    
+    if os.path.isdir(tor_cmd):
+      raise OSError("'%s' is a directory, not the tor executable" % tor_cmd)
+    elif not os.path.isfile(tor_cmd):
+      raise OSError("'%s' doesn't exist" % tor_cmd)
+  elif not stem.util.system.is_available(tor_cmd):
+    raise OSError("'%s' isn't available on your system. Maybe it's not in your PATH?" % tor_cmd)
+  
   # double check that we have a torrc to work with
   if not torrc_path in (None, NO_TORRC) and not os.path.exists(torrc_path):
     raise OSError("torrc doesn't exist (%s)" % torrc_path)





More information about the tor-commits mailing list