summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-04-30 04:30:41 +0000
committerReid Kleckner <reid@kleckner.net>2013-04-30 04:30:41 +0000
commit2a839438559bc7d3067ff2166105f47e0af06b37 (patch)
tree99dcb8af53d73da205ed03197b69494e7c0076fe
parent8e6e02a41bd21f8e919e812dbd7aa9ed5474bdbf (diff)
downloadllvm-2a839438559bc7d3067ff2166105f47e0af06b37.tar.gz
llvm-2a839438559bc7d3067ff2166105f47e0af06b37.tar.bz2
llvm-2a839438559bc7d3067ff2166105f47e0af06b37.tar.xz
Try to fix ProgramTest on FreeBSD
This seemed like the cleanest way to find the test executable. Also fix the file mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180770 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--[-rwxr-xr-x]unittests/Support/ProgramTest.cpp7
-rw-r--r--utils/unittest/UnitTestMain/TestMain.cpp5
2 files changed, 9 insertions, 3 deletions
diff --git a/unittests/Support/ProgramTest.cpp b/unittests/Support/ProgramTest.cpp
index 279e2e8d0f..6cbb05454f 100755..100644
--- a/unittests/Support/ProgramTest.cpp
+++ b/unittests/Support/ProgramTest.cpp
@@ -20,6 +20,9 @@
extern char **environ;
#endif
+// From TestMain.cpp.
+extern const char *TestMainArgv0;
+
namespace {
using namespace llvm;
@@ -52,9 +55,7 @@ TEST(ProgramTest, CreateProcessTrailingSlash) {
exit(1);
}
- // FIXME: Hardcoding argv0 here since I don't know a good cross-platform way
- // to get it. Maybe ParseCommandLineOptions() should save it?
- Path my_exe = Path::GetMainExecutable("SupportTests", &ProgramTestStringArg1);
+ Path my_exe = Path::GetMainExecutable(TestMainArgv0, &ProgramTestStringArg1);
const char *argv[] = {
my_exe.c_str(),
"--gtest_filter=ProgramTest.CreateProcessTrailingSlashChild",
diff --git a/utils/unittest/UnitTestMain/TestMain.cpp b/utils/unittest/UnitTestMain/TestMain.cpp
index ce32b7380f..5387512e6f 100644
--- a/utils/unittest/UnitTestMain/TestMain.cpp
+++ b/utils/unittest/UnitTestMain/TestMain.cpp
@@ -20,11 +20,16 @@
# endif
#endif
+const char *TestMainArgv0;
+
int main(int argc, char **argv) {
llvm::sys::PrintStackTraceOnErrorSignal();
testing::InitGoogleTest(&argc, argv);
llvm::cl::ParseCommandLineOptions(argc, argv);
+ // Make it easy for a test to re-execute itself by saving argv[0].
+ TestMainArgv0 = argv[0];
+
# if defined(LLVM_ON_WIN32)
// Disable all of the possible ways Windows conspires to make automated
// testing impossible.