# Copyright 2020 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/rust/rustc_test.gni")
import("//src/sys/build/components.gni")

rustc_test("tests_bin") {
  edition = "2018"
  source_root = "main.rs"
  name = "rust_runner_integration_test"

  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//sdk/fidl/fuchsia.test:fuchsia.test-rustc",
    "//sdk/fidl/fuchsia.test.manager:fuchsia.test.manager-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/test_executor/rust:test_executor",
    "//src/sys/test_runners:test_lib",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:itertools",
    "//third_party/rust_crates:linked-hash-map",
    "//third_party/rust_crates:pretty_assertions",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [ "main.rs" ]
}

fuchsia_component("rust_runner_integration_test") {
  testonly = true
  manifest = "meta/rust_runner_integration_test.cml"
  deps = [ ":tests_bin" ]
}

fuchsia_test_package("rust-runner-integration-test") {
  test_components = [ ":rust_runner_integration_test" ]
}

group("tests") {
  testonly = true
  deps = [
    ":rust-runner-integration-test",
    "../test_data",
  ]
}
