# Copyright 2023 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.
# Tests that we want to run in an FYI builder.
# We do not want failures from these tests to break the tree.

############# STEPS FOR ADDING LACEWING SELF TEST TO INFRA - START #############
# 1. Identify which all <PRODUCT>.<BOARD> you like to run this test on
# 2. For each of the <PRODUCT>.<BOARD> there is a Test group defined below.
#    Accordingly update each of <PRODUCT>.<BOARD> Infra Test group where you
#    like to run the test
############## STEPS FOR ADDING LACEWING SELF TEST TO INFRA - END ##############

# Infra Test groups:
# For every <PRODUCT>.<BOARD> that we plan to run the tests on, below test
# groups are created:
#
# <PRODUCT>.<BOARD>
#     Stable (Tests that passed for at least 200+ consecutive runs)
#         Tests that require SL4F transport, if any
#         Tests that does not require SL4F transport
#     Unstable (Tests that are yet to pass 200 consecutive runs)
#         Tests that require SL4F transport, if any
#         Tests that does not require SL4F transport
#
# Note: Each entry in test group should refer to a test case along with its
# dependencies (if any). For example,
#   * `src/testing/end_to_end/honeydew/tests/functional_tests/affordance_tests/test_session:test_session`
#     is a group that contains
#     `src/testing/end_to_end/honeydew/tests/functional_tests/affordance_tests/test_session:session_test_fc`
#      test and its dependencies
#     `src/testing/end_to_end/honeydew/tests/functional_tests/affordance_tests/test_session:packages`.
#     So include this group name (not the test name)
#   * `src/testing/end_to_end/honeydew/tests/functional_tests/affordance_tests/test_rtc:rtc_test_fc`
#     is a test and it does not have any dependencies. So you can include this test name directly
#
# Note - Except in `Staging` groups, please refrain from referencing one group
# in another one (such as including `core_x64_stable_tests` in
# `workbench_x64_stable_tests`) as it is not guaranteed that every single
# test case supported by <product-#1>.<board-#1> is supported by other
# <product-#2>.<board-#2>

template("group_with_no_dir_target_deps") {
  group(target_name) {
    forward_variables_from(invoker, "*")
    assert_no_deps = [ ":*" ]
    if (defined(invoker.assert_no_deps)) {
      assert_no_deps += invoker.assert_no_deps
    }
  }
}

############################# Test groups - Start ##############################

# core.x64
group_with_no_dir_target_deps("core_x64_stable_sl4f_tests") {
  testonly = true
  public_deps = [ "examples/test_soft_reboot:test_soft_reboot_fc_preferred" ]
}

group_with_no_dir_target_deps("core_x64_stable_tests") {
  testonly = true
  public_deps = [
    "examples/test_case_revive_example:run_wo_test_case_revive_fc($host_toolchain)",
    "examples/test_case_revive_example:test_case_revive_with_hard_reboot_fc($host_toolchain)",
    "examples/test_case_revive_example:test_case_revive_with_soft_reboot_fc($host_toolchain)",
    "examples/test_power_cycle:power_cycle_test_fc($host_toolchain)",
    "examples/test_soft_reboot:soft_reboot_test_fc($host_toolchain)",
    "honeydew/tests/functional_tests:core_x64_stable_tests",
  ]
}

group_with_no_dir_target_deps("core_x64_unstable_sl4f_tests") {
  testonly = true
  public_deps = []
}

group_with_no_dir_target_deps("core_x64_unstable_tests") {
  testonly = true
  public_deps = [
    "examples/test_soft_reboot:soft_reboot_test_fc.hermetic($host_toolchain)",
    "honeydew/tests/functional_tests:core_x64_unstable_tests",
  ]
}

group("core_x64_staging_sl4f_tests") {
  testonly = true
  public_deps = [
    ":core_x64_stable_sl4f_tests",
    ":core_x64_unstable_sl4f_tests",
  ]
}

group("core_x64_staging_tests") {
  testonly = true
  public_deps = [
    ":core_x64_stable_tests",
    ":core_x64_unstable_tests",
  ]
}

# workbench.x64
group_with_no_dir_target_deps("workbench_x64_stable_tests") {
  testonly = true
  public_deps = [
    "examples/test_case_revive_example:run_wo_test_case_revive_fc($host_toolchain)",
    "examples/test_case_revive_example:test_case_revive_with_hard_reboot_fc($host_toolchain)",
    "examples/test_case_revive_example:test_case_revive_with_soft_reboot_fc($host_toolchain)",
    "examples/test_power_cycle:power_cycle_test_fc($host_toolchain)",
    "examples/test_soft_reboot:soft_reboot_test_fc($host_toolchain)",
    "honeydew/tests/functional_tests:workbench_x64_stable_tests",
  ]
}

group_with_no_dir_target_deps("workbench_x64_unstable_tests") {
  testonly = true
  public_deps = [
    "examples/test_soft_reboot:soft_reboot_test_fc.hermetic($host_toolchain)",
    "honeydew/tests/functional_tests:workbench_x64_unstable_tests",
  ]
}

group("workbench_x64_staging_tests") {
  testonly = true
  public_deps = [
    ":workbench_x64_stable_tests",
    ":workbench_x64_unstable_tests",
  ]
}

# core.vim3
group_with_no_dir_target_deps("core_vim3_stable_tests") {
  testonly = true
  public_deps = [
    "examples/test_case_revive_example:run_wo_test_case_revive_fc($host_toolchain)",
    "honeydew/tests/functional_tests:core_vim3_stable_tests",
  ]
}

group_with_no_dir_target_deps("core_vim3_unstable_tests") {
  testonly = true
  public_deps = [
    "examples/test_case_revive_example:test_case_revive_with_hard_reboot_fc($host_toolchain)",
    "examples/test_case_revive_example:test_case_revive_with_soft_reboot_fc($host_toolchain)",
    "examples/test_power_cycle:power_cycle_test_fc($host_toolchain)",
    "examples/test_soft_reboot:soft_reboot_test_fc($host_toolchain)",
    "examples/test_soft_reboot:soft_reboot_test_fc.hermetic($host_toolchain)",
    "honeydew/tests/functional_tests:core_vim3_unstable_tests",
  ]
}

group("core_vim3_staging_tests") {
  testonly = true
  public_deps = [
    ":core_vim3_stable_tests",
    ":core_vim3_unstable_tests",
  ]
}

# workbench.vim3
group_with_no_dir_target_deps("workbench_vim3_stable_tests") {
  testonly = true
  public_deps = [
    "examples/test_case_revive_example:run_wo_test_case_revive_fc($host_toolchain)",
    "honeydew/tests/functional_tests:workbench_vim3_stable_tests",
  ]
}

group_with_no_dir_target_deps("workbench_vim3_unstable_tests") {
  testonly = true
  public_deps = [
    "examples/test_case_revive_example:test_case_revive_with_hard_reboot_fc($host_toolchain)",
    "examples/test_case_revive_example:test_case_revive_with_soft_reboot_fc($host_toolchain)",
    "examples/test_power_cycle:power_cycle_test_fc($host_toolchain)",
    "examples/test_soft_reboot:soft_reboot_test_fc($host_toolchain)",
    "examples/test_soft_reboot:soft_reboot_test_fc.hermetic($host_toolchain)",
    "honeydew/tests/functional_tests:workbench_vim3_unstable_tests",
  ]
}

group("workbench_vim3_staging_tests") {
  testonly = true
  public_deps = [
    ":workbench_vim3_stable_tests",
    ":workbench_vim3_unstable_tests",
  ]
}

# starnix.vim3
# Note: This will be run on internal builder, hence using `starnix` here
# instead of internal `<PRODUCT>` name.
group_with_no_dir_target_deps("starnix_vim3_stable_tests") {
  testonly = true
  public_deps = [ "honeydew/tests/functional_tests:starnix_vim3_stable_tests" ]
}

group_with_no_dir_target_deps("starnix_vim3_unstable_tests") {
  testonly = true
  public_deps = [
    "examples/test_case_revive_example:run_wo_test_case_revive_fc($host_toolchain)",
    "examples/test_case_revive_example:test_case_revive_with_hard_reboot_fc($host_toolchain)",
    "examples/test_case_revive_example:test_case_revive_with_idle_suspend_timer_resume_fc($host_toolchain)",
    "examples/test_case_revive_example:test_case_revive_with_soft_reboot_fc($host_toolchain)",
    "examples/test_power_cycle:power_cycle_test_fc($host_toolchain)",
    "examples/test_soft_reboot:soft_reboot_test_fc($host_toolchain)",
    "examples/test_soft_reboot:soft_reboot_test_fc.hermetic($host_toolchain)",
    "honeydew/tests/functional_tests:starnix_vim3_unstable_tests",
  ]
}

group("starnix_vim3_staging_tests") {
  testonly = true
  public_deps = [
    ":starnix_vim3_stable_tests",
    ":starnix_vim3_unstable_tests",
  ]
}

############################## Test groups - End ###############################

# TODO(https://fxbug.dev/338091602): Everything below this line will be deleted
############################ Package groups - Start ############################
# core.x64
group("core_x64_stable_sl4f_packages") {
  testonly = true
  public_deps = [ ":core_x64_stable_sl4f_tests" ]
}

group("core_x64_stable_packages") {
  testonly = true
  public_deps = [ ":core_x64_stable_tests" ]
}

group("core_x64_unstable_sl4f_packages") {
  testonly = true
  public_deps = [ ":core_x64_unstable_sl4f_tests" ]
}

group("core_x64_unstable_packages") {
  testonly = true
  public_deps = [ ":core_x64_unstable_tests" ]
}

group("core_x64_staging_sl4f_packages") {
  testonly = true
  public_deps = [
    ":core_x64_stable_sl4f_packages",
    ":core_x64_unstable_sl4f_packages",
  ]
}

group("core_x64_staging_packages") {
  testonly = true
  public_deps = [
    ":core_x64_stable_packages",
    ":core_x64_unstable_packages",
  ]
}

# workbench.x64
group("workbench_x64_stable_packages") {
  testonly = true
  public_deps = [ ":workbench_x64_stable_tests" ]
}

group("workbench_x64_unstable_packages") {
  testonly = true
  public_deps = [ ":workbench_x64_unstable_tests" ]
}

group("workbench_x64_staging_packages") {
  testonly = true
  public_deps = [
    ":workbench_x64_stable_packages",
    ":workbench_x64_unstable_packages",
  ]
}

# core.vim3
group("core_vim3_stable_packages") {
  testonly = true
  public_deps = [ ":core_vim3_stable_tests" ]
}

group("core_vim3_unstable_packages") {
  testonly = true
  public_deps = [ ":core_vim3_unstable_tests" ]
}

group("core_vim3_staging_packages") {
  testonly = true
  public_deps = [
    ":core_vim3_stable_packages",
    ":core_vim3_unstable_packages",
  ]
}

# workbench.vim3
group("workbench_vim3_stable_packages") {
  testonly = true
  public_deps = [ ":workbench_vim3_stable_tests" ]
}

group("workbench_vim3_unstable_packages") {
  testonly = true
  public_deps = [ ":workbench_vim3_unstable_tests" ]
}

group("workbench_vim3_staging_packages") {
  testonly = true
  public_deps = [
    ":workbench_vim3_stable_packages",
    ":workbench_vim3_unstable_packages",
  ]
}

# starnix.vim3
# Note: This will be run on internal builder, hence using `starnix` here instead
# of internal `<PRODUCT>` name.
group("starnix_vim3_stable_packages") {
  testonly = true
  public_deps = [ ":starnix_vim3_stable_tests" ]
}

group("starnix_vim3_unstable_packages") {
  testonly = true
  public_deps = [ ":starnix_vim3_unstable_tests" ]
}

group("starnix_vim3_staging_packages") {
  testonly = true
  public_deps = [
    ":starnix_vim3_stable_packages",
    ":starnix_vim3_unstable_packages",
  ]
}
############################ Package groups - End ##############################
