diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLocalTestRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLocalTestRule.java index a31b93d528b5e1..87e636cff03297 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLocalTestRule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLocalTestRule.java @@ -93,14 +93,15 @@ public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment envi } @Override - public Metadata getMetadata() { + public RuleDefinition.Metadata getMetadata() { return RuleDefinition.Metadata.builder() .name("android_local_test") .type(RuleClassType.TEST) .ancestors( AndroidLocalTestBaseRule.class, BaseJavaBinaryRule.class, - BaseRuleClasses.TestBaseRule.class) + BaseRuleClasses.TestBaseRule.class, + BazelSdkToolchainRule.class) .factoryClass(BazelAndroidLocalTest.class) .build(); } diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLocalTestTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLocalTestTest.java index 41a6cfaeb08b8f..eba3a34429ec51 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLocalTestTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLocalTestTest.java @@ -34,13 +34,13 @@ public static class WithoutPlatforms extends BazelAndroidLocalTestTest {} // TODO(b/161709111): With platforms, all tests fail with // "no attribute `$android_sdk_toolchain_type`" on AspectAwareAttributeMapper. /** Use platform-based toolchain resolution. */ - /* @RunWith(JUnit4.class) - public static class WithPlatforms extends GoogleAndroidLocalTestTest { + @RunWith(JUnit4.class) + public static class WithPlatforms extends BazelAndroidLocalTestTest { @Override protected boolean platformBasedToolchains() { return true; } - } */ + } @Before @Override diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java index cc7268514b3c81..bd875b0c54b80e 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AarImportTest.java @@ -607,7 +607,7 @@ public void testFailsWithoutAndroidSdk() throws Exception { checkError( "aar", "aar", - platformBasedToolchains() + platformBasedToolchains() // Error changes based on the flag used ? "resolved to target //sdk:sdk, but that target does not provide ToolchainInfo" : "No Android SDK found. Use the --android_sdk command line option to specify one.", "aar_import(", diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java index 91241c88b23bdd..4f521aa7ab3a6f 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java @@ -214,39 +214,36 @@ public void setup() throws Exception { "java/android/res/values/strings.xml", "Hello Android!"); scratch.file("java/android/A.java", "package android; public class A {};"); - if (platformBasedToolchains()) { - scratch.file( - "java/android/platforms/BUILD", - "platform(", - " name = 'x86',", - " parents = ['" + TestConstants.CONSTRAINTS_PACKAGE_ROOT + "android:armeabi-v7a'],", - " constraint_values = ['" + TestConstants.CONSTRAINTS_PACKAGE_ROOT + "cpu:x86_32'],", - ")", - "platform(", - " name = 'armeabi-v7a',", - " parents = ['" + TestConstants.CONSTRAINTS_PACKAGE_ROOT + "android:armeabi-v7a'],", - " constraint_values = ['" + TestConstants.CONSTRAINTS_PACKAGE_ROOT + "cpu:armv7'],", - ")"); - scratch.file( - "/workspace/platform_mappings", - "platforms:", - " //java/android/platforms:armeabi-v7a", - " --cpu=armeabi-v7a", - " --android_cpu=armeabi-v7a", - " --crosstool_top=//android/crosstool:everything", - " //java/android/platforms:x86", - " --cpu=x86", - " --android_cpu=x86", - " --crosstool_top=//android/crosstool:everything", - "flags:", - " --crosstool_top=//android/crosstool:everything", - " --cpu=armeabi-v7a", - " //java/android/platforms:armv7", - " --crosstool_top=//android/crosstool:everything", - " --cpu=x86", - " //java/android/platforms:x86"); - invalidatePackages(false); - } + scratch.file( + "java/android/platforms/BUILD", + "platform(", + " name = 'x86',", + " parents = ['" + TestConstants.CONSTRAINTS_PACKAGE_ROOT + "android:armeabi-v7a'],", + " constraint_values = ['" + TestConstants.CONSTRAINTS_PACKAGE_ROOT + "cpu:x86_32'],", + ")", + "platform(", + " name = 'armeabi-v7a',", + " parents = ['" + TestConstants.CONSTRAINTS_PACKAGE_ROOT + "android:armeabi-v7a'],", + " constraint_values = ['" + TestConstants.CONSTRAINTS_PACKAGE_ROOT + "cpu:armv7'],", + ")"); + scratch.file( + "/workspace/platform_mappings", + "platforms:", + " //java/android/platforms:armeabi-v7a", + " --cpu=armeabi-v7a", + " --android_cpu=armeabi-v7a", + " --crosstool_top=//android/crosstool:everything", + " //java/android/platforms:x86", + " --cpu=x86", + " --android_cpu=x86", + " --crosstool_top=//android/crosstool:everything", + "flags:", + " --crosstool_top=//android/crosstool:everything", + " --cpu=armeabi-v7a", + " //java/android/platforms:armv7", + " --crosstool_top=//android/crosstool:everything", + " --cpu=x86", + " //java/android/platforms:x86"); setBuildLanguageOptions("--experimental_google_legacy_api"); } diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java index a44a7a7a512d30..9ed254d4cc02fe 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java @@ -86,6 +86,7 @@ protected void useConfiguration(ImmutableMap starlarkOptions, St starlarkOptions, ImmutableList.builder() .add((Object[]) args) + .add("--noincompatible_enable_android_toolchain_resolution") .add("--noincompatible_enable_cc_toolchain_resolution") .build() .toArray(new String[0])); @@ -113,6 +114,7 @@ protected void useConfiguration(ImmutableMap starlarkOptions, St String.format(" toolchain = '%s',", sdkLabel), ")"); fullArgs.add("--extra_toolchains=//legacy_to_platform_sdk:custom_sdk_toolchain"); + fullArgs.add(arg); } else { fullArgs.add(arg); } diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingV2Test.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingV2Test.java index bcb616cb199678..0fe5cd0d875241 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingV2Test.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingV2Test.java @@ -1163,12 +1163,6 @@ public void dataBinding_androidLocalTest_dataBindingDisabled_doesNotUseDataBindi writeDataBindingFiles(); writeNonDataBindingLocalTestFiles(); - if (platformBasedToolchains()) { - // TODO(b/161709111): With platforms, the below fails with - // "no attribute `$android_sdk_toolchain_type`" on AspectAwareAttributeMapper. - return; - } - ConfiguredTarget testTarget = getConfiguredTarget("//javatests/android/test:databinding_enabled_test"); Set allArtifacts = actionsTestUtil().artifactClosureOf(getFilesToBuild(testTarget)); @@ -1200,12 +1194,6 @@ public void dataBinding_androidLocalTest_dataBindingEnabled_usesDataBindingFlags writeDataBindingFiles(); writeDataBindingLocalTestFiles(); - if (platformBasedToolchains()) { - // TODO(b/161709111): With platforms, the below fails with - // "no attribute `$android_sdk_toolchain_type`" on AspectAwareAttributeMapper. - return; - } - ConfiguredTarget testTarget = getConfiguredTarget("//javatests/android/test:databinding_enabled_test"); Set allArtifacts = actionsTestUtil().artifactClosureOf(getFilesToBuild(testTarget)); diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java index d684b7129e4c9f..f9cf6c046adbc3 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java @@ -1935,11 +1935,6 @@ public void aapt2ArtifactGenerationWhenSdkIsDefined() throws Exception { getImplicitOutputArtifact(a, AndroidRuleClasses.ANDROID_LIBRARY_APK)); assertThat(linkAction).isNotNull(); - if (platformBasedToolchains()) { - // TODO(b/161709111): With platform, the call to sdk below produces a NullPointerException. - return; - } - assertThat(linkAction.getInputs().toList()) .containsAtLeast( sdk.get(AndroidSdkProvider.PROVIDER).getAndroidJar(), diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkTest.java index 4fe86fa25bb06c..b08a6a3a4245d3 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkTest.java @@ -338,24 +338,9 @@ public void testAndroidSdkConfigurationField() throws Exception { "load('//:foo_library.bzl', 'foo_library')", "filegroup(name = 'new_sdk')", "foo_library(name = 'lib')"); - if (platformBasedToolchains()) { - // TODO(b/161709111): fails to find a matching Android toolchain. - if (true) { - return; - } - scratch.file( - "platform_toolchain_defs/BUILD", - "toolchain(", - " name = 'new_sdk_toolchain',", - String.format(" toolchain_type = '%s',", TestConstants.ANDROID_TOOLCHAIN_TYPE_LABEL), - "toolchain = '//:new_sdk',", - ")"); - useConfiguration( - "--extra_toolchains=//platform_toolchain_defs:new_sdk_toolchain", - "--android_sdk=//:new_sdk"); - } else { - useConfiguration("--android_sdk=//:new_sdk"); - } + + // This test doesn't touch platforms, it directly reads the --android_sdk flag value. + useConfiguration("--android_sdk=//:new_sdk"); ConfiguredTarget ct = getConfiguredTarget("//:lib"); assertThat(getMyInfoFromTarget(ct).getValue("foo")) diff --git a/src/test/shell/bazel/android/android_helper.sh b/src/test/shell/bazel/android/android_helper.sh index af5d762e0a9020..a8b942d506dd58 100755 --- a/src/test/shell/bazel/android/android_helper.sh +++ b/src/test/shell/bazel/android/android_helper.sh @@ -115,7 +115,6 @@ function resolve_android_toolchains() { echo "This test uses platform-based Android toolchain resolution." add_to_bazelrc "build --incompatible_enable_android_toolchain_resolution" add_to_bazelrc "build --incompatible_enable_cc_toolchain_resolution" - add_to_bazelrc "build --platform_mappings=test_android_platforms/mappings" add_to_bazelrc "build --platforms=//test_android_platforms:simple" else echo "This test uses legacy Android toolchains." diff --git a/src/test/shell/bazel/android/android_local_test_integration_test.sh b/src/test/shell/bazel/android/android_local_test_integration_test.sh index bb12631064b96d..0c5cf553450e01 100755 --- a/src/test/shell/bazel/android/android_local_test_integration_test.sh +++ b/src/test/shell/bazel/android/android_local_test_integration_test.sh @@ -34,12 +34,7 @@ fail_if_no_android_sdk source "${CURRENT_DIR}/../../integration_test_setup.sh" \ || { echo "integration_test_setup.sh not found!" >&2; exit 1; } -if [[ "$1" = '--with_platforms' ]]; then - # TODO(b/161709111): With platforms, the below fails with - # "no attribute `$android_sdk_toolchain_type`" on AspectAwareAttributeMapper. - echo "android_local_test_integration_test.sh does not support --with_platforms!" >&2 - exit 0 -fi +resolve_android_toolchains "$1" function setup_android_local_test_env() { mkdir -p java/com/bin/res/values diff --git a/src/test/shell/bazel/android/android_sdk_integration_test.sh b/src/test/shell/bazel/android/android_sdk_integration_test.sh index 03ebf6fa32e1c1..3b8326808d761e 100755 --- a/src/test/shell/bazel/android/android_sdk_integration_test.sh +++ b/src/test/shell/bazel/android/android_sdk_integration_test.sh @@ -33,6 +33,8 @@ fail_if_no_android_sdk source "${CURRENT_DIR}/../../integration_test_setup.sh" \ || { echo "integration_test_setup.sh not found!" >&2; exit 1; } +resolve_android_toolchains "$1" + function test_android_sdk_repository_path_from_environment() { create_new_workspace setup_android_sdk_support @@ -51,6 +53,7 @@ EOF function test_android_sdk_repository_no_path_or_android_home() { create_new_workspace + setup_android_platforms cat >> $(create_workspace_with_default_repos WORKSPACE) <> $(create_workspace_with_default_repos WORKSPACE) <> WORKSPACE < test_android_platforms/mappings <