# 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/python/python_binary.gni")
import("//build/testing/host_test_data.gni")

if (is_host) {
  host_test_data("interpreter") {
    sources = [
      "//prebuilt/third_party/python3/${host_platform}/lib",
      python_exe_src,
    ]
  }

  host_test_data("pip") {
    sources = [
      "//prebuilt/third_party/python3/${host_platform}/lib",
      pip_exe_src,
    ]
  }

  group("host_tests") {
    testonly = true
    deps = [
      "tests/assembly:tests",
      "tests/bin",
      "tests/depfile:tests",
      "tests/host_test:py_host_test_with_lib",
      "tests/lib",
      "tests/serialization:tests",
    ]
  }
}

python_binary("gen_sdk_metadata_and_file_sources") {
  enable_mypy = true
  main_source = "gen_sdk_metadata_and_file_sources.py"
}

# These tests exercise the build rules we want to test.
group("tests") {
  testonly = true
  deps = [
    ":host_tests($host_toolchain)",
    "tests/bin",
    "tests/lib",
  ]
}
