// Copyright 2013 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/test/launcher/unit_test_launcher.h" #include "base/command_line.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/logging.h" #include "base/mac/foundation_util.h" #include "base/test/gtest_util.h" #include "base/test/test_switches.h" namespace base { int LaunchUnitTests(int argc, char** argv, RunTestSuiteCallback run_test_suite) { CHECK(CommandLine::InitializedForCurrentProcess() || CommandLine::Init(argc, argv)); const CommandLine* command_line = CommandLine::ForCurrentProcess(); if (command_line->HasSwitch(switches::kTestLauncherListTests)) { FilePath list_path(command_line->GetSwitchValuePath( switches::kTestLauncherListTests)); if (WriteCompiledInTestsToFile(list_path)) { return 0; } else { LOG(ERROR) << "Failed to write list of tests."; return 1; } } else if (command_line->HasSwitch( switches::kTestLauncherPrintWritablePath)) { fprintf(stdout, "%s", mac::GetUserLibraryPath().value().c_str()); fflush(stdout); return 0; } return std::move(run_test_suite).Run(); } } // namespace base