# 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.

import("//src/modular/build/tests_package.gni")

group("modular") {
  testonly = true

  deps = [
    ":benchmarks",
    ":tests",
    "bin",
    "bundles",
    "lib",
  ]
}

group("tests") {
  testonly = true

  deps = [
    ":modular_lib_tests",
    "tests",  # tests/ directory
    "//sdk/lib/modular/testing/cpp:modular_testing_cpp_tests",
  ]
}

group("benchmarks") {
  testonly = true

  deps = [
    "benchmarks",  # benchmarks/ directory
  ]
}

hermetic_tests_package("modular_lib_tests") {
  deps = [
    "//src/modular/lib:modular_lib_unittests",
  ]
  environments = basic_envs
}
