# 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("//build/rust/rustc_test.gni")
import("//src/tests/fidl/conformance_suite/gidl-conformance-suite.gni")
import("//tools/fidl/gidl/gidl.gni")

rustc_test("fidl_external_tests") {
  edition = "2018"
  deps = [
    "//garnet/examples/fidl/services:echo-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
  ]
}

conformance_test_source = "$target_gen_dir/src/lib.rs"

gidl("generate_conformance_test") {
  type = "conformance"
  language = "rust"
  inputs = conformance_suite_gidl_files
  fidl = conformance_suite_fidl_target
  output = conformance_test_source
  testonly = true
}

rustc_test("fidl_conformance_tests") {
  edition = "2018"
  source_root = conformance_test_source
  deps = [
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/tests/fidl/conformance_suite:conformance_fidl-rustc",
    "//third_party/rust_crates:matches",
  ]
  non_rust_deps = [ ":generate_conformance_test" ]
}
