[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [stem/master] Avoid KeyError in stem.util.system.is_available() when path unset
commit f9a7ad4d332e4b61c02b4771e367c65d65bf4a1a
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date: Tue May 23 14:21:01 2017 -0700
Avoid KeyError in stem.util.system.is_available() when path unset
catalyst ran into testing errors where we made assertions that didn't hold for
his system...
https://trac.torproject.org/projects/tor/ticket/22301
First gotcha I'm noticing is that is_available() raises an unexpected KeyError
when we don't have a PATH environment variable...
======================================================================
ERROR: test_is_available
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/atagar/Desktop/stem/test/integ/util/system.py", line 82, in test_is_available
self.assertTrue(stem.util.system.is_available('ls'))
File "/home/atagar/Desktop/stem/stem/util/system.py", line 251, in is_available
cmd_exists = distutils.spawn.find_executable(command) is not None
File "/usr/lib/python2.7/distutils/spawn.py", line 184, in find_executable
path = os.environ['PATH']
File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
raise KeyError(key)
KeyError: 'PATH'
---
stem/util/system.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/stem/util/system.py b/stem/util/system.py
index 4b705f3..7b31516 100644
--- a/stem/util/system.py
+++ b/stem/util/system.py
@@ -247,6 +247,8 @@ def is_available(command, cached=True):
return True
elif cached and command in CMD_AVAILABLE_CACHE:
return CMD_AVAILABLE_CACHE[command]
+ elif 'PATH' not in os.environ:
+ return False # lacking a path will cause find_executable() to internally fail
else:
cmd_exists = distutils.spawn.find_executable(command) is not None
CMD_AVAILABLE_CACHE[command] = cmd_exists
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits