# 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 && 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",
    "//services/service_manager/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",
  ]
}

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:test_utils",
      "//mojo/core/embedder",
      "//testing/gtest",
    ]
  }
}
