// 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": [{
            // TODO(dmarting): MSVC is a misnommer, it should have been called win32
            // (for win32 native binary).
            // TODO(dmarting): really MSVC/Win32 should be a bazel variation, not part of
            // the node.
            "node": "windows-msvc-x86_64",
            "variation": ""
        }, {
            "node": "windows-x86_64",
            "variation": ""
        }],
        "parameters": {
            "build_opts": ["--copt=-w", "--host_copt=-w"],
            "test_tag_filters": ["-no_windows"],
            "tests": [
                "//src/test/py/...",
                "//src/test/java/...",
                "//src/test/cpp/...",
                "//src/test/native:all_tests"
            ],
            "targets": ["//src:bazel"]
        }
    }, {
        "toolchain": "msys",
        "configurations": [{
            // TODO(dmarting): MSVC is a misnommer, it should have been called win32
            // (for win32 native binary).
            // TODO(dmarting): really MSVC/Win32 should be a bazel variation, not part of
            // the node.
            "node": "windows-msvc-x86_64",
            "variation": ""
        }, {
            "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": []
        }
    }
]
