# Copyright 2021 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/android/rules.gni") template("test_resources") { jinja_template_resources(target_name) { forward_variables_from(invoker, "*") testonly = true variables = [ "resource_name=$resource_name" ] res_dir = "java/res_template" resources = [ "java/res_template/values/values.xml" ] } } template("generate_dummy_android_library") { # No underscores to avoid crbug.com/908819. _generate_java_source_target_name = "${target_name}generatejavasource" jinja_template(_generate_java_source_target_name) { testonly = true input = "java/src/org/chromium/build/classpath_order/Dummy.java.jinja2" output = "$target_gen_dir/java/src/org/chromium/build/classpath_order/${invoker.class_name}.java" variables = [ "class_name=${invoker.class_name}" ] } android_library(target_name) { forward_variables_from(invoker, "*") if (!defined(invoker.deps)) { deps = [] } sources = get_target_outputs(":${_generate_java_source_target_name}") deps += [ ":${_generate_java_source_target_name}" ] } } # Test that classpath order keeps resources accessible when multiple targets generate # resources for the same package. Specifically, test that an android_library precedes # its dependencies regardless of the relative lexographic order. test_resources("a1_dependency_resources") { resource_name = "a1_dependency_resource" } generate_dummy_android_library("a1_dependency_java") { testonly = true class_name = "A1Dependency" resources_package = "org.chromium.build.classpath_order.test1" deps = [ ":a1_dependency_resources" ] } test_resources("z1_master_resources") { resource_name = "z1_master_resource" deps = [ ":a1_dependency_resources" ] } generate_dummy_android_library("z1_master_java") { testonly = true class_name = "Z1Master" resources_package = "org.chromium.build.classpath_order.test1" deps = [ ":a1_dependency_java", ":z1_master_resources", ] } test_resources("z2_dependency_resources") { resource_name = "z2_dependency_resource" } generate_dummy_android_library("z2_dependency_java") { testonly = true class_name = "Z2Dependency" resources_package = "org.chromium.build.classpath_order.test2" deps = [ ":z2_dependency_resources" ] } test_resources("a2_master_resources") { resource_name = "a2_master_resource" deps = [ ":z2_dependency_resources" ] } generate_dummy_android_library("a2_master_java") { testonly = true class_name = "A2Master" resources_package = "org.chromium.build.classpath_order.test2" deps = [ ":a2_master_resources", ":z2_dependency_java", ] } java_library("junit_tests") { bypass_platform_checks = true testonly = true sources = [ "java/src/org/chromium/build/classpath_order/ClassPathOrderTest.java" ] deps = [ ":a1_dependency_java", ":a2_master_java", ":z1_master_java", ":z2_dependency_java", "//testing/android/junit:junit_test_support", "//third_party/android_deps:robolectric_all_java", "//third_party/android_support_test_runner:runner_java", "//third_party/androidx:androidx_test_runner_java", "//third_party/junit", ] }