146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file.
446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/bind.h"
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/command_line.h"
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/logging.h"
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/test/launcher/unit_test_launcher.h"
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/test/test_suite.h"
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "mojo/shell/child_process.h"
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "mojo/shell/switches.h"
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)int main(int argc, char** argv) {
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  base::CommandLine::Init(argc, argv);
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  const base::CommandLine& command_line =
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      *base::CommandLine::ForCurrentProcess();
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  if (command_line.HasSwitch(switches::kChildProcessType)) {
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    scoped_ptr<mojo::shell::ChildProcess> child_process =
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        mojo::shell::ChildProcess::Create(command_line);
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    CHECK(child_process);
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    child_process->Main();
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    return 0;
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  base::TestSuite test_suite(argc, argv);
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return base::LaunchUnitTests(
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      argc, argv, base::Bind(&base::TestSuite::Run,
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             base::Unretained(&test_suite)));
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
32