diff options
-rw-r--r-- | utils/lit/LitConfig.py | 22 | ||||
-rw-r--r-- | utils/lit/TestRunner.py | 6 |
2 files changed, 26 insertions, 2 deletions
diff --git a/utils/lit/LitConfig.py b/utils/lit/LitConfig.py index 4fb0ccc093..c334109e1d 100644 --- a/utils/lit/LitConfig.py +++ b/utils/lit/LitConfig.py @@ -29,6 +29,7 @@ class LitConfig: self.noExecute = noExecute self.debug = debug self.isWindows = bool(isWindows) + self.bashPath = None self.numErrors = 0 self.numWarnings = 0 @@ -41,6 +42,27 @@ class LitConfig: mustExist = True, config = config) + def getBashPath(self): + """getBashPath - Get the path to 'bash'""" + import os, Util + + if self.bashPath is not None: + return self.bashPath + + self.bashPath = Util.which('bash', os.pathsep.join(self.path)) + if self.bashPath is None: + # Check some known paths. + for path in ('/bin/bash', '/usr/bin/bash'): + if os.path.exists(path): + self.bashPath = path + break + + if self.bashPath is None: + self.warning("Unable to find 'bash', running Tcl tests internally.") + self.bashPath = '' + + return self.bashPath + def _write_message(self, kind, message): import inspect, os, sys diff --git a/utils/lit/TestRunner.py b/utils/lit/TestRunner.py index 7b549ac1c6..34e828bf96 100644 --- a/utils/lit/TestRunner.py +++ b/utils/lit/TestRunner.py @@ -237,7 +237,9 @@ def executeTclScriptInternal(test, litConfig, tmpBase, commands, cwd): for c in cmds[1:]: cmd = ShUtil.Seq(cmd, '&&', c) - if litConfig.useTclAsSh: + # FIXME: This is lame, we shouldn't need bash. See PR5240. + bashPath = litConfig.getBashPath() + if litConfig.useTclAsSh and bashPath: script = tmpBase + '.script' # Write script file @@ -252,7 +254,7 @@ def executeTclScriptInternal(test, litConfig, tmpBase, commands, cwd): print >>sys.stdout return '', '', 0 - command = ['/bin/bash', script] + command = [litConfig.getBashPath(), script] out,err,exitCode = executeCommand(command, cwd=cwd, env=test.config.environment) |