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

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

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

rustc_test("fidl_rust_conformance_tests_bin") {
  output_name = "fidl_rust_conformance_tests"
  edition = "2018"
  source_root = conformance_test_source
  deps = [
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fidl/rust/gidl_util",
    "//src/lib/zircon/rust:fuchsia-zircon-status",
    "//src/lib/zircon/rust:fuchsia-zircon-types",
    "//src/tests/fidl/conformance_suite:conformance_fidl_rust",
    "//third_party/rust_crates:assert_matches",
  ]
  non_rust_deps = [ ":generate_conformance_test" ]
  sources = [ conformance_test_source ]
  if (is_host) {
    # We can't run tests in threads because they assert that handles are closed,
    # which is racy when other threads are creating handles. See the comment on
    # get_handle_info_valid in ./gidl_util/src/lib.rs for more details. We only
    # need this on host because the test runner framework uses processes.
    args = [ "--test-threads=1" ]
  }
}

fuchsia_unittest_package("fidl_rust_conformance_tests") {
  deps = [ ":fidl_rust_conformance_tests_bin" ]
}

group("tests") {
  testonly = true
  deps = [
    ":fidl_rust_conformance_tests",
    ":fidl_rust_conformance_tests_bin($host_toolchain)",
    "external_tests",
    "fidl:tests",
    "fidl-contrib:tests",
    "handle_tests",
  ]
}
