# Copyright 2018 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/test/test_package.gni")
import("//build/testing/environments.gni")

group("rust") {
  testonly = true
  deps = [
    ":tests",

    # TODO(fxb/50421): This target seems broken.
    # "cdylib",
    "eth-rs",
    "inspect-rs",
    "staticlib",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":garnet-rust-examples",
    "ergonomic-inspect:tests",
    "inspect-rs:tests",
    "rust_static_linking:tests",

    # Until such time that these directories have tests, at least check that
    # they compile properly.

    # TODO(fxb/50421): This target seems broken.
    # "cdylib",
    "eth-rs",
    "inspect-rs",
    "staticlib",
  ]
}

test_package("garnet-rust-examples") {
  deps = [ "testing:testing-tests" ]  #TARGET

  # You need to include these for them to end up in the final image
  tests = [
    {
      name = "testing_lib_test"
      environments = basic_envs
    },
    {
      name = "testing_integration_test"
      environments = basic_envs
    },
    {
      name = "testing_integration_test_two"
      environments = basic_envs
    },
  ]
}
