diff options
author | Daniel Wagner-Hall <danielwh@google.com> | 2015-05-07 18:54:03 +0000 |
---|---|---|
committer | Han-Wen Nienhuys <hanwen@google.com> | 2015-05-08 16:59:20 +0000 |
commit | 3bf3bbe8ca0c8b54ef22f5eb3d944017a6e8d1cd (patch) | |
tree | 6749d65428c50f7db86c2ce8cc2df88ac554357c /src/main/java/com | |
parent | 2ef5ec5116341362294b5c3407748b6387e76093 (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.java | 7 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java | 10 |
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() { |