1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/test/launcher/unit_test_launcher.h"
7 #include "base/command_line.h"
8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h"
10 #include "base/logging.h"
11 #include "base/mac/foundation_util.h"
12 #include "base/test/gtest_util.h"
13 #include "base/test/test_switches.h"
17 int LaunchUnitTests(int argc
,
19 const RunTestSuiteCallback
& run_test_suite
) {
20 CHECK(CommandLine::InitializedForCurrentProcess() ||
21 CommandLine::Init(argc
, argv
));
22 const CommandLine
* command_line
= CommandLine::ForCurrentProcess();
23 if (command_line
->HasSwitch(switches::kTestLauncherListTests
)) {
24 FilePath
list_path(command_line
->GetSwitchValuePath(
25 switches::kTestLauncherListTests
));
26 if (WriteCompiledInTestsToFile(list_path
)) {
29 LOG(ERROR
) << "Failed to write list of tests.";
32 } else if (command_line
->HasSwitch(
33 switches::kTestLauncherPrintWritablePath
)) {
34 fprintf(stdout
, "%s", mac::GetUserLibraryPath().value().c_str());
39 return run_test_suite
.Run();