# Copyright 2019 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/dart/dart_library.gni")
import("//build/dart/fidl_move.gni")
import("//build/flutter/test.gni")
import("//build/testing/environments.gni")

dart_library("fuchsia_inspect_flutter") {
  package_name = "fuchsia_inspect_flutter"
  null_safe = true

  sdk_category = "partner"

  sources = [
    "inspect_flutter.dart",
    "src/inspect_flutter.dart",
  ]

  deps = [
    "//third_party/dart-pkg/git/flutter/packages/flutter",
    dart_package_label.fuchsia_inspect,
    dart_package_label.fuchsia_services,
  ]
}

flutter_test("inspect_flutter_test") {
  source_dir = "test"
  sources = [ "inspect_flutter_test.dart" ]

  deps = [
    ":fuchsia_inspect_flutter",
    "//third_party/dart-pkg/git/flutter/packages/flutter",
    "//third_party/dart-pkg/git/flutter/packages/flutter_test",
    "//third_party/dart-pkg/pub/test",
    dart_package_label.fuchsia_inspect,
    dart_package_label.fuchsia_services,
  ]
}
