# Copyright 2015 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("//mojo/public/mojo_application_manifest.gni")
import("//testing/test.gni")

# Target that builders build.
group("all") {
  testonly = true

  deps = [
    ":mash_unittests",
    "//components/leveldb",
    "//mash/catalog_viewer",
    "//mash/example",
    "//mash/init",
    "//mash/login",
    "//mash/screenlock",
    "//mash/session",
    "//mash/task_viewer",
  ]
}

group("browser") {
  testonly = true

  deps = [
    ":all",
    "//mash/browser",
    "//mash/webtest",
  ]
}

test("mash_unittests") {
  sources = [
    "test/mash_test_suite.cc",
    "test/mash_test_suite.h",
    "test/mash_unittests.cc",
  ]
  deps = [
    "//ash/mus:resources",
    "//ash/mus:unittests",
    "//base",
    "//base/test:test_support",
    "//services/shell/background:main",
    "//ui/aura",
    "//ui/base",
    "//ui/compositor:test_support",
    "//ui/gl:test_support",
  ]
  data_deps = [
    ":unittests_manifest",
    "//ash/mus:resources",
  ]
}

mojo_application_manifest("unittests_manifest") {
  type = "exe"
  application_name = "mash_unittests"
  source = "unittests_manifest.json"
}
