aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2015-10-20 17:39:26 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-10-21 14:34:57 +0000
commite90d67e3b3e6e209551df40c97df6837ad35c4ba (patch)
treeafa88925026442e2b363a4db6aeba519e6291566 /src
parent0f1b51ec02055de47dc91255d13f7f9133776264 (diff)
Include memleaks plugin support for experimental_ios_test
-- MOS_MIGRATED_REVID=105876178
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/objc/BazelIosTestRule.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalIosTestRule.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java23
4 files changed, 27 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/objc/BazelIosTestRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/objc/BazelIosTestRule.java
index 0182a5370e..d4b2f318b0 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/objc/BazelIosTestRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/objc/BazelIosTestRule.java
@@ -93,6 +93,10 @@ public final class BazelIosTestRule implements RuleDefinition {
Constants.TOOLS_REPOSITORY + "//tools/objc:ios_test.sh.bazel_template")))
.add(attr("$test_runner", LABEL)
.value(env.getLabel(Constants.TOOLS_REPOSITORY + "//tools/objc:testrunner")))
+ .add(attr(IosTest.MEMLEAKS_DEP, LABEL)
+ .value(env.getLabel("//tools/objc/memleaks:memleaks")))
+ .add(attr(IosTest.MEMLEAKS_PLUGIN, LABEL)
+ .value(env.getLabel("//tools/objc:memleaks_plugin")))
.override(attr(":gcov", LABEL_LIST).cfg(HOST)
.value(new LateBoundLabelList<BuildConfiguration>() {
@Override
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 1769a9c05b..e88a8db75b 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
@@ -91,6 +91,10 @@ public final class ExperimentalIosTestRule implements RuleDefinition {
Constants.TOOLS_REPOSITORY + "//tools/objc:ios_test.sh.bazel_template")))
.add(attr("$test_runner", LABEL).value(env.getLabel(
Constants.TOOLS_REPOSITORY + "//tools/objc:testrunner")))
+ .add(attr(IosTest.MEMLEAKS_DEP, LABEL)
+ .value(env.getLabel("//tools/objc/memleaks:memleaks")))
+ .add(attr(IosTest.MEMLEAKS_PLUGIN, LABEL)
+ .value(env.getLabel("//tools/objc:memleaks_plugin")))
.override(attr(":gcov", LABEL_LIST).cfg(HOST)
.value(new LateBoundLabelList<BuildConfiguration>() {
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
index bad079c558..4f2a76a3c0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
@@ -47,6 +47,7 @@ public abstract class IosTest implements RuleConfiguredTargetFactory {
public static final String IS_XCTEST = "xctest";
public static final String XCTEST_APP = "xctest_app";
public static final String MEMLEAKS_DEP = "$memleaks_dep";
+ public static final String MEMLEAKS_PLUGIN = "$memleaks_plugin";
@VisibleForTesting
public static final String REQUIRES_SOURCE_ERROR =
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 671cdc9f91..94ce727e3a 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
@@ -71,11 +71,17 @@ public class TestSupport {
// testIpa is the app actually containing the tests
Artifact testIpa = testIpa();
+ String runMemleaks =
+ ruleContext.getFragment(ObjcConfiguration.class).runMemleaks() ? "true" : "false";
+
// The substitutions below are common for simulator and lab device.
- ImmutableList.Builder<Substitution> substitutions = new ImmutableList.Builder<Substitution>()
- .add(Substitution.of("%(test_app_ipa)s", testIpa.getRootRelativePathString()))
- .add(Substitution.of("%(test_app_name)s", baseNameWithoutIpa(testIpa)))
- .add(Substitution.of("%(plugin_jars)s", Artifact.joinRootRelativePaths(":", plugins())));
+ ImmutableList.Builder<Substitution> substitutions =
+ new ImmutableList.Builder<Substitution>()
+ .add(Substitution.of("%(memleaks)s", runMemleaks))
+ .add(Substitution.of("%(test_app_ipa)s", testIpa.getRootRelativePathString()))
+ .add(Substitution.of("%(test_app_name)s", baseNameWithoutIpa(testIpa)))
+ .add(
+ Substitution.of("%(plugin_jars)s", Artifact.joinRootRelativePaths(":", plugins())));
// xctestIpa is the app bundle being tested
Optional<Artifact> xctestIpa = xctestIpa();
@@ -240,7 +246,14 @@ public class TestSupport {
* Jar files for plugins to the test runner. May be empty.
*/
private NestedSet<Artifact> plugins() {
- return PrerequisiteArtifacts.nestedSet(ruleContext, "plugins", Mode.TARGET);
+ NestedSetBuilder<Artifact> pluginArtifacts = NestedSetBuilder.stableOrder();
+ pluginArtifacts.addTransitive(
+ PrerequisiteArtifacts.nestedSet(ruleContext, "plugins", Mode.TARGET));
+ if (ruleContext.getFragment(ObjcConfiguration.class).runMemleaks()) {
+ pluginArtifacts.addTransitive(
+ PrerequisiteArtifacts.nestedSet(ruleContext, IosTest.MEMLEAKS_PLUGIN, Mode.TARGET));
+ }
+ return pluginArtifacts.build();
}
/**