aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2017-02-13 14:19:07 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2017-02-13 14:21:36 +0000
commite49886c55a7e2cfd6dd1fc52b037dc2d5a6ca019 (patch)
treeb2f2b345a4667e8a0952ac75839ba8576f545242
parent76b6685b9cf8b734839694094938cc6d00dd22a7 (diff)
*** Reason for rollback *** This breaks Bazel CI: http://ci.bazel.io/job/bazel-tests/BAZEL_VERSION=HEAD,PLATFORM_NAME=linux-x86_64/556/console *** Original change description *** Make android_sdk_repository fail if api_level requested is not installed. This could have prevented https://github.com/bazelbuild/bazel/issues/2500. -- PiperOrigin-RevId: 147338519 MOS_MIGRATED_REVID=147338519
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java22
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java19
2 files changed, 4 insertions, 37 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
index e06a8933d5..4fa4f8f859 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
@@ -114,31 +114,17 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction {
Transience.PERSISTENT);
}
- Integer defaultApiLevel;
+ String defaultApiLevel;
if (attributes.isAttributeValueExplicitlySpecified("api_level")) {
try {
- defaultApiLevel = attributes.get("api_level", Type.INTEGER);
+ defaultApiLevel = attributes.get("api_level", Type.INTEGER).toString();
} catch (EvalException e) {
throw new RepositoryFunctionException(e, Transience.PERSISTENT);
}
- if (!apiLevels.contains(defaultApiLevel)) {
- throw new RepositoryFunctionException(
- new EvalException(
- rule.getLocation(),
- String.format(
- "Android SDK api level %s was requested but it is not installed in the Android "
- + "SDK at %s. The api levels found were %s. Please choose an available api "
- + "level or install api level %s from the Android SDK Manager.",
- defaultApiLevel,
- androidSdkPath,
- apiLevels.toString(),
- defaultApiLevel)),
- Transience.PERSISTENT);
- }
} else {
// If the api_level attribute is not explicitly set, we select the highest api level that is
// available in the SDK.
- defaultApiLevel = apiLevels.first();
+ defaultApiLevel = String.valueOf(apiLevels.first());
}
String buildToolsDirectory;
@@ -203,7 +189,7 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction {
.replace("%build_tools_version%", buildToolsVersion)
.replace("%build_tools_directory%", buildToolsDirectory)
.replace("%api_levels%", Iterables.toString(apiLevels))
- .replace("%default_api_level%", String.valueOf(defaultApiLevel))
+ .replace("%default_api_level%", defaultApiLevel)
.replace("%system_image_dirs%", systemImageDirsList);
// All local maven repositories that are shipped in the Android SDK.
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
index 6024b1f256..0f33d2dd2f 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.bazel.rules.android;
import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.fail;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
@@ -23,7 +22,6 @@ import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.packages.BuildFileNotFoundException;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import org.junit.Before;
@@ -44,7 +42,6 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase {
@Before
public void setup() throws Exception {
scratch.setWorkingDir("/sdk");
- scratch.dir("platforms/android-24");
scratch.dir("platforms/android-25");
scratch.file("extras/google/m2repository/com/google/android/foo/1.0.0/foo.pom",
"<project>",
@@ -130,20 +127,4 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase {
.getFilesToRun())
.isEmpty();
}
-
- @Test
- public void testMissingApiLevel() throws Exception {
- scratch.deleteFile("/sdk/platforms/android-25");
- try {
- invalidatePackages();
- getTarget("@androidsdk//:files");
- fail("android_sdk_repository should have failed due to missing SDK api level.");
- } catch (BuildFileNotFoundException e) {
- assertThat(e.getMessage())
- .contains(
- "Android SDK api level 25 was requested but it is not installed in the Android SDK "
- + "at /sdk. The api levels found were [24]. Please choose an available api level "
- + "or install api level 25 from the Android SDK Manager.");
- }
- }
}