# Copyright 2018 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("//build/board.gni")

### Individual test environments ###

qemu_env = {
  dimensions = {
    device_type = "QEMU"
  }
}

astro_env = {
  dimensions = {
    device_type = "Astro"
  }
}

sherlock_env = {
  dimensions = {
    device_type = "Sherlock"
  }
}

nuc_env = {
  dimensions = {
    device_type = "Intel NUC Kit NUC7i5DNHE"
  }
}

vim2_env = {
  dimensions = {
    device_type = "Khadas Vim2 Max"
  }
}

linux_env = {
  dimensions = {
    os = "Linux"
    cpu = current_cpu
  }
}

mac_env = {
  dimensions = {
    os = "Mac"
    cpu = current_cpu
  }

  # When running tests for a mac build, we only wish to run mac tests; we attach
  # the "mac" tag in that case to filter out other tests.
  tags = [ "mac" ]
}

if (host_os == "linux") {
  host_env = linux_env
} else if (host_os == "mac") {
  host_env = mac_env
}

### Select environment lists ###

# The basic, freely usable test environments supported by the infrastructure.
basic_envs = []
if (board_name == "pc") {
  basic_envs += [
    qemu_env,
    nuc_env,
  ]
} else if (board_name == "qemu-arm64" || board_name == "qemu-x64") {
  basic_envs += [ qemu_env ]
}
