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