From 2a839438559bc7d3067ff2166105f47e0af06b37 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Tue, 30 Apr 2013 04:30:41 +0000 Subject: [PATCH] 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 --- unittests/Support/ProgramTest.cpp | 7 ++++--- utils/unittest/UnitTestMain/TestMain.cpp | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) mode change 100755 => 100644 unittests/Support/ProgramTest.cpp diff --git a/unittests/Support/ProgramTest.cpp b/unittests/Support/ProgramTest.cpp old mode 100755 new mode 100644 index 279e2e8d0fd..6cbb05454f8 --- 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 ce32b7380f2..5387512e6fb 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. -- 2.34.1