# 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/android" ]
  }

  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/edk/system:test_sources",
    "//mojo/edk/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/edk/test:run_all_perftests",
    "//mojo/edk/test:test_support",
    "//mojo/public/c/system/tests:perftests",
    "//mojo/public/cpp/bindings/tests:perftests",
  ]

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

    deps += [
      "//base",
      "//base/test:test_support",
      "//mojo/edk",
      "//mojo/edk/system:test_utils",
      "//testing/gtest",
    ]
  }
}
