# 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",
    "examples",
    "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_rs:module_resolver_rs_tests",
    "//src/modular/bin/module_resolver:module_resolver_unittests",
    "//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_runner:story_runner_unittests",
    "//src/modular/bin/sessionmgr/story/model:story_model_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
}
