# Copyright 2016 The Fuchsia 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/package.gni")
import("//build/testing/environments.gni")
import("//src/modular/build/tests_package.gni")

group("peridot") {
  testonly = true
  deps = [
    ":peridot_tests",
    "cloud",
    "lib",
    "tests",
  ]
}

config("internal") {
  include_dirs = [
    ".",
    "$root_gen_dir/peridot",
  ]
}

group("tests") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:test_runner",
    "//garnet/packages/testing:run_test_component",
    "//peridot:peridot_tests",
    "//peridot/lib/sequential_futures:sequential_futures_tests",
    "//peridot/packages/tests:ledger",
    "//peridot/packages/tests:modular_test_harness",
    "//src/ledger/bin",
    "//src/ledger/third_party/bup:bup_tests",
    "//src/modular/bin/agents/clipboard:clipboard_unittests",
    "//src/modular/bin/basemgr:auto_login_base_shell_test",
    "//src/modular/bin/basemgr:basemgr_unittests",
    "//src/modular/bin/basemgr/intl_property_provider_impl:intl_property_provider_impl_tests",
    "//src/modular/bin/module_resolver:module_resolver_unittests",
    "//src/modular/bin/module_resolver_rs:module_resolver_rs_tests",
    "//src/modular/bin/sessionctl:sessionctl_unittests",
    "//src/modular/bin/sessionmgr:sessionmgr_unittests",
    "//src/modular/bin/sessionmgr/agent_runner:agent_runner_unittests",
    "//src/modular/bin/sessionmgr/entity_provider_runner:entity_provider_runner_unittests",
    "//src/modular/bin/sessionmgr/puppet_master:puppet_master_unittests",
    "//src/modular/bin/sessionmgr/storage:storage_unittests",
    "//src/modular/bin/sessionmgr/story/model:story_model_unittests",
    "//src/modular/bin/sessionmgr/story_runner:story_runner_unittests",
    "//src/modular/bin/voila:voila_tests",
    "//src/modular/bundles:integration_testing",
    "//src/modular/tests/modular_config:test_config",
    "//src/stories/bin/discovermgr:discovermgr_tests",
    "//third_party/leveldb:leveldb_benchmarks",
    "//third_party/leveldb:leveldb_tests",
    "//third_party/re2:re2_tests",
  ]
}

# All peridot tests that can run as test binaries in a package, and are not
# associated with the package of a binary already anyway.
hermetic_tests_package("peridot_tests") {
  deps = [
    "//peridot/lib:peridot_lib_unittests",
  ]
  environments = basic_envs
}
