aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar Adam Michael <ajmichael@google.com>2017-02-28 22:32:01 +0000
committerGravatar Yue Gan <yueg@google.com>2017-03-01 12:34:32 +0000
commit8c00f398d7be863c4f502bde3f5d282b1e18f504 (patch)
treeec5efc23afbbc2c38af1bb53ea059d1f08f11a4e /src/test
parent2f111920a99368cbe8d2dd7f1a5d586037dbc686 (diff)
Improve handling of unknown NDK revisions in android_ndk_repository.
-- PiperOrigin-RevId: 148816635 MOS_MIGRATED_REVID=148816635
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java76
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstoolsTest.java16
2 files changed, 86 insertions, 6 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 b27efd7fc3..6fc9fbf831 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
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.testutil.MoreAsserts;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import org.junit.Before;
@@ -74,4 +75,79 @@ public class AndroidNdkRepositoryTest extends BuildViewTestCase {
.doesNotContain(
"src external/androidndk/ndk/platforms/android-22/arch-x86/usr/lib/libandroid.so");
}
+
+ @Test
+ public void testInvalidNdkReleaseTxt() throws Exception {
+ scratchPlatformsDirectories("arch-x86", 24);
+ FileSystemUtils.appendIsoLatin1(
+ scratch.resolve("WORKSPACE"),
+ "android_ndk_repository(",
+ " name = 'androidndk',",
+ " path = '/ndk',",
+ " api_level = 24,",
+ ")");
+
+ scratch.deleteFile("/ndk/source.properties");
+ scratch.file("/ndk/RELEASE.TXT", "not a valid release string");
+
+ invalidatePackages();
+
+ assertThat(getConfiguredTarget("@androidndk//:files")).isNotNull();
+ MoreAsserts.assertContainsEvent(
+ eventCollector,
+ "The revision of the Android NDK referenced by android_ndk_repository rule 'androidndk' "
+ + "could not be determined (the revision string found is 'not a valid release string')."
+ + " Defaulting to revision 13.");
+ }
+
+ @Test
+ public void testInvalidNdkSourceProperties() throws Exception {
+ scratchPlatformsDirectories("arch-x86", 24);
+ FileSystemUtils.appendIsoLatin1(
+ scratch.resolve("WORKSPACE"),
+ "android_ndk_repository(",
+ " name = 'androidndk',",
+ " path = '/ndk',",
+ " api_level = 24,",
+ ")");
+
+ scratch.overwriteFile(
+ "/ndk/source.properties",
+ "Pkg.Desc = Android NDK",
+ "Pkg.Revision = invalid package revision");
+
+ invalidatePackages();
+
+ assertThat(getConfiguredTarget("@androidndk//:files")).isNotNull();
+ MoreAsserts.assertContainsEvent(
+ eventCollector,
+ "The revision of the Android NDK referenced by android_ndk_repository rule 'androidndk' "
+ + "could not be determined (the revision string found is 'invalid package revision'). "
+ + "Defaulting to revision 13.");
+ }
+
+ @Test
+ public void testUnsupportedNdkVersion() throws Exception {
+ scratchPlatformsDirectories("arch-x86", 24);
+ FileSystemUtils.appendIsoLatin1(
+ scratch.resolve("WORKSPACE"),
+ "android_ndk_repository(",
+ " name = 'androidndk',",
+ " path = '/ndk',",
+ " api_level = 24,",
+ ")");
+
+ scratch.overwriteFile(
+ "/ndk/source.properties",
+ "Pkg.Desc = Android NDK",
+ "Pkg.Revision = 14.0.3675639-beta2");
+ invalidatePackages();
+
+ assertThat(getConfiguredTarget("@androidndk//:files")).isNotNull();
+ MoreAsserts.assertContainsEvent(
+ eventCollector,
+ "The major revision of the Android NDK referenced by android_ndk_repository rule "
+ + "'androidndk' is 14. The major revisions supported by Bazel are [10, 11, 12, 13]. "
+ + "Defaulting to revision 13.");
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstoolsTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstoolsTest.java
index 09c369904d..c2d85ff144 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstoolsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstoolsTest.java
@@ -73,6 +73,10 @@ public class AndroidNdkCrosstoolsTest {
this.ndkDirectoriesFilename = ndkDirectoriesFilename;
}
+ NdkMajorRevision getNdkMajorRevision() {
+ return AndroidNdkCrosstools.KNOWN_NDK_MAJOR_REVISIONS.get(ndkRelease.majorRevision);
+ }
+
ImmutableSet<String> getNdkFiles() throws IOException {
String ndkFilesFileContent =
ResourceFileLoader.loadResource(AndroidNdkCrosstoolsTest.class, ndkFilesFilename);
@@ -134,7 +138,7 @@ public class AndroidNdkCrosstoolsTest {
for (StlImpl ndkStlImpl : StlImpls.get(ndkPaths)) {
// Protos are immutable, so this can be shared between tests.
CrosstoolRelease crosstool =
- AndroidNdkCrosstools.create(params.ndkRelease, ndkPaths, ndkStlImpl, HOST_PLATFORM);
+ params.getNdkMajorRevision().crosstoolRelease(ndkPaths, ndkStlImpl, HOST_PLATFORM);
crosstools.add(crosstool);
stlFilegroupsBuilder.putAll(ndkStlImpl.getFilegroupNamesAndFilegroupFileGlobPatterns());
}
@@ -144,18 +148,18 @@ public class AndroidNdkCrosstoolsTest {
ndkFiles = params.getNdkFiles();
ndkDirectories = params.getNdkDirectories();
}
-
+
@Test
public void testPathsExist() throws Exception {
for (CrosstoolRelease crosstool : crosstoolReleases) {
for (CToolchain toolchain : crosstool.getToolchainList()) {
-
+
// Test that all tool paths exist.
for (ToolPath toolpath : toolchain.getToolPathList()) {
assertThat(ndkFiles).contains(toolpath.getPath());
}
-
+
// Test that all cxx_builtin_include_directory paths exist.
for (String includeDirectory : toolchain.getCxxBuiltinIncludeDirectoryList()) {
// Special case for builtin_sysroot.
@@ -164,13 +168,13 @@ public class AndroidNdkCrosstoolsTest {
assertThat(ndkDirectories).contains(path);
}
}
-
+
// Test that the builtin_sysroot path exists.
{
String builtinSysroot = NdkPaths.stripRepositoryPrefix(toolchain.getBuiltinSysroot());
assertThat(ndkDirectories).contains(builtinSysroot);
}
-
+
// Test that all include directories added through unfiltered_cxx_flag exist.
for (String flag : toolchain.getUnfilteredCxxFlagList()) {
if (!flag.equals("-isystem")) {