aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java77
2 files changed, 81 insertions, 1 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
index 3d4709778a..57a6ac45db 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
@@ -19,6 +19,8 @@ import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
+import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryFunction;
+import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryRule;
import com.google.devtools.build.lib.bazel.rules.android.AndroidSdkRepositoryFunction;
import com.google.devtools.build.lib.bazel.rules.android.AndroidSdkRepositoryRule;
import com.google.devtools.build.lib.flags.InvocationPolicyEnforcer;
@@ -123,7 +125,8 @@ public abstract class AnalysisMock extends LoadingMock {
RepositoryFunction localRepositoryFunction = new LocalRepositoryFunction();
ImmutableMap<String, RepositoryFunction> repositoryHandlers = ImmutableMap.of(
LocalRepositoryRule.NAME, localRepositoryFunction,
- AndroidSdkRepositoryRule.NAME, new AndroidSdkRepositoryFunction());
+ AndroidSdkRepositoryRule.NAME, new AndroidSdkRepositoryFunction(),
+ AndroidNdkRepositoryRule.NAME, new AndroidNdkRepositoryFunction());
return ImmutableMap.of(
SkyFunctions.REPOSITORY_DIRECTORY,
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
new file mode 100644
index 0000000000..b27efd7fc3
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java
@@ -0,0 +1,77 @@
+// Copyright 2017 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.bazel.rules.android;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.common.collect.ImmutableList;
+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.TestRuleClassProvider;
+import com.google.devtools.build.lib.vfs.FileSystemUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Tests for {@link AndroidNdkRepositoryTest}. */
+@RunWith(JUnit4.class)
+public class AndroidNdkRepositoryTest extends BuildViewTestCase {
+ @Override
+ protected ConfiguredRuleClassProvider getRuleClassProvider() {
+ ConfiguredRuleClassProvider.Builder builder = new ConfiguredRuleClassProvider.Builder();
+ TestRuleClassProvider.addStandardRules(builder);
+ return builder.addRuleDefinition(new AndroidNdkRepositoryRule()).build();
+ }
+
+ @Before
+ public void setup() throws Exception {
+ scratch.file(
+ "/ndk/source.properties",
+ "Pkg.Desc = Android NDK",
+ "Pkg.Revision = 13.1.3345770");
+ }
+
+ private void scratchPlatformsDirectories(String arch, int... apiLevels) throws Exception {
+ for (int apiLevel : apiLevels) {
+ scratch.dir("/ndk/platforms/android-" + apiLevel);
+ scratch.file(
+ String.format("/ndk/platforms/android-%s/%s/usr/lib/libandroid.so", apiLevel, arch));
+ }
+ }
+
+ @Test
+ public void testApiLevelHighestVersionDetection() throws Exception {
+ scratchPlatformsDirectories("arch-x86", 19, 20, 22, 24);
+ FileSystemUtils.appendIsoLatin1(
+ scratch.resolve("WORKSPACE"),
+ "android_ndk_repository(",
+ " name = 'androidndk',",
+ " path = '/ndk',",
+ ")");
+ invalidatePackages();
+
+ ImmutableList<Artifact> x86ClangHighestApiLevelFilesToRun =
+ getConfiguredTarget("@androidndk//:x86-clang3.8-gnu-libstdcpp-all_files")
+ .getProvider(FilesToRunProvider.class).getFilesToRun();
+ assertThat(artifactsToStrings(x86ClangHighestApiLevelFilesToRun))
+ .contains(
+ "src external/androidndk/ndk/platforms/android-24/arch-x86/usr/lib/libandroid.so");
+ assertThat(artifactsToStrings(x86ClangHighestApiLevelFilesToRun))
+ .doesNotContain(
+ "src external/androidndk/ndk/platforms/android-22/arch-x86/usr/lib/libandroid.so");
+ }
+}