# 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("experiences") {
  testonly = true
  public_deps = [
    "bin",
    "examples",
    "session_shells",
    "settings",
  ]
}

# All of the tests to run for the experiences repo
group("tests") {
  testonly = true

  public_deps = [
    ":dart_target_tests",
    ":dart_unittests",
    ":test_config",
    "bin/terminal_settings_agent:tests",
    "session_shells/ermine/session:tests",
  ]
}

group("test_config") {
  testonly = true
  deps = [ "tests/config" ]
}

# Dart tests which can run on target
group("dart_target_tests") {
  testonly = true
  public_deps = [ "bin:dart_target_tests" ]
}

# Dart unit tests which can run on the host or target
group("dart_unittests") {
  testonly = true
  public_deps = [
    "bin:dart_unittests",
    "examples:dart_unittests",
    "session_shells:dart_unittests",
    "settings:dart_unittests",
  ]
}
