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

group("tests") {
  testonly = true

  # Add the testrunner.
  deps = [ "//src/testing/runtests" ]

  deps += [
    "//src/bringup/bin/console-launcher:shell-permissions-bootfs-test",
    "//src/bringup/bin/console-launcher/qemu-tests:tests",
    "//src/bringup/bin/svchost:crashsvc-test-bootfs-test",
    "//src/bringup/bin/sysinfo:sysinfo-bootfs-test",
    "//src/bringup/tests/bootfs_test:running-on-bootfs-test",
    "//src/devices/block/bin/biotime:biotime-test-bootfs-test",
    "//src/devices/nand/drivers/broker/test:nand-broker-bootfs-test",  # HW-required.
    "//src/devices/nand/drivers/ram-nand:ram-nand-test-bootfs-test",
    "//src/devices/sysmem/tests/sysmem:sysmem-bootfs-test",
    "//src/tests/drivers_serial_log:bringup_tests",
    "//src/tests/reboot/dm_reboot_bringup_test:tests",

    # The devcoordinator-namespace-test assumes the root filesystem and can't be
    # migrated as packages are given their own local filesystem.
    "//src/devices/tests/devcoordinator-namespace:devcoordinator-namespace-bootfs-test",
    "//src/devices/tests/devfs:devfs-bootfs-test",
    "//src/devices/thermal/drivers/mtk-thermal:mtk-thermal-integration-bootfs-test",  # HW-required.
    "//src/devices/usb/tests/usb:usb-bootfs-test",  # HW-required.
    "//src/lib/framebuffer/test:framebuffer-test-bootfs-test",
    "//src/storage/gpt/test:gpt-unit-bootfs-test",
    "//src/zircon/tests/entropy:entropy-bootfs-test",
    "//src/zircon/tests/exception:exception-bootfs-test",
    "//src/zircon/tests/futex-ownership:futex-ownership-bootfs-test",
    "//src/zircon/tests/job-policy:policy-bootfs-test",
    "//src/zircon/tests/kcounter:kcounter-bootfs-test",
    "//src/zircon/tests/profile:profile-bootfs-test",
    "//src/zircon/tests/thread-state:thread-state-bootfs-test",
    "//src/zircon/tests/time:time-bootfs-test",
    "//src/zircon/tests/timers:timers-bootfs-test",
    "//src/zircon/tests/vdso:vdso-base-bootfs-test",
    "//src/zircon/tests/vdso:vdso-bootfs-test",
    "//src/zircon/tests/vdso:vdso-variant-bootfs-test",
    "//zircon/system/ulib/c/test:cdebugdata-test-bootfs-test",
    "//zircon/system/ulib/c/test/sanitizer:sanitizer-utils-bootfs-test",
    "//zircon/system/ulib/disk_inspector/test:disk_inspector_unit-bootfs-test",
    "//zircon/system/ulib/elf-search/test:elf-search-bootfs-test",
    "//zircon/system/ulib/launchpad/test:launchpad-bootfs-test",
    "//zircon/system/ulib/syslog/test:syslog-bootfs-test",
    "//zircon/system/ulib/syslog/test:syslog-static-bootfs-test",
    "//zircon/system/ulib/test-utils/test:test-utils-bootfs-test",
    "//zircon/system/ulib/trace-reader/test:trace-reader-test-bootfs-test",
    "//zircon/system/ulib/zbi-bootfs/test:zbi-bootfs-test-bootfs-test",
    "//zircon/system/ulib/zx-panic-libc/test:zx-panic-libc-test-bootfs-test",
    "//zircon/system/ulib/zx/test:zx-bootfs-test",
    "//zircon/system/ulib/zxtest/test:zxtest-bootfs-test",
    "//zircon/system/utest/blobfs-bench:blobfs-bench-bootfs-test",
    "//zircon/system/utest/channel-fatal:channel-fatal-bootfs-test",
    "//zircon/system/utest/core:core-c11-condvar-bootfs-test",
    "//zircon/system/utest/core:core-c11-mutex-bootfs-test",
    "//zircon/system/utest/core:core-c11-thread-bootfs-test",
    "//zircon/system/utest/core:core-channel-bootfs-test",
    "//zircon/system/utest/core:core-channel-call-etc-bootfs-test",
    "//zircon/system/utest/core:core-channel-iovec-bootfs-test",
    "//zircon/system/utest/core:core-channel-write-etc-bootfs-test",
    "//zircon/system/utest/core:core-clock-bootfs-test",
    "//zircon/system/utest/core:core-elf-tls-bootfs-test",
    "//zircon/system/utest/core:core-event-pair-bootfs-test",
    "//zircon/system/utest/core:core-fifo-bootfs-test",
    "//zircon/system/utest/core:core-fpu-bootfs-test",
    "//zircon/system/utest/core:core-futex-bootfs-test",
    "//zircon/system/utest/core:core-handle-close-bootfs-test",
    "//zircon/system/utest/core:core-handle-dup-bootfs-test",
    "//zircon/system/utest/core:core-handle-info-bootfs-test",
    "//zircon/system/utest/core:core-handle-transfer-bootfs-test",
    "//zircon/system/utest/core:core-handle-wait-bootfs-test",
    "//zircon/system/utest/core:core-job-bootfs-test",
    "//zircon/system/utest/core:core-memory-mapping-bootfs-test",
    "//zircon/system/utest/core:core-object-child-bootfs-test",
    "//zircon/system/utest/core:core-object-info-bootfs-test",
    "//zircon/system/utest/core:core-object-wait-bootfs-test",
    "//zircon/system/utest/core:core-pager-bootfs-test",
    "//zircon/system/utest/core:core-port-bootfs-test",
    "//zircon/system/utest/core:core-process-bootfs-test",
    "//zircon/system/utest/core:core-pthread-barrier-bootfs-test",
    "//zircon/system/utest/core:core-pthread-bootfs-test",
    "//zircon/system/utest/core:core-pthread-tls-bootfs-test",
    "//zircon/system/utest/core:core-socket-bootfs-test",
    "//zircon/system/utest/core:core-stack-bootfs-test",
    "//zircon/system/utest/core:core-stream-bootfs-test",
    "//zircon/system/utest/core:core-sync-completion-bootfs-test",
    "//zircon/system/utest/core:core-sync-condition-bootfs-test",
    "//zircon/system/utest/core:core-sync-mutex-bootfs-test",
    "//zircon/system/utest/core:core-threads-bootfs-test",
    "//zircon/system/utest/core:core-time-bootfs-test",
    "//zircon/system/utest/core:core-version-bootfs-test",
    "//zircon/system/utest/core:core-vmar-bootfs-test",
    "//zircon/system/utest/core:core-vmo-bootfs-test",
    "//zircon/system/utest/core-display:core-display-bootfs-test",
    "//zircon/system/utest/debugger:debugger-bootfs-test",
    "//zircon/system/utest/device-enumeration:device-enumeration-bootfs-test",
    "//zircon/system/utest/dlfcn:dlfcn-bootfs-test",
    "//zircon/system/utest/fs-bench:fs-bench-bootfs-test",
    "//zircon/system/utest/kernel-unittests:kernel-unittests-bootfs-test",
    "//zircon/system/utest/log:log-bootfs-test",
    "//zircon/system/utest/memfs:memfs-bootfs-test",
    "//zircon/system/utest/miscsvc:miscsvc-bootfs-test",
    "//zircon/system/utest/namespace:namespace-bootfs-test",
    "//zircon/system/utest/psutils:ps-bootfs-test",
    "//zircon/system/utest/race-tests:race-tests-bootfs-test",
    "//zircon/system/utest/runtests-utils:runtests-utils-bootfs-test",
    "//zircon/system/utest/svchost:svchost-bootfs-test",
    "//zircon/system/utest/task-utils:task-utils-bootfs-test",
    "//zircon/system/utest/trace:trace-bootfs-test",
    "//zircon/system/utest/utc-procargs:utc-procargs-bootfs-test",
    "//zircon/third_party/ulib/linenoise/test:linenoise-test-bootfs-test",
  ]

  if (target_cpu == "x64") {
    deps += [
      "//src/devices/bin/acpidump:acpidump-test-bootfs-test",
      "//src/devices/board/drivers/x86:x86-board-bootfs-test",
      "//src/devices/board/drivers/x86:x86-lid-bootfs-test",
      "//src/devices/board/drivers/x86:x86-pwrsrc-bootfs-test",
      "//src/devices/board/drivers/x86:x86-thermal-bootfs-test",
      "//src/devices/board/drivers/x86/test:x86-board-bootfs-test",
      "//src/devices/lib/iommu:iommu-bootfs-test",
      "//src/zircon/tests/x86-umip:x86-umip-bootfs-test",
    ]
  }

  # Add various drivers and binaries used in manual testing.
  deps += [ ":manual_testing" ]
}

group("manual_testing") {
  testonly = true

  deps = [
    "//src/devices/bundles:manual_testing",
    "//src/graphics/display/bin/display-test",
    "//src/security/bin/syscall-check",
    "//src/zircon/testing/mutex_pi_exerciser",
    "//src/zircon/tests/evil",
    "//zircon/system/utest/msd",
  ]
}
