aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2017-05-23 23:43:00 +0200
committerGravatar Irina Iancu <elenairina@google.com>2017-05-24 14:37:38 +0200
commit0271796ab5f51e8da43ca5582c76d81843c54275 (patch)
tree01fd83313574e9b2a07463c604f15a9c692e06ba /src/test/java/com/google/devtools/build/lib
parent55d74ab5a25a242b7cdf00eab19c910a0f5acadc (diff)
Improve error messages for malformed Android SDK/NDK.
Currently, if the user has an SDK/NDK that is missing required directories, we print out an InconsistentFileSystemException. This CL will give a better error, indicating which directory is missing (or is not a directory). Implementation is roughly taken from NewLocalRepositoryFunction. Followup to https://github.com/bazelbuild/bazel/issues/2739. RELNOTES: None PiperOrigin-RevId: 156913532
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java24
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java44
2 files changed, 68 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java
index 00853edda0..f9d41460eb 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java
@@ -14,6 +14,7 @@
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;
@@ -22,6 +23,7 @@ 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.AttributeContainer;
+import com.google.devtools.build.lib.packages.BuildFileNotFoundException;
import com.google.devtools.build.lib.testutil.MoreAsserts;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -177,4 +179,26 @@ public class AndroidNdkRepositoryTest extends BuildViewTestCase {
assertThat(attributes.getAttr("hdrs").toString())
.isEqualTo("[@androidndk//:ndk/sources/android/cpufeatures/cpu-features.h]");
}
+
+ @Test
+ public void testMissingPlatformsDirectory() throws Exception {
+ FileSystemUtils.appendIsoLatin1(
+ scratch.resolve("WORKSPACE"),
+ "android_ndk_repository(",
+ " name = 'androidndk',",
+ " path = '/ndk',",
+ ")");
+ try {
+ // Invalidating configs re-runs AndroidNdkRepositoryFunction which results in a
+ // RuntimeException. This way we can catch a checked exception instead.
+ invalidatePackages(false);
+ getTarget("@androidndk//:files");
+ fail("android_ndk_repository should have failed due to missing NDK platforms dir.");
+ } catch (BuildFileNotFoundException e) {
+ assertThat(e.getMessage())
+ .contains(
+ "Expected directory at /ndk/platforms but it is not a directory or it does not "
+ + "exist.");
+ }
+ }
}
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 7f90e4297a..1379700a6f 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
@@ -286,4 +286,48 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase {
assertThat(getConfiguredTarget("@androidsdk//:sdk")).isNotNull();
}
+
+ @Test
+ public void testMissingPlatformsDirectory() throws Exception {
+ scratchBuildToolsDirectories("25.0.0");
+ FileSystemUtils.appendIsoLatin1(
+ scratch.resolve("WORKSPACE"),
+ "local_repository(name = 'bazel_tools', path = '/bazel_tools_workspace')",
+ "android_sdk_repository(",
+ " name = 'androidsdk',",
+ " path = '/sdk',",
+ ")");
+ invalidatePackages();
+
+ try {
+ getTarget("@androidsdk//:files");
+ fail("android_sdk_repository should have failed due to missing SDK platforms dir.");
+ } catch (BuildFileNotFoundException e) {
+ assertThat(e.getMessage())
+ .contains("Expected directory at /sdk/platforms but it is not a directory or it does "
+ + "not exist.");
+ }
+ }
+
+ @Test
+ public void testMissingBuildToolsDirectory() throws Exception {
+ scratchPlatformsDirectories(24);
+ FileSystemUtils.appendIsoLatin1(
+ scratch.resolve("WORKSPACE"),
+ "local_repository(name = 'bazel_tools', path = '/bazel_tools_workspace')",
+ "android_sdk_repository(",
+ " name = 'androidsdk',",
+ " path = '/sdk',",
+ ")");
+ invalidatePackages();
+
+ try {
+ getTarget("@androidsdk//:files");
+ fail("android_sdk_repository should have failed due to missing SDK build tools dir.");
+ } catch (BuildFileNotFoundException e) {
+ assertThat(e.getMessage())
+ .contains("Expected directory at /sdk/build-tools but it is not a directory or it does "
+ + "not exist.");
+ }
+ }
}