[tor-commits] [chutney/master] Debug: when tor is missing, give instructions that actually work

teor at torproject.org teor at torproject.org
Tue Oct 30 11:30:02 UTC 2018


commit 4a87a0bb54c807522798535847ed0c9fa1a7df18
Author: teor <teor at torproject.org>
Date:   Tue Oct 23 13:29:21 2018 +1000

    Debug: when tor is missing, give instructions that actually work
    
    Also, exit with a failure exit status.
---
 lib/chutney/TorNet.py | 45 ++++++++++++++++++++-------------------------
 1 file changed, 20 insertions(+), 25 deletions(-)

diff --git a/lib/chutney/TorNet.py b/lib/chutney/TorNet.py
index 1814d2e..faa3d88 100644
--- a/lib/chutney/TorNet.py
+++ b/lib/chutney/TorNet.py
@@ -90,6 +90,16 @@ def get_new_absolute_nodes_path(now=time.time()):
         newdir = "%s.%d" % (newdirbase, i)
     return newdir
 
+def _warnMissingTor(tor_path, cmdline, tor_name="tor"):
+    """Log a warning that the binary tor_name can't be found at tor_path
+       while running cmdline.
+    """
+    print(("Cannot find the {} binary at '{}' for the command line '{}'. " +
+           "Set the TOR_DIR environment variable to the directory " +
+           "containing {}.")
+          .format(tor_name, tor_path, " ".join(cmdline), tor_name))
+
+
 class Node(object):
 
     """A Node represents a Tor node or a set of Tor nodes.  It's created
@@ -263,19 +273,6 @@ class LocalNodeBuilder(NodeBuilder):
         NodeBuilder.__init__(self, env)
         self._env = env
 
-    def _warnMissingTor(self, tor, cmdline,
-                        tor_name="tor", tor_env="CHUTNEY_TOR"):
-        """Log a warning that the binary tor can't be found while running
-           cmdline. Advise the user to put the path to tor_name in the tor_env
-           environmental variable.
-        """
-        print(("Cannot find the {} binary {} for the command line '{}'. " +
-               "Use the {} environment variable to set the path, " +
-               "or put the binary into $PATH: '{}'. " +
-               "If your $PATH contains ~, use $HOME instead.")
-              .format(tor_name, tor, " ".join(cmdline),
-                      tor_env, os.getenv("PATH")))
-
     def _createTorrcFile(self, checkOnly=False):
         """Write the torrc file for this node, disabling any options
            that are not supported by env's tor binary using comments.
@@ -303,8 +300,8 @@ class LocalNodeBuilder(NodeBuilder):
             except OSError as e:
                 # only catch file not found error
                 if e.errno == errno.ENOENT:
-                    self._warnMissingTor(tor, cmdline)
-                    sys.exit(0)
+                    _warnMissingTor(tor, cmdline)
+                    sys.exit(1)
                 else:
                     raise
             # check we received a list of options, and nothing else
@@ -427,10 +424,10 @@ class LocalNodeBuilder(NodeBuilder):
         except OSError as e:
             # only catch file not found error
             if e.errno == errno.ENOENT:
-                self._warnMissingTor(tor_gencert, cmdline,
-                                     tor_name="tor-gencert",
-                                     tor_env="CHUTNEY_TOR_GENCERT")
-                sys.exit(0)
+                _warnMissingTor(tor_gencert, cmdline,
+                                tor_name="tor-gencert",
+                                tor_env="CHUTNEY_TOR_GENCERT")
+                sys.exit(1)
             else:
                 raise
         p.communicate(passphrase + "\n")
@@ -457,8 +454,8 @@ class LocalNodeBuilder(NodeBuilder):
         except OSError as e:
             # only catch file not found error
             if e.errno == errno.ENOENT:
-                self._warnMissingTor(tor, cmdline)
-                sys.exit(0)
+                _warnMissingTor(tor, cmdline)
+                sys.exit(1)
             else:
                 raise
         stdout, stderr = p.communicate()
@@ -628,10 +625,8 @@ class LocalNodeController(NodeController):
         except OSError as e:
             # only catch file not found error
             if e.errno == errno.ENOENT:
-                print("Cannot find tor binary %r. Use CHUTNEY_TOR "
-                      "environment variable to set the path, or put the "
-                      "binary into $PATH." % tor_path)
-                sys.exit(0)
+                _warnMissingTor(tor_path, cmdline):
+                sys.exit(1)
             else:
                 raise
         if self.waitOnLaunch():





More information about the tor-commits mailing list