// This is a list of configuration for the bazel-tests job.
// See https://github.com/bazelbuild/continuous-integration/blob/master/docs/owner.md#customizing-a-project.
[
    {
        "configurations": [
            {
                "node": "linux-x86_64",
                "variation": ""
            },
            {
                "node": "ubuntu_16.04-x86_64",
                "variation": ""
            }
        ],
        "parameters": {
            "configure": [
                "echo >>WORKSPACE",
                "cat >>WORKSPACE <<EOF",
                "android_sdk_repository(",
                "    name = \"androidsdk\",",
                "    path = \"${ANDROID_SDK_PATH}\",",
                ")",
                "android_ndk_repository(",
                "    name = \"androidndk\",",
                "    path = \"${ANDROID_NDK_PATH}\",",
                ")",
                "EOF"
            ],
            "tests": [
                "//scripts/...",
                "filter(\"^(?!//src/test/docker).*$\", //src/test/...)",
                "//third_party/ijar/...",
                "//tools/android/..."
            ],
            "targets": []
        }
    }, {
        "configurations": [
            {
                "node": "freebsd-11",
                "variation": ""
            },
            {
                "node": "freebsd-12",
                "variation": ""
            }
        ],
        "parameters": {
            // As configure step, we redo the USES=shebangfix of the devel/bazel
            // port. In other words, we replace every #!-line calling bash by a
            // line containing the correct path to bash on our test machines.
            "configure": [
                "find -E . -type f -iregex '.*(sh|txt|_stub|stub_.*|bazel|get_workspace_status|protobuf_support|_so)' \\",
                "-exec sed -i '' \\",
                "-e '1s|^\\#![[:space:]]*/bin/bash\\([[:space:]]\\)|\\#!/usr/local/bin/bash\\1|' \\",
                "-e '1s|^\\#![[:space:]]*/bin/bash$|\\#!/usr/local/bin/bash|' \\",
                "-e '1s|^\\#![[:space:]]*/usr/bin/env bash\\([[:space:]]\\)|\\#!/usr/local/bin/bash\\1|' \\",
                "-e '1s|^\\#![[:space:]]*/usr/bin/env bash$|\\#!/usr/local/bin/bash|' \\",
                "{} +"
            ],
            "tests": [
                "//src/test/shell/integration/...",
                "let bazel=\"//src/test/shell/bazel/...\" in $bazel - filter(\"all_tests\", $bazel) - filter(\"jdk\", $bazel) - filter(\"maven\", $bazel) - filter(\"android\", $bazel) - filter(\"java\", $bazel) - filter(\"workspace\", $bazel) - filter(\"external\", $bazel) - filter(\"example\", $bazel) - filter(\"skylark_repository\", $bazel) - filter(\"repository_cache\", $bazel)"
            ],
            "targets": []
        }
    }, {
        "node": "darwin-x86_64",
        "variation": "",
        "parameters": {
            "configure": [
                "echo >>WORKSPACE",
                "cat >>WORKSPACE <<EOF",
                "android_sdk_repository(",
                "    name = \"androidsdk\",",
                "    path = \"${ANDROID_SDK_PATH}\",",
                ")",
                "android_ndk_repository(",
                "    name = \"androidndk\",",
                "    path = \"${ANDROID_NDK_PATH}\",",
                ")",
                "EOF"
            ],
            "build_opts": ["--define IPHONE_SDK=1"],
            "tests": [
                "//scripts/...",
                "filter(\"^(?!//src/test/docker).*$\", //src/test/...)",
                "//third_party/ijar/...",
                "//tools/android/..."
            ],
            "targets": []
        }
    }, {
        "toolchain": "msvc",
        "configurations": [{
            "node": "windows-x86_64",
            "variation": ""
        }],
        "parameters": {
            "build_opts": [
                "--copt=-w",
                "--host_copt=-w",
                // TODO(pcloudy):.
                // Remove it after wrapper-less CROSSTOOL becomes default
                "--action_env=NO_MSVC_WRAPPER=1"
            ],
            "test_opts": [
                // TODO(pcloudy): Remove this after TEMP is properly set.
                // A workaround for ASSERT_DEATH in gtest on Windows.
                // When running tests, Bazel doesn't set TEMP,
                // ASSERT_DEATH will try to write to C:/Windows, then fails.
                "--test_env=TEMP"
            ],
            "test_tag_filters": ["-no_windows"],
            "tests": [
                "//src/test/py/...",
                "//src/test/java/...",
                "//src/test/cpp/...",
                "//src/test/native:all_tests",
                "//src/tools/launcher/util/...",
                "//src/test/shell/bazel:bazel_bootstrap_distfile_test",
                "//src/test/shell/bazel:bazel_windows_example_test"
            ],
            "targets": ["//src:bazel"]
        }
    }, {
        "toolchain": "msys",
        "configurations": [{
            "node": "windows-x86_64",
            "variation": ""
        }],
        "parameters": {
            "build_opts": ["--cpu=x64_windows_msys", "--host_cpu=x64_windows_msys"],
            "test_tag_filters": ["-no_windows"],
            "tests": [],
            "targets": ["//examples/cpp:hello-world"]
        }
    }
]
