commit 4a87a0bb54c807522798535847ed0c9fa1a7df18 Author: teor teor@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():
tor-commits@lists.torproject.org