tests_dependencies = [
    '//infer/lib/java/android:android',
    '//dependencies/java/guava:guava',
    '//dependencies/java/junit:hamcrest',
    '//dependencies/java/jackson:jackson',
    '//dependencies/java/jsr-305:jsr-305',
    '//dependencies/java/junit:junit',
    '//dependencies/java/opencsv:opencsv',
    '//infer/tests/utils:utils',
    '//infer/tests/codetoanalyze/java/checkers:checkers',
    '//infer/tests/codetoanalyze/java/eradicate:eradicate',
    '//infer/tests/codetoanalyze/java/infer:infer',
    '//infer/tests/codetoanalyze/java/tracing:tracing',
]

integration_tests = [
    '//infer/tests:integration_tests',
    '//infer/tests:objc_tests',
    '//infer/tests:c_tests',
    '//infer/tests:cpp_tests',
    '//infer/tests:objcpp_tests',
]

# ############### ObjC tests endtoend ########################
objc_test_sources = glob(['objc/**/*.java'])
objc_endtoend_test_deps = []
for test_source in objc_test_sources:
    target_name = test_source.replace("/", "_")[:-len(".java")]
    objc_endtoend_test_deps.append(target_name)

    java_test(
        name=target_name,
        srcs=[test_source],
        deps=tests_dependencies,
        visibility=integration_tests,
        source='7',
        target='7',
    )

java_test(
    name='objc_endtoend_tests',
    deps=[':' + x for x in objc_endtoend_test_deps],
    visibility=integration_tests,
)

# ############### Cpp endtoend tests  ########################
objc_test_sources = glob(['cpp/**/*.java'])
objc_endtoend_test_deps = []
for test_source in objc_test_sources:
    target_name = test_source.replace("/", "_")[:-len(".java")]
    objc_endtoend_test_deps.append(target_name)

    java_test(
        name=target_name,
        srcs=[test_source],
        deps=tests_dependencies,
        visibility=integration_tests,
        source='7',
        target='7',
    )

java_test(
    name='cpp_endtoend_tests',
    deps=[':' + x for x in objc_endtoend_test_deps],
    visibility=integration_tests,
)

# ############### ObjCpp endtoend tests ########################
objc_test_sources = glob(['objcpp/**/*.java'])
objc_endtoend_test_deps = []
for test_source in objc_test_sources:
    target_name = test_source.replace("/", "_")[:-len(".java")]
    objc_endtoend_test_deps.append(target_name)

    java_test(
        name=target_name,
        srcs=[test_source],
        deps=tests_dependencies,
        visibility=integration_tests,
        source='7',
        target='7',
    )

java_test(
    name='objcpp_endtoend_tests',
    deps=[':' + x for x in objc_endtoend_test_deps],
    visibility=integration_tests,
)

# ############### Java endtoend tests ########################
java_test(
    name='java_endtoend_tests',
    deps=[
        '//infer/tests/endtoend/java/infer:infer',
        '//infer/tests/endtoend/java/eradicate:eradicate',
        '//infer/tests/endtoend/java/checkers:checkers',
        '//infer/tests/endtoend/java/harness:harness',
        '//infer/tests/endtoend/java/tracing:tracing',
        '//infer/tests/endtoend/java/comparison:comparison',
    ],
    visibility=integration_tests,
)