# Copyright 2019 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.
#
# WARNING: This file was machine-generated from previous json files and
# will eventually be deleted.

group("re2") {
  testonly = true
  public_deps = [
    "//third_party/re2:re2_tests",
  ]
}

group("ledger") {
  testonly = true
  public_deps = [
    "//peridot/packages/prod:cloud_provider_firestore",
    "//peridot/packages/prod:ledger",
    "//src/ledger:ledger_tests",
    "//src/ledger/bin:ledger_fuzzers",
    "//src/ledger/bin/testing/ledger_test_instance_provider:ledger_test_instance_provider",
    "//src/ledger/cloud_provider_in_memory/bin",
    "//src/ledger/cloud_provider_memory_diff",
    "//src/ledger/cloud_provider_memory_diff:cloud_provider_memory_diff_tests",
  ]
}

group("voila") {
  testonly = true
  public_deps = [
    "//peridot/bin/voila:voila_tests",
  ]
}

group("all") {
  testonly = true
  public_deps = [
    "//garnet/packages/testing:run_test_component",
    "//peridot/packages/tests:bup",
    "//peridot/packages/tests:ledger",
    "//peridot/packages/tests:leveldb",
    "//peridot/packages/tests:maxwell_unittests",
    "//peridot/packages/tests:modular_integration_tests",
    "//peridot/packages/tests:modular_unittests",
    "//peridot/packages/tests:peridot_tests",
    "//peridot/packages/tests:re2",
    "//peridot/packages/tests:voila",
  ]
}

group("maxwell_unittests") {
  testonly = true
  public_deps = [
    "//peridot/bin/context_engine:context_engine_unittests",
    "//peridot/bin/discovermgr:discovermgr_tests",
    "//peridot/bin/module_resolver:module_resolver_unittests",
  ]
}

group("modular_test_harness") {
  testonly = true
  public_deps = [
    "//garnet/packages/testing:environment_delegating_runner",
    "//peridot/bin/modular_test_harness",
    "//peridot/public/lib/modular_test_harness/cpp:test_harness_fixture_test",
  ]
}

group("modular_integration_tests") {
  testonly = true
  public_deps = [
    ":modular_test_harness",
    "//garnet/packages/prod:test_runner",
    "//peridot/bin/basemgr:auto_login_base_shell_test",
    "//peridot/packages/prod:integration_testing",
    "//peridot/tests:modular_tests",
    "//peridot/tests/agent_services_tests:agent_services_tests",
    "//peridot/tests/clipboard:clipboard_test_module",
    "//peridot/tests/component_context:component_context_test_module",
    "//peridot/tests/component_context:component_context_test_one_agent",
    "//peridot/tests/component_context:component_context_test_two_agent",
    "//peridot/tests/component_context:component_context_test_unstoppable_agent",
    "//peridot/tests/modular_config:test_config",
    "//peridot/tests/modular_login_tests:modular_login_tests",
    "//peridot/tests/sessionctl:sessionctl_integration_tests",
    "//peridot/tests/trigger:trigger_test_agent",
    "//peridot/tests/trigger:trigger_test_module",
    "//peridot/tests/trigger:trigger_test_session_shell",
  ]
}

group("leveldb") {
  testonly = true
  public_deps = [
    "//third_party/leveldb:leveldb_benchmarks",
    "//third_party/leveldb:leveldb_tests",
  ]
}

group("bup") {
  testonly = true
  public_deps = [
    "//src/ledger/third_party/bup:bup_tests",
  ]
}

group("modular_unittests") {
  testonly = true
  public_deps = [
    "//peridot/bin/agents/clipboard:clipboard_unittests",
    "//peridot/bin/basemgr:basemgr_unittests",
    "//peridot/bin/module_resolver_rs:module_resolver_rs_tests",
    "//peridot/bin/sessionctl:sessionctl_unittests",
    "//peridot/bin/sessionmgr/agent_runner:agent_runner_unittests",
    "//peridot/bin/sessionmgr/entity_provider_runner:entity_provider_runner_unittests",
    "//peridot/bin/sessionmgr/puppet_master:puppet_master_unittests",
    "//peridot/bin/sessionmgr/storage:storage_unittests",
    "//peridot/bin/sessionmgr/story/model:story_model_unittests",
    "//peridot/bin/sessionmgr/story/systems:story_systems_unittests",
    "//peridot/bin/sessionmgr/story_runner:story_runner_unittests",
    "//peridot/lib/sequential_futures:sequential_futures_tests",
    "//peridot/packages/prod:ledger",
  ]
}

group("peridot_tests") {
  testonly = true
  public_deps = [
    "//peridot:peridot_tests",
  ]
}
