# 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/go/go_fuchsia_unittest_package.gni")
import("//build/go/go_library.gni")
import("//build/go/go_test.gni")
import("//build/go/toolchain.gni")
import("//build/testing/environments.gni")

go_test("fidl-example-go-test") {
  gopackages = [ "go.fuchsia.dev/fuchsia/examples/fidl/go/fidl_packages" ]
  deps = [ ":fidl-example-go" ]
}

go_library("fidl-example-go") {
  deps = [ "//examples/fidl/fuchsia.examples:fuchsia.examples($go_toolchain)" ]
  sources = [ "fidl_test.go" ]
}

go_fuchsia_unittest_package("fidl-example-go-tests") {
  executable_path = "test/fidl-example-go-test"
  deps = [ ":fidl-example-go-test" ]
}

group("fidl_packages") {
  testonly = true
  deps = [ ":fidl-example-go-tests" ]
}
