// This is a relaxed JSON format, you can have comment in it.
// This is a list of configuration for the bazel-tests job.
[
    {
        // This is a configuration that have 3 subconfigurations: linux, ubuntu and darwin
        // A job configuration special keys are:
        //   node -> indicate a node label to run the configuration on
        //   variation -> an extra content to the bazel version
        "configurations": [
            {
                "node": "linux-x86_64",
                "variation": ""
            },
            {
                "node": "ubuntu_16.04-x86_64",
                "variation": ""
            }
        ],
        // And specify the parameters for these configurations, which can be:
        //   configure: list of configuration step to run before bazel
        //   tests: tests to execute, default to ["//..."]
        //   targets: targets to build, default to ["//..."]
        //   test_tag_filters: tag to filter test (-noci and -manual are automatically added)
        //   build_tag_filters: tag to filter target to build
        //   test_opts: test options
        //   build_opts: build options
        "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": []
        }
    }, {
        "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": ["//src/test/shell/bazel:bazel_windows_example_test"],
            "targets": []
        }
    }
]
