diff options
author | 2017-02-28 22:32:01 +0000 | |
---|---|---|
committer | 2017-03-01 12:34:32 +0000 | |
commit | 8c00f398d7be863c4f502bde3f5d282b1e18f504 (patch) | |
tree | ec5efc23afbbc2c38af1bb53ea059d1f08f11a4e /src/test | |
parent | 2f111920a99368cbe8d2dd7f1a5d586037dbc686 (diff) |
Improve handling of unknown NDK revisions in android_ndk_repository.
--
PiperOrigin-RevId: 148816635
MOS_MIGRATED_REVID=148816635
Diffstat (limited to 'src/test')
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")) { |