aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2018-02-12 12:29:14 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-12 12:30:43 -0800
commit3ea6a557854530c36f170e7a8d868b51663939d1 (patch)
tree768d9299107b2da4db22a6eb83b44cacb904fbfd /src/main/java/com/google/devtools/build/lib
parent642c436ddc66a487b6f644c066ba14b63714aa6c (diff)
Make AndroidInstrumentationInfo createable from Skylark.
This enables writing tests for android_instrumentation_test that mock android_binary using a skylark rule that returns an AndroidInstrumentationInfo. RELNOTES: None PiperOrigin-RevId: 185417182
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationInfo.java28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationInfo.java
index b588861ab5..d5a3fa2ef9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationInfo.java
@@ -13,13 +13,17 @@
// limitations under the License.
package com.google.devtools.build.lib.rules.android;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.packages.NativeProvider;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.syntax.FunctionSignature;
+import com.google.devtools.build.lib.syntax.SkylarkType;
/**
* A provider for targets that create Android instrumentations. Consumed by Android testing rules.
@@ -33,9 +37,31 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
public class AndroidInstrumentationInfo extends NativeInfo {
private static final String SKYLARK_NAME = "AndroidInstrumentationInfo";
+ private static final FunctionSignature.WithValues<Object, SkylarkType> SIGNATURE =
+ FunctionSignature.WithValues.create(
+ FunctionSignature.of(
+ /*numMandatoryPositionals=*/ 0,
+ /*numOptionalPositionals=*/ 0,
+ /*numMandatoryNamedOnly*/ 2,
+ /*starArg=*/ false,
+ /*kwArg=*/ false,
+ "target_apk",
+ "instrumentation_apk"),
+ /*defaultValues=*/ null,
+ /*types=*/ ImmutableList.of(
+ SkylarkType.of(Artifact.class), // target_apk
+ SkylarkType.of(Artifact.class))); // instrumentation_apk
public static final NativeProvider<AndroidInstrumentationInfo> PROVIDER =
new NativeProvider<AndroidInstrumentationInfo>(
- AndroidInstrumentationInfo.class, SKYLARK_NAME) {};
+ AndroidInstrumentationInfo.class, SKYLARK_NAME, SIGNATURE) {
+ @Override
+ protected AndroidInstrumentationInfo createInstanceFromSkylark(
+ Object[] args, Location loc) {
+ return new AndroidInstrumentationInfo(
+ /*targetApk=*/ (Artifact) args[0],
+ /*instrumentationApk=*/ (Artifact) args[1]);
+ }
+ };
private final Artifact targetApk;
private final Artifact instrumentationApk;