# 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("$zx/public/gn/config/standard.gni")
import("$zx/public/gn/toolchain/environment_redirect.gni")
import("$zx/public/gn/zbi.gni")

if (current_cpu != "") {
  group("utest") {
    testonly = true

    # For unittests, the recommended naming scheme is:
    #   path/to/code/test
    # or
    #   path/to/code:test
    #
    # Where "test" is a group containing all unittest labels.
    deps = [
      ":host",  # TODO(mcgrathr): reach this differently?
      "$zx/system/core/bootsvc:tests",
      "$zx/system/core/console:console-test",
      "$zx/system/core/devmgr/devcoordinator:devcoordinator-test",
      "$zx/system/core/devmgr/devhost:devhost-test",
      "$zx/system/core/devmgr/fshost:block-watcher-test",
      "$zx/system/core/devmgr/fshost:fshost-metrics-test",
      "$zx/system/core/devmgr/fshost:fshost-test",
      "$zx/system/core/netsvc:netsvc-test",
      "$zx/system/core/svchost:crashsvc-test",
      "$zx/system/core/virtcon:virtual-console-display-test",
      "$zx/system/core/virtcon:virtual-console-test",
      "$zx/system/dev/audio/codecs/max98373:max98373-test",
      "$zx/system/dev/audio/codecs/tas5782:tas5782-test",
      "$zx/system/dev/audio/codecs/tas5805:tas5805-test",
      "$zx/system/dev/audio/intel-hda:test",
      "$zx/system/dev/audio/lib/simple-audio-stream:sa-unittest",
      "$zx/system/dev/backlight/sg-micro:sgm37603a-test",
      "$zx/system/dev/block/ahci:ahci-unittest",
      "$zx/system/dev/block/aml-sd-emmc:aml-sd-emmc-test",
      "$zx/system/dev/block/ftl/test",
      "$zx/system/dev/block/fvm/test",
      "$zx/system/dev/block/mbr:mbr-test",
      "$zx/system/dev/block/mtk-sdmmc:mtk-sdmmc-test",
      "$zx/system/dev/block/sdmmc:sdmmc-test",
      "$zx/system/dev/block/usb-mass-storage:tests",
      "$zx/system/dev/bluetooth/bt-hci-mediatek:bt-hci-mediatek-test",
      "$zx/system/dev/board/mt8167s_ref:mt8167s_ref-test",
      "$zx/system/dev/bus/pci:pci-driver",
      "$zx/system/dev/bus/pci:pci-unit",
      "$zx/system/dev/bus/virtio:virtio-test",
      "$zx/system/dev/clk/amlogic-clk:amlogic-clk-test",
      "$zx/system/dev/clk/msm8x53-clk:msm8x53-clk-test",
      "$zx/system/dev/clk/syn-clk:syn-clk-test",
      "$zx/system/dev/codec/alc5663:test",
      "$zx/system/dev/display/aml-canvas:aml-canvas-test",
      "$zx/system/dev/display/display/test",
      "$zx/system/dev/display/mt8167s-display:tests",
      "$zx/system/dev/ethernet/ethernet:ethernet-unittest",
      "$zx/system/dev/gpio/as370-gpio:as370-gpio-test",
      "$zx/system/dev/gpio/mt-8167:mtk-gpio",
      "$zx/system/dev/gpio/qcom-gpio:qcom-gpio-test",
      "$zx/system/dev/i2c/dw-i2c:dw-i2c-test",
      "$zx/system/dev/i2c/mt8167-i2c:mt8167-i2c-test",
      "$zx/system/dev/input/bma253:bma253-test",
      "$zx/system/dev/input/hid:hid-test",
      "$zx/system/dev/input/hid-buttons:hid-buttons-test",
      "$zx/system/dev/input/i2c-hid:i2c-hid-test",
      "$zx/system/dev/lib/as370:audio-dsp-test",
      "$zx/system/dev/lib/as370:syn-audio-in-test",
      "$zx/system/dev/lib/fake-bti/test:fake-bti",
      "$zx/system/dev/lib/mt8167:mt8167-audio-lib-test",
      "$zx/system/dev/lib/scsi:scsilib-disk-test",
      "$zx/system/dev/lib/usb:usb-lib-test",
      "$zx/system/dev/light-sensor/lite-on:ltr-578als-test",
      "$zx/system/dev/light/lp50xx-light:lp50xx-light-test",
      "$zx/system/dev/nand/broker/test",
      "$zx/system/dev/nand/cadence-hpnfc:cadence-hpnfc-test",
      "$zx/system/dev/nand/nand/test",
      "$zx/system/dev/nand/nandpart:nandpart-test",
      "$zx/system/dev/nand/ram-nand:ram-nand-test",
      "$zx/system/dev/nand/skip-block:skip-block-test",
      "$zx/system/dev/power/msm8x53-power:msm8x53-power-test",
      "$zx/system/dev/power/mtk-power:mtk-power-test",
      "$zx/system/dev/serial/ftdi/test:ftdi-i2c-test",
      "$zx/system/dev/serial/serial/test",
      "$zx/system/dev/serial/uart16550:uart16550-test",
      "$zx/system/dev/shareddma/syn-dma:syn-dhub-test",
      "$zx/system/dev/spi/spi:spi-test",
      "$zx/system/dev/sysmem/sysmem:sysmem-unittest",
      "$zx/system/dev/tee/optee:test",
      "$zx/system/dev/test",
      "$zx/system/dev/thermal/aml-thermal-s912:aml-thermal-s912-test",
      "$zx/system/dev/thermal/mtk-thermal:mtk-thermal-test",
      "$zx/system/dev/usb/mt-musb-host:mt-hci-request-queue-test",
      "$zx/system/dev/usb/mt-musb-host:mt-hci-test",
      "$zx/system/dev/usb/mt-musb-host:mt-hci-transaction-test",
      "$zx/system/uapp/disk-pave:install-disk-image-test",
      "$zx/system/uapp/nand-util:nand-util-test",
      "$zx/system/uapp/thermal-cli:thermal-cli-test",
      "$zx/system/ulib/affine/test",
      "$zx/system/ulib/async-loop/test",
      "$zx/system/ulib/async-testing/test",
      "$zx/system/ulib/async/test",
      "$zx/system/ulib/backtrace-request/test",
      "$zx/system/ulib/bitmap/test",
      "$zx/system/ulib/blobfs/test",
      "$zx/system/ulib/block-client/test",
      "$zx/system/ulib/bootfs:bootfs-test",
      "$zx/system/ulib/c/test",
      "$zx/system/ulib/cobalt-client/test",
      "$zx/system/ulib/crypto/test",
      "$zx/system/ulib/ddk:ddk-unittest",
      "$zx/system/ulib/debugdata/test",
      "$zx/system/ulib/devmgr-integration-test/test",
      "$zx/system/ulib/digest/test",
      "$zx/system/ulib/disk-inspector/test",
      "$zx/system/ulib/driver-integration-test/test",
      "$zx/system/ulib/driver-unit-test/test",
      "$zx/system/ulib/elf-search/test",
      "$zx/system/ulib/fbl/test",
      "$zx/system/ulib/fidl-async/test:fidl-async-test",
      "$zx/system/ulib/fs-pty/test",
      "$zx/system/ulib/fs/buffer:test",
      "$zx/system/ulib/fs/metrics/test:metrics",
      "$zx/system/ulib/fs/operation:test",
      "$zx/system/ulib/fs/test",
      "$zx/system/ulib/fvm/test",
      "$zx/system/ulib/fzl/test",
      "$zx/system/ulib/gpt/test",
      "$zx/system/ulib/hermetic-compute/test",
      "$zx/system/ulib/hermetic-decompressor/test",
      "$zx/system/ulib/hid-parser/test",
      "$zx/system/ulib/hwreg/test",
      "$zx/system/ulib/id_allocator/test",
      "$zx/system/ulib/image-format:image-format-test",
      "$zx/system/ulib/inspect/test",
      "$zx/system/ulib/intel-hda:test",
      "$zx/system/ulib/io-scheduler:io-scheduler-test",
      "$zx/system/ulib/kernel-mexec:kernel-mexec-test",
      "$zx/system/ulib/kvstore:kvstore-test",
      "$zx/system/ulib/launchpad/test",
      "$zx/system/ulib/lazy_init:lazy_init-test",
      "$zx/system/ulib/libzbi/test",
      "$zx/system/ulib/lockdep:test",
      "$zx/system/ulib/memfs/test",
      "$zx/system/ulib/minfs/allocator/test",
      "$zx/system/ulib/minfs/test",
      "$zx/system/ulib/mipi-dsi:mipidsi",
      "$zx/system/ulib/mock-function/test",
      "$zx/system/ulib/paver:paver-test",
      "$zx/system/ulib/pretty:pretty-test",
      "$zx/system/ulib/range/test",
      "$zx/system/ulib/region-alloc/test",
      "$zx/system/ulib/runtests-utils/test",
      "$zx/system/ulib/simplehid/test",
      "$zx/system/ulib/smbios:smbios-test",
      "$zx/system/ulib/storage-metrics/test",
      "$zx/system/ulib/syslog/test",
      "$zx/system/ulib/test-exceptions/test",
      "$zx/system/ulib/test-utils/test",
      "$zx/system/ulib/tftp:tftp-test",
      "$zx/system/ulib/trace-engine:tests",
      "$zx/system/ulib/trace-provider:tests",
      "$zx/system/ulib/trace-reader:tests",
      "$zx/system/ulib/trace-vthread:tests",
      "$zx/system/ulib/unittest/test",
      "$zx/system/ulib/utf_conversion/test",
      "$zx/system/ulib/zbi-bootfs/test",
      "$zx/system/ulib/zx-panic-libc/test",
      "$zx/system/ulib/zx/test",
      "$zx/system/ulib/zxio/test",
      "$zx/system/ulib/zxtest/test",
      "abigen",
      "backtrace-request:backtrace-request-integration",
      "biotime",
      "blobfs",
      "blobfs-bench",
      "channel-fatal",
      "chromeos-disk-setup",
      "cleanup",
      "compiler",
      "core",
      "cprng",
      "ctor",
      "debugger",
      "devfs",
      "device-enumeration",
      "dlfcn",
      "dlopen-indirect-deps",
      "driver-test",
      "dump1",
      "entropy",
      "errno",
      "ethernet",
      "events",
      "evil",
      "exception",
      "exit",
      "fallback-rtc",
      "fdio",
      "ffl",
      "fidl",
      "fidl-coding-tables",
      "fidl-llcpp-interop",
      "fidl-simple",
      "fidl-utils",
      "fit",
      "fpu",
      "fs",
      "fs-bench",
      "fs-management",
      "fs-recovery",
      "fs-test-utils",
      "futex-ownership",
      "fvm",
      "fvm:fvm-integration",
      "getentropy",
      "goldfish",
      "handle-alias",
      "hid",
      "hypervisor",
      "inspector",
      "int-types",
      "kcounter",
      "kernel-cmdline",
      "kernel-unittests",
      "log",
      "logger",
      "memfs",
      "miscsvc",
      "msd",
      "namespace",
      "noop-fuzzer",
      "perftest",
      "platform-bus",
      "policy",
      "posixio",
      "processor",
      "profile",
      "property",
      "pty",
      "qsort",
      "race-tests",
      "ramdisk",
      "register-state",
      "rtc-lib",
      "runtests-utils",
      "sanitizer",
      "spawn",
      "status",
      "stdio",
      "sysconf",
      "sysinfo",
      "sysmem",
      "task-utils",
      "thread-initial-state",
      "thread-state",
      "time",
      "timers",
      "trace",
      "usb",
      "usb-virtual-bus:test",
      "util",
      "vdso",
      "vdso-base",
      "vdso-variant",
      "virtio",
      "virtual_camera:test",
      "vmo",
      "zxcrypt",

      # disabled for now:
      #"bad-kernel-access",

      # TODO(fuzztest): "edid"
    ]
    if (current_cpu == "x64") {
      deps += [
        "$zx/system/dev/board/x86:x86-battery-test",
        "$zx/system/dev/board/x86:x86-board-test",
        "$zx/system/dev/board/x86:x86-lid-test",
        "$zx/system/dev/board/x86:x86-pwrsrc-test",
        "$zx/system/dev/board/x86:x86-thermal-test",
        "x86-umip",
      ]
    }
  }

  # This plus a kernel in deps makes a tiny zbi() that just runs core-tests.
  zbi_input("core-tests") {
    testonly = true
    type = "cmdline"
    args = [
      "--entry=userboot=bin/core-tests",
      "--entry=userboot.shutdown",
    ]
    deps = [
      "$zx/system/utest/core:core-tests",
    ]
  }

  group("host-tests") {
    testonly = true
    deps = [
      "$zx/system/ulib/blobfs/test:blobfs-host",
      "$zx/system/ulib/fbl/test",
      "$zx/system/ulib/fvm/test",
      "$zx/system/ulib/libzbi/test",
      "$zx/system/ulib/trace-reader:tests",
      "$zx/system/ulib/zxtest/test",
      "cmdline",
      "ffl",
      "fidl-compiler",
      "fit",
      "fs-host",
      "fvm-host",
      "runtests-utils",
      "util",
    ]
    if (current_os == "linux") {
      deps += [
        "$zx/system/dev/usb/usb-peripheral-test",
        "$zx/system/ulib/ftl-mtd/test",
        "ftl-mtd",
        "mtd",
        "nand-redundant-storage",
      ]
    }
  }
}

# Build the host tests for each host.
foreach(host, standard_build_hosts) {
  environment_redirect("host-tests-${host.os}-${host.cpu}") {
    testonly = true
    environment_label = "$zx/public/gn/toolchain:host"
    cpu = host.cpu
    os = host.os
    direct = true
    deps = [
      ":host-tests",
    ]
  }
}

group("host-tests-all-platforms") {
  testonly = true
  deps = []
  foreach(host, standard_build_hosts) {
    deps += [ ":host-tests-${host.os}-${host.cpu}" ]
  }
}

group("host") {
  testonly = true
  deps = [
    ":host-tests-${host_os}-${host_cpu}",
  ]
}
