diff options
author | 2015-10-20 17:39:26 +0000 | |
---|---|---|
committer | 2015-10-21 14:34:57 +0000 | |
commit | e90d67e3b3e6e209551df40c97df6837ad35c4ba (patch) | |
tree | afa88925026442e2b363a4db6aeba519e6291566 /src | |
parent | 0f1b51ec02055de47dc91255d13f7f9133776264 (diff) |
Include memleaks plugin support for experimental_ios_test
--
MOS_MIGRATED_REVID=105876178
Diffstat (limited to 'src')
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(); } /** |