# Copyright 2022 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/go/go_library.gni")
import("//build/go/go_test.gni")

group("tests") {
  testonly = true

  deps = []

  if (host_os == "linux") {
    deps += [ ":memory_budget_tests($host_toolchain)" ]
  }
}

if (is_linux) {
  host_test_data("host_fvm") {
    visibility = [ ":*" ]

    deps = [ "//src/storage/bin/fvm:fvm" ]

    sources = [ "$root_out_dir/fvm" ]
    outputs = [ "$root_out_dir/test_data/tools/{{source_file_part}}" ]
  }

  host_test_data("fvm.blk") {
    visibility = [ ":*" ]

    deps = [ "//build/images/fuchsia:fuchsia_zbi_for_host_tests" ]

    sources = [ "$root_build_dir/fvm.blk" ]
  }

  host_test_data("vm_config") {
    visibility = [ ":*" ]

    sources = [ "test_data/vm_config.json" ]
    outputs = [ "$root_out_dir/test_data/config/{{source_file_part}}" ]
  }

  go_library("lib") {
    testonly = true

    deps = [ "//tools/emulator/emulatortest" ]

    sources = [ "boot_test.go" ]
  }

  go_test("memory_budget_tests") {
    gopackages = [ "go.fuchsia.dev/fuchsia/src/tests/memory_budget" ]
    deps = [ ":lib" ]
    non_go_deps = [
      ":fvm.blk",
      ":host_fvm",
      ":vm_config",
    ]
  }
}
