aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Daniel Wagner-Hall <danielwh@google.com>2015-05-07 18:54:03 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-05-08 16:59:20 +0000
commit3bf3bbe8ca0c8b54ef22f5eb3d944017a6e8d1cd (patch)
tree6749d65428c50f7db86c2ce8cc2df88ac554357c /src/main/java/com
parent2ef5ec5116341362294b5c3407748b6387e76093 (diff)
Add plugin support to experimental_ios_test
-- MOS_MIGRATED_REVID=93051778
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalIosTestRule.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java10
2 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalIosTestRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalIosTestRule.java
index 09602971cd..f6cb640f98 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalIosTestRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalIosTestRule.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.rules.objc;
import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.Type.LABEL;
+import static com.google.devtools.build.lib.packages.Type.LABEL_LIST;
import com.google.devtools.build.lib.Constants;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
@@ -24,6 +25,7 @@ import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
+import com.google.devtools.build.lib.util.FileType;
/**
* Rule definition for {@code experimental_ios_test} rule in Bazel.
@@ -50,6 +52,11 @@ public final class ExperimentalIosTestRule implements RuleDefinition {
.allowedFileTypes()
.allowedRuleClasses(Constants.IOS_DEVICE_RULE_CLASSES)
.value(env.getLabel("//tools/objc/sim_devices:default")))
+ /* <!-- #BLAZE_RULE(experimental_ios_test).ATTRIBUTE(plugins) -->
+ Plugins to pass to the test runner.
+ ${SYNOPSIS}
+ <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
+ .add(attr("plugins", LABEL_LIST).allowedFileTypes(FileType.of("_deploy.jar")))
.add(attr("$test_template", LABEL)
.value(env.getLabel("//tools/objc:ios_test.sh.bazel_template")))
.add(attr("$test_runner", LABEL).value(env.getLabel("//tools/objc:testrunner")))
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
index 173c781f49..89c93d7729 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
@@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.FileProvider;
+import com.google.devtools.build.lib.analysis.PrerequisiteArtifacts;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.Runfiles;
@@ -69,6 +70,7 @@ class TestSupport {
.add(Substitution.of("%(xctest_app_name)s", baseNameWithoutIpa(xctestIpa)))
.add(Substitution.of("%(iossim_path)s", iossim().getRootRelativePath().getPathString()))
+ .add(Substitution.of("%(plugin_jars)s", Artifact.joinRootRelativePaths(":", plugins())))
.addAll(deviceSubstitutions().getSubstitutionsForTestRunnerScript());
@@ -121,11 +123,19 @@ class TestSupport {
.addArtifact(generatedTestScript())
.addArtifact(iossim())
.addTransitiveArtifacts(deviceRunfiles())
+ .addTransitiveArtifacts(plugins())
.addArtifacts(testRunner().asSet());
return this;
}
/**
+ * Jar files for plugins to the test runner. May be empty.
+ */
+ private NestedSet<Artifact> plugins() {
+ return PrerequisiteArtifacts.nestedSet(ruleContext, "plugins", Mode.TARGET);
+ }
+
+ /**
* Runfiles required in order to use the specified target device.
*/
private NestedSet<Artifact> deviceRunfiles() {