# 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"]
}

### 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 ]
}
