From bad6ba908752e520d0613bfe912d87edb1308d2e Mon Sep 17 00:00:00 2001 From: "jcampan@chromium.org" Date: Mon, 27 Apr 2009 21:53:03 +0000 Subject: Reverting my change it breaks release compilation on Windows. TBR=maruel Review URL: http://codereview.chromium.org/103001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14669 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/test/browser/browser_tests_dll.vcproj | 296 ---------------------- chrome/test/browser/browser_tests_launcher.cc | 174 ------------- chrome/test/browser/browser_tests_launcher.vcproj | 160 ------------ chrome/test/browser/run_all_unittests.cc | 45 ---- 4 files changed, 675 deletions(-) delete mode 100644 chrome/test/browser/browser_tests_dll.vcproj delete mode 100644 chrome/test/browser/browser_tests_launcher.cc delete mode 100644 chrome/test/browser/browser_tests_launcher.vcproj delete mode 100644 chrome/test/browser/run_all_unittests.cc (limited to 'chrome/test/browser') diff --git a/chrome/test/browser/browser_tests_dll.vcproj b/chrome/test/browser/browser_tests_dll.vcproj deleted file mode 100644 index 0bcf99d..0000000 --- a/chrome/test/browser/browser_tests_dll.vcproj +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/chrome/test/browser/browser_tests_launcher.cc b/chrome/test/browser/browser_tests_launcher.cc deleted file mode 100644 index 34ec60c..0000000 --- a/chrome/test/browser/browser_tests_launcher.cc +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include - -#include - -#include "base/command_line.h" -#include "base/logging.h" -#include "base/process_util.h" -#include "base/string_util.h" - -namespace { - -const wchar_t* const kBrowserTestDLLName = L"browser_tests.dll"; -const wchar_t* const kGTestListTestsFlag = L"gtest_list_tests"; -} - -// TestEnvContext takes care of loading/unloading the DLL containing the tests. -class TestEnvContext { - public: - TestEnvContext() - : module_(NULL), - run_test_proc_(NULL) { - } - - ~TestEnvContext() { - if (!module_) - return; - BOOL r = ::FreeLibrary(module_); - DCHECK(r); - LOG(INFO) << "Unloaded " << kBrowserTestDLLName; - } - - bool Init() { - module_ = ::LoadLibrary(kBrowserTestDLLName); - if (!module_) { - LOG(ERROR) << "Failed to find " << kBrowserTestDLLName; - return false; - } - - run_test_proc_ = reinterpret_cast( - ::GetProcAddress(module_, "RunTests")); - if (!run_test_proc_) { - LOG(ERROR) << - "Failed to find RunTest function in " << kBrowserTestDLLName; - return false; - } - - return true; - } - - // Returns true if the test succeeded, false if it failed. - bool RunTest(const std::string& test_name) { - std::string filter_flag = StringPrintf("--gtest_filter=%s", - test_name.c_str()); - char* argv[2]; - argv[0] = ""; - argv[1] = const_cast(filter_flag.c_str()); - return RunAsIs(2, argv) == 0; - } - - // Calls-in to GTest with the arguments we were started with. - int RunAsIs(int argc, char** argv) { - return (run_test_proc_)(argc, argv); - } - - private: - typedef int (__cdecl *RunTestProc)(int, char**); - - HMODULE module_; - RunTestProc run_test_proc_; -}; - -// Retrieves the list of tests to run. -// Simply uses the --gtest_list_tests option which honor the filter. -// Sadly there is no dry-run option (or willingness to get such an option) in -// GTest. So we'll have to process disabled and repeat options ourselves. -bool GetTestList(const CommandLine& command_line, - std::vector* test_list) { - DCHECK(!command_line.HasSwitch(kGTestListTestsFlag)); - - // Run ourselves with the --gtest_list_tests option and read the output. - std::wstring new_command_line = command_line.command_line_string() + L" --" + - kGTestListTestsFlag; - std::string output; - if (!base::GetAppOutput(new_command_line, &output)) - return false; - - // Now let's parse the returned output. - // It looks like: - // TestCase. - // Test1 - // Test2 - // OtherTestCase. - // FooTest - // ... - std::vector lines; - SplitString(output, '\n', &lines); - - std::string test_case; - for (std::vector::const_iterator iter = lines.begin(); - iter != lines.end(); ++iter) { - std::string line = *iter; - if (line.empty()) - continue; // Just ignore empty lines if any. - - if (line[line.size() - 1] == '.') { - // This is a new test case. - test_case = line; - continue; - } - // We are dealing with a test. - test_list->push_back(test_case + line); - } - return true; -} - -int main(int argc, char** argv) { - CommandLine::Init(argc, argv); - const CommandLine* command_line = CommandLine::ForCurrentProcess(); - - if (command_line->HasSwitch(kGTestListTestsFlag)) { - TestEnvContext test_context; - if (!test_context.Init()) - return 1; - return test_context.RunAsIs(argc, argv); - } - - // First let's get the list of tests we need to run. - std::vector test_list; - if (!GetTestList(*command_line, &test_list)) { - printf("Failed to retrieve the tests to run.\n"); - return 0; - } - - if (test_list.empty()) { - printf("No tests to run.\n"); - return 0; - } - - // Run the tests. - int test_run_count = 0; - std::vector failed_tests; - for (std::vector::const_iterator iter = test_list.begin(); - iter != test_list.end(); ++iter) { - std::string test_name = *iter; - TestEnvContext test_context; - if (!test_context.Init()) - return 1; - test_run_count++; - if (!test_context.RunTest(test_name.c_str())) { - if (std::find(failed_tests.begin(), failed_tests.end(), test_name) == - failed_tests.end()) { - failed_tests.push_back(*iter); - } - } - } - - printf("%d test%s run\n", test_run_count, test_run_count > 1 ? "s" : ""); - printf("%d test%s failed\n", failed_tests.size(), - failed_tests.size() > 1 ? "s" : ""); - if (failed_tests.empty()) - return 0; - - printf("Failing tests:\n"); - for (std::vector::const_iterator iter = failed_tests.begin(); - iter != failed_tests.end(); ++iter) { - printf("%s\n", iter->c_str()); - } - - return 1; -} diff --git a/chrome/test/browser/browser_tests_launcher.vcproj b/chrome/test/browser/browser_tests_launcher.vcproj deleted file mode 100644 index ee1c651..0000000 --- a/chrome/test/browser/browser_tests_launcher.vcproj +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/chrome/test/browser/run_all_unittests.cc b/chrome/test/browser/run_all_unittests.cc deleted file mode 100644 index f8f7d57..0000000 --- a/chrome/test/browser/run_all_unittests.cc +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/string_util.h" -#include "chrome/test/unit/chrome_test_suite.h" - -#if defined(OS_WIN) -#define DLLEXPORT __declspec(dllexport) -#elif -#define DLLEXPORT -#endif - -// We use extern C for the prototype DLLEXPORT to avoid C++ name mangling. -extern "C" { -DLLEXPORT int __cdecl RunTests(int argc, char **argv) { - return ChromeTestSuite(argc, argv).Run(); -} -} - -#if defined(OS_WIN) -BOOL WINAPI DllMain(HINSTANCE dll_module, DWORD reason, LPVOID reserved) { - if (reason == DLL_PROCESS_DETACH) { - // The CRichEditCtrl (used by the omnibox) calls OleInitialize, but somehow - // does not always calls OleUninitialize, causing an unbalanced Ole - // initialization that triggers a DCHECK in ScopedOleInitializer the next - // time we run a test. - // This behavior has been seen on some Vista boxes, but not all of them. - // There is a flag to prevent Ole initialization in CRichEditCtrl (see - // http://support.microsoft.com/kb/238989), but it is set to 0 in recent - // Windows versions. - // This is a dirty hack to make sure the OleCount is back to 0 in all cases, - // so the next test will have Ole unitialized, as expected. - - if (OleInitialize(NULL) == S_FALSE) { - // We were already initialized, balance that extra-initialization. - OleUninitialize(); - } - // Balance the OleInitialize from the above test. - OleUninitialize(); - } - return TRUE; -} - -#endif -- cgit v1.1