// Copyright (C) 2011 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package {
    default_visibility: ["//visibility:private"],
}

java_test {
    name: "apache-harmony-tests",
    visibility: [
        "//cts/tests/libcore/luni",
    ],
    hostdex: true,
    srcs: [
        "beans/src/test/java/**/*.java",
        "logging/src/test/java/**/*.java",
        "luni/src/test/java/**/*.java",
        "sql/src/test/java/**/*.java",
        "support/src/test/java/**/*.java",

        "beans/src/test/support/java/**/*.java",
        "logging/src/test/support/java/**/*.java",
        "luni/src/test/support/java/**/*.java",
        "sql/src/test/support/java/**/*.java",
        "support/src/test/support/java/**/*.java",

        "luni/src/test/api/common/**/*.java",
        "luni/src/test/api/unix/**/*.java",
        "luni/src/test/impl/common/**/*.java",
        "luni/src/test/impl/unix/**/*.java",
    ],
    java_resource_dirs: [
        "beans/src/test/resources",
        "logging/src/test/resources",
        "sql/src/test/resources",
        "support/src/test/resources",
    ],
    sdk_version: "none",
    system_modules: "core-all-system-modules",
    libs: [
        "junit",
    ],
    static_libs: [
        "core-tests-support",
    ],
    javacflags: ["-Xmaxwarns 9999999"],
    // Pin java_version until jarjar is certified to support later versions. http://b/72703434
    java_version: "1.8",

    // b/73499927
    errorprone: {
        javacflags: ["-Xep:MissingOverride:OFF"],
    },
}
