# 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/dart/dart_component.gni")
import("//build/dart/dart_library.gni")
import("//build/python/python_host_test.gni")

group("tests") {
  testonly = true
  deps = [ ":build-dart-test-package" ]
}

dart_library("lib") {
  package_name = "build_dart_test"
  null_safe = true
  sources = [ "main.dart" ]
  deps = [ "//sdk/dart/fuchsia" ]
}

resource("text-file") {
  sources = [ "text_file.txt" ]
  outputs = [ "data/text_file.txt" ]
}

dart_component("dart-component") {
  manifest = "meta/dart-component.cmx"
  main_package = "build_dart_test"
  null_safe = true
  deps = [
    ":lib",
    ":text-file",
  ]
}

fuchsia_package("build-dart-test-package") {
  deps = [ ":dart-component" ]
}
