aboutsummaryrefslogtreecommitdiffstats
path: root/test/gtest_test_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/gtest_test_utils.py')
-rwxr-xr-xtest/gtest_test_utils.py38
1 files changed, 35 insertions, 3 deletions
diff --git a/test/gtest_test_utils.py b/test/gtest_test_utils.py
index 8f55b075..7dc8c421 100755
--- a/test/gtest_test_utils.py
+++ b/test/gtest_test_utils.py
@@ -44,10 +44,10 @@ except:
import popen2
_SUBPROCESS_MODULE_AVAILABLE = False
+IS_WINDOWS = os.name == 'nt'
-# Initially maps a flag to its default value. After
-# _ParseAndStripGTestFlags() is called, maps a flag to its actual
-# value.
+# Initially maps a flag to its default value. After
+# _ParseAndStripGTestFlags() is called, maps a flag to its actual value.
_flag_map = {'gtest_source_dir': os.path.dirname(sys.argv[0]),
'gtest_build_dir': os.path.dirname(sys.argv[0])}
_gtest_flags_are_parsed = False
@@ -103,6 +103,38 @@ def GetBuildDir():
return os.path.abspath(GetFlag('gtest_build_dir'))
+def GetTestExecutablePath(executable_name):
+ """Returns the absolute path of the test binary given its name.
+
+ The function will print a message and abort the program if the resulting file
+ doesn't exist.
+
+ Args:
+ executable_name: name of the test binary that the test script runs.
+
+ Returns:
+ The absolute path of the test binary.
+ """
+
+ path = os.path.abspath(os.path.join(GetBuildDir(), executable_name))
+ if IS_WINDOWS and not path.endswith('.exe'):
+ path += '.exe'
+
+ if not os.path.exists(path):
+ message = (
+ 'Unable to find the test binary. Please make sure to provide path\n'
+ 'to the binary via the --gtest_build_dir flag or the GTEST_BUILD_DIR\n'
+ 'environment variable. For convenient use, invoke this script via\n'
+ 'mk_test.py.\n'
+ # TODO(vladl@google.com): change mk_test.py to test.py after renaming
+ # the file.
+ 'Please run mk_test.py -h for help.')
+ print >> sys.stderr, message
+ sys.exit(1)
+
+ return path
+
+
def GetExitStatus(exit_code):
"""Returns the argument to exit(), or -1 if exit() wasn't called.