# 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.

group("bin") {
  deps = [
    "simple_browser",
    "terminal_settings",
    "terminal_settings_agent",
  ]
}

group("dart_target_tests") {
  testonly = true

  deps = [ "simple_browser:simple_browser_target_test" ]
}

group("dart_unittests") {
  testonly = true

  # TODO(fxb/41505): Temporarily disable flutter_tester tests on mac hosts.
  _flutter_tester_tests = []
  if (host_os != "mac") {
    _flutter_tester_tests += [
      # TODO(fxb/54945): Temporarily disable tests
      #"simple_browser:simple_browser_unittests($host_toolchain)",
      #"terminal_settings:terminal_settings_unittests($host_toolchain)",
    ]
  }

  deps = _flutter_tester_tests
}
