chromium/fuchsia_web/webengine/test/web_engine_test_launcher.cc

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <fuchsia/web/cpp/fidl.h>
#include <utility>

#include "base/command_line.h"
#include "base/fuchsia/fuchsia_logging.h"
#include "base/test/launcher/test_launcher.h"
#include "base/test/test_suite.h"
#include "content/public/common/content_switches.h"
#include "content/public/test/test_launcher.h"
#include "fuchsia_web/webengine/browser/web_engine_browser_main_parts.h"
#include "fuchsia_web/webengine/test/web_engine_browser_test.h"
#include "fuchsia_web/webengine/web_engine_main_delegate.h"
#include "ui/ozone/public/ozone_switches.h"

namespace {

class WebEngineTestLauncherDelegate : public content::TestLauncherDelegate {
 public:
  WebEngineTestLauncherDelegate() = default;
  ~WebEngineTestLauncherDelegate() override = default;

  WebEngineTestLauncherDelegate(const WebEngineTestLauncherDelegate&) = delete;
  WebEngineTestLauncherDelegate& operator=(
      const WebEngineTestLauncherDelegate&) = delete;

  // content::TestLauncherDelegate implementation:
  int RunTestSuite(int argc, char** argv) override {
    base::TestSuite test_suite(argc, argv);
    // Browser tests are expected not to tear-down various globals.
    test_suite.DisableCheckForLeakedGlobals();
    return test_suite.Run();
  }

  content::ContentMainDelegate* CreateContentMainDelegate() override {
    return new WebEngineMainDelegate();
  }
};

}  // namespace

int main(int argc, char** argv) {
  base::CommandLine::Init(argc, argv);
  auto* command_line = base::CommandLine::ForCurrentProcess();
  command_line->AppendSwitchASCII(switches::kEnableLogging, "stderr");

  // Indicate to all processes that they are being run as part of a browser
  // test, so that dependencies which might compromise test isolation
  // won't be used (e.g. memory pressure).
  command_line->AppendSwitch(switches::kBrowserTest);

  size_t parallel_jobs = base::NumParallelJobs(/*cores_per_job=*/2);
  if (parallel_jobs == 0U)
    return 1;
  ::WebEngineTestLauncherDelegate launcher_delegate;
  return LaunchTests(&launcher_delegate, parallel_jobs, argc, argv);
}