diff options
author | ajmichael <ajmichael@google.com> | 2018-02-12 12:29:14 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-12 12:30:43 -0800 |
commit | 3ea6a557854530c36f170e7a8d868b51663939d1 (patch) | |
tree | 768d9299107b2da4db22a6eb83b44cacb904fbfd /src/main/java/com/google/devtools/build/lib | |
parent | 642c436ddc66a487b6f644c066ba14b63714aa6c (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.java | 28 |
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; |