# Copyright 2014 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.

import("//build/config/ui.gni")
import("//testing/test.gni")

group("mojo") {
  # Meta-target, don't link into production code.
  testonly = true
  deps = [ ":tests" ]

  if (!((is_linux || is_chromeos) && current_cpu == "x86")) {
    deps += [ "//mojo/public" ]
  }

  if (is_android) {
    deps += [ "//mojo/public/java/system" ]
  }

  deps += [ "//services/service_manager:all" ]
}

group("tests") {
  testonly = true
  deps = [
    ":mojo_perftests",
    ":mojo_unittests",
    "//ipc:ipc_tests",
    "//mojo/public/tools:mojo_python_unittests",
    "//services/service_manager/tests",
    "//third_party/ipcz/src:ipcz_tests",
  ]
}

test("mojo_unittests") {
  deps = [
    "//mojo/core:test_sources",
    "//mojo/core/test:run_all_unittests",
    "//mojo/public/cpp/base:tests",
    "//mojo/public/cpp/bindings/tests",
    "//mojo/public/cpp/platform/tests",
    "//mojo/public/cpp/system/tests",
    "//mojo/public/js/ts/bindings/tests",
  ]
}

test("mojo_perftests") {
  deps = [
    "//mojo/core/test:run_all_perftests",
    "//mojo/core/test:test_support",
    "//mojo/public/c/system/tests:perftests",
    "//mojo/public/cpp/bindings/tests:perftests",
  ]

  if (!is_ios) {
    sources = [ "//mojo/core/message_pipe_perftest.cc" ]

    deps += [
      "//base",
      "//base/test:test_support",
      "//mojo/core:embedder_internal",
      "//mojo/core/embedder",
      "//testing/gtest",
    ]
  }
}
