aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar mjhalupka <mjhalupka@google.com>2018-02-07 12:22:17 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-07 12:24:35 -0800
commit2fff952bbccc4c8436223314e3636fdd05e2073d (patch)
treebf1fdf3b8089148f2c9ffb6e0c4fc0c88f71b2a8
parente40603fecbc13380dd9648cf3bf1e31f6ce74c0f (diff)
Refactor to get rid of some getConfiguredTarget() calls in tests and replace
them with getConfiguredTargetAndTarget() so we can get rid of ConfiguredTarget.getTarget() callers. This should be a test only change. PiperOrigin-RevId: 184877255
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java30
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java18
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java31
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java34
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java189
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryIntegrationTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/SdkMavenRepositoryTest.java12
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java27
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTestTest.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java21
16 files changed, 265 insertions, 146 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index a3835d836a..a4cf6e421e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -1133,6 +1133,12 @@ public class BuildView {
getTopLevelTransitionForTarget(label, eventHandler));
}
+ @VisibleForTesting
+ public ConfiguredTargetAndTarget getConfiguredTargetAndTargetForTesting(
+ ExtendedEventHandler eventHandler, Label label, BuildConfiguration config) {
+ return skyframeExecutor.getConfiguredTargetAndTargetForTesting(eventHandler, label, config);
+ }
+
/**
* Returns a RuleContext which is the same as the original RuleContext of the target parameter.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 93775243af..4cc660209a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -1641,9 +1641,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
return getConfiguredTargetForTesting(eventHandler, label, configuration, NoTransition.INSTANCE);
}
- /**
- * Returns a particular configured target after applying the given transition.
- */
+ /** Returns a particular configured target after applying the given transition. */
@VisibleForTesting
@Nullable
public ConfiguredTarget getConfiguredTargetForTesting(
@@ -1652,6 +1650,20 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
BuildConfiguration configuration,
ConfigurationTransition transition) {
ConfiguredTargetAndTarget configuredTargetAndTarget =
+ getConfiguredTargetAndTargetForTesting(eventHandler, label, configuration, transition);
+ return configuredTargetAndTarget == null
+ ? null
+ : configuredTargetAndTarget.getConfiguredTarget();
+ }
+
+ @VisibleForTesting
+ @Nullable
+ public ConfiguredTargetAndTarget getConfiguredTargetAndTargetForTesting(
+ ExtendedEventHandler eventHandler,
+ Label label,
+ BuildConfiguration configuration,
+ ConfigurationTransition transition) {
+ ConfiguredTargetAndTarget configuredTargetAndTarget =
Iterables.getFirst(
getConfiguredTargetsForTesting(
eventHandler,
@@ -1662,9 +1674,15 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
: Dependency.withTransitionAndAspects(
label, transition, AspectCollection.EMPTY))),
null);
- return configuredTargetAndTarget == null
- ? null
- : configuredTargetAndTarget.getConfiguredTarget();
+ return configuredTargetAndTarget;
+ }
+
+ @VisibleForTesting
+ @Nullable
+ public ConfiguredTargetAndTarget getConfiguredTargetAndTargetForTesting(
+ ExtendedEventHandler eventHandler, Label label, BuildConfiguration configuration) {
+ return getConfiguredTargetAndTargetForTesting(
+ eventHandler, label, configuration, NoTransition.INSTANCE);
}
/**
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java
index a5e2c46a3f..7f20fffae1 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.Rule;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.util.FileTypeSet;
import org.junit.Before;
import org.junit.Test;
@@ -40,12 +41,17 @@ public class AspectAwareAttributeMapperTest extends BuildViewTestCase {
@Before
public final void createMapper() throws Exception {
- RuleConfiguredTarget ct = (RuleConfiguredTarget) scratchConfiguredTarget("foo", "myrule",
- "cc_binary(",
- " name = 'myrule',",
- " srcs = [':a.cc'],",
- " linkstatic = select({'//conditions:default': 1}))");
- rule = ct.getTarget();
+ ConfiguredTargetAndTarget ctat =
+ scratchConfiguredTargetAndTarget(
+ "foo",
+ "myrule",
+ "cc_binary(",
+ " name = 'myrule',",
+ " srcs = [':a.cc'],",
+ " linkstatic = select({'//conditions:default': 1}))");
+
+ RuleConfiguredTarget ct = (RuleConfiguredTarget) ctat.getConfiguredTarget();
+ rule = (Rule) ctat.getTarget();
Attribute aspectAttr = new Attribute.Builder<Label>("fromaspect", BuildType.LABEL)
.allowedFileTypes(FileTypeSet.ANY_FILE)
.build();
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
index 510be593d2..6af2d40a07 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -44,6 +44,7 @@ import com.google.devtools.build.lib.events.NullEventHandler;
import com.google.devtools.build.lib.events.OutputFilter.RegexOutputFilter;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.Rule;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.testutil.Suite;
import com.google.devtools.build.lib.testutil.TestConstants;
import com.google.devtools.build.lib.testutil.TestSpec;
@@ -91,9 +92,9 @@ public class BuildViewTest extends BuildViewTestBase {
Rule ruleTarget = (Rule) getTarget("//pkg:foo");
assertThat(ruleTarget.getRuleClass()).isEqualTo("genrule");
- ConfiguredTarget ruleCT = getConfiguredTarget("//pkg:foo");
+ ConfiguredTargetAndTarget ruleCTAT = getConfiguredTargetAndTarget("//pkg:foo");
- assertThat(ruleCT.getTarget()).isSameAs(ruleTarget);
+ assertThat(ruleCTAT.getTarget()).isSameAs(ruleTarget);
}
@Test
@@ -115,14 +116,17 @@ public class BuildViewTest extends BuildViewTestBase {
//scratch.file("tests/small_test_1.py");
update("//tests:smallTests");
+ ConfiguredTargetAndTarget test1 = getConfiguredTargetAndTarget("//tests:small_test_1");
+ ConfiguredTargetAndTarget test2 = getConfiguredTargetAndTarget("//tests:small_test_2");
+ ConfiguredTargetAndTarget suite = getConfiguredTargetAndTarget("//tests:smallTests");
- ConfiguredTarget test1 = getConfiguredTarget("//tests:small_test_1");
- ConfiguredTarget test2 = getConfiguredTarget("//tests:small_test_2");
- ConfiguredTarget suite = getConfiguredTarget("//tests:smallTests");
+ ConfiguredTarget test1CT = test1.getConfiguredTarget();
+ ConfiguredTarget test2CT = test2.getConfiguredTarget();
+ ConfiguredTarget suiteCT = suite.getConfiguredTarget();
assertNoEvents(); // start from a clean slate
Collection<ConfiguredTarget> targets =
- new LinkedHashSet<>(ImmutableList.of(test1, test2, suite));
+ new LinkedHashSet<>(ImmutableList.of(test1CT, test2CT, suiteCT));
targets =
Lists.<ConfiguredTarget>newArrayList(
BuildView.filterTestsByTargets(
@@ -130,7 +134,7 @@ public class BuildViewTest extends BuildViewTestBase {
Sets.newHashSet(test1.getTarget(), suite.getTarget()),
NullEventHandler.INSTANCE,
skyframeExecutor.getPackageManager()));
- assertThat(targets).containsExactlyElementsIn(Sets.newHashSet(test1, suite));
+ assertThat(targets).containsExactlyElementsIn(Sets.newHashSet(test1CT, suiteCT));
}
@Test
@@ -147,17 +151,16 @@ public class BuildViewTest extends BuildViewTestBase {
public void testGeneratedArtifact() throws Exception {
setupDummyRule();
update("//pkg:a.out");
- OutputFileConfiguredTarget outputCT = (OutputFileConfiguredTarget)
- getConfiguredTarget("//pkg:a.out");
- Artifact outputArtifact = outputCT.getArtifact();
+ OutputFileConfiguredTarget output =
+ (OutputFileConfiguredTarget) getConfiguredTarget("//pkg:a.out");
+ Artifact outputArtifact = output.getArtifact();
assertThat(outputArtifact.getRoot())
.isEqualTo(
- outputCT
+ output
.getConfiguration()
- .getBinDirectory(
- outputCT.getTarget().getLabel().getPackageIdentifier().getRepository()));
+ .getBinDirectory(output.getLabel().getPackageIdentifier().getRepository()));
assertThat(outputArtifact.getExecPath())
- .isEqualTo(outputCT.getConfiguration().getBinFragment().getRelative("pkg/a.out"));
+ .isEqualTo(output.getConfiguration().getBinFragment().getRelative("pkg/a.out"));
assertThat(outputArtifact.getRootRelativePath()).isEqualTo(PathFragment.create("pkg/a.out"));
Action action = getGeneratingAction(outputArtifact);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
index 519807fa77..fc9aa99a9a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
@@ -58,6 +58,7 @@ import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunctio
import com.google.devtools.build.lib.runtime.KeepGoingOption;
import com.google.devtools.build.lib.runtime.LoadingPhaseThreadsOption;
import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
import com.google.devtools.build.lib.skyframe.SequencedSkyframeExecutor;
@@ -389,6 +390,23 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
return update(new EventBus(), defaultFlags(), aspects, labels);
}
+ protected ConfiguredTargetAndTarget getConfiguredTargetAndTarget(String label)
+ throws InterruptedException {
+ return getConfiguredTargetAndTarget(label, getTargetConfiguration());
+ }
+
+ protected ConfiguredTargetAndTarget getConfiguredTargetAndTarget(
+ String label, BuildConfiguration config) {
+ ensureUpdateWasCalled();
+ Label parsedLabel;
+ try {
+ parsedLabel = Label.parseAbsolute(label);
+ } catch (LabelSyntaxException e) {
+ throw new AssertionError(e);
+ }
+ return skyframeExecutor.getConfiguredTargetAndTargetForTesting(reporter, parsedLabel, config);
+ }
+
protected Target getTarget(String label) throws InterruptedException {
try {
return SkyframeExecutorTestUtils.getExistingTarget(skyframeExecutor,
@@ -403,6 +421,14 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
return getConfiguredTargetForSkyframe(label, configuration);
}
+ /**
+ * Returns the corresponding configured target, if it exists. Note that this will only return
+ * anything useful after a call to update() with the same label.
+ */
+ protected ConfiguredTarget getConfiguredTarget(String label) throws InterruptedException {
+ return getConfiguredTarget(label, getTargetConfiguration());
+ }
+
private ConfiguredTarget getConfiguredTargetForSkyframe(String label,
BuildConfiguration configuration) {
Label parsedLabel;
@@ -416,14 +442,6 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
/**
* Returns the corresponding configured target, if it exists. Note that this will only return
- * anything useful after a call to update() with the same label.
- */
- protected ConfiguredTarget getConfiguredTarget(String label) throws InterruptedException {
- return getConfiguredTarget(label, getTargetConfiguration());
- }
-
- /**
- * Returns the corresponding configured target, if it exists. Note that this will only return
* anything useful after a call to update() with the same label. The label passed in must
* represent an input file.
*/
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 8d89ee08dc..479cde386d 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -123,6 +123,7 @@ import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction;
import com.google.devtools.build.lib.skyframe.AspectValue;
import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.skyframe.DiffAwareness;
import com.google.devtools.build.lib.skyframe.LegacyLoadingPhaseRunner;
@@ -624,25 +625,6 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
return skyframeExecutor.getActionGraph(reporter);
}
- protected final Action getGeneratingAction(Artifact artifact) {
- Preconditions.checkNotNull(artifact);
- ActionAnalysisMetadata action = mutableActionGraph.getGeneratingAction(artifact);
-
- if (action == null) {
- action = getActionGraph().getGeneratingAction(artifact);
- }
-
- if (action != null) {
- Preconditions.checkState(
- action instanceof Action,
- "%s is not a proper Action object",
- action.prettyPrint());
- return (Action) action;
- } else {
- return null;
- }
- }
-
@Nullable
protected final ParameterFileWriteAction findParamsFileAction(SpawnAction spawnAction) {
for (Artifact input : spawnAction.getInputs()) {
@@ -670,6 +652,23 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
return getGeneratingAction(artifact);
}
+ protected final Action getGeneratingAction(Artifact artifact) {
+ Preconditions.checkNotNull(artifact);
+ ActionAnalysisMetadata action = mutableActionGraph.getGeneratingAction(artifact);
+
+ if (action == null) {
+ action = getActionGraph().getGeneratingAction(artifact);
+ }
+
+ if (action != null) {
+ Preconditions.checkState(
+ action instanceof Action, "%s is not a proper Action object", action.prettyPrint());
+ return (Action) action;
+ } else {
+ return null;
+ }
+ }
+
protected Action getGeneratingActionInOutputGroup(
ConfiguredTarget target, String outputName, String outputGroupName) {
NestedSet<Artifact> outputGroup =
@@ -685,6 +684,11 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
return (SpawnAction) getGeneratingAction(artifact);
}
+ protected SpawnAction getGeneratingSpawnAction(ConfiguredTarget target, String outputName) {
+ return getGeneratingSpawnAction(
+ Iterables.find(getFilesToBuild(target), artifactNamed(outputName)));
+ }
+
protected final List<String> getGeneratingSpawnActionArgs(Artifact artifact)
throws CommandLineExpansionException {
SpawnAction a = getGeneratingSpawnAction(artifact);
@@ -694,11 +698,6 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
: ImmutableList.copyOf(Iterables.concat(a.getArguments(), p.getContents()));
}
- protected SpawnAction getGeneratingSpawnAction(ConfiguredTarget target, String outputName) {
- return getGeneratingSpawnAction(
- Iterables.find(getFilesToBuild(target), artifactNamed(outputName)));
- }
-
protected ActionsTestUtil actionsTestUtil() {
return new ActionsTestUtil(getActionGraph());
}
@@ -743,6 +742,25 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
}
/**
+ * Returns a ConfiguredTargetAndTarget for the specified label, using the given build
+ * configuration.
+ */
+ protected ConfiguredTargetAndTarget getConfiguredTargetAndTarget(
+ Label label, BuildConfiguration config) {
+ return view.getConfiguredTargetAndTargetForTesting(reporter, label, config);
+ }
+
+ /**
+ * Returns the ConfiguredTargetAndTarget for the specified label. If the label corresponds to a
+ * target with a top-level configuration transition, that transition is applied to the given
+ * config in the ConfiguredTargetAndTarget's ConfiguredTarget.
+ */
+ public ConfiguredTargetAndTarget getConfiguredTargetAndTarget(String label)
+ throws LabelSyntaxException {
+ return getConfiguredTargetAndTarget(Label.parseAbsolute(label), targetConfig);
+ }
+
+ /**
* Returns the ConfiguredTarget for the specified file label, configured for
* the "build" (aka "target") configuration.
*/
@@ -803,6 +821,57 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
}
/**
+ * Create and return a configured scratch rule.
+ *
+ * @param packageName the package name of the rule.
+ * @param ruleName the name of the rule.
+ * @param config the configuration to use to construct the configured rule.
+ * @param lines the text of the rule.
+ * @return the configured target instance for the created rule.
+ * @throws IOException
+ * @throws Exception
+ */
+ protected ConfiguredTarget scratchConfiguredTarget(
+ String packageName, String ruleName, BuildConfiguration config, String... lines)
+ throws IOException, Exception {
+ ConfiguredTargetAndTarget ctat =
+ scratchConfiguredTargetAndTarget(packageName, ruleName, config, lines);
+ return ctat == null ? null : ctat.getConfiguredTarget();
+ }
+
+ /**
+ * Creates and returns a configured scratch rule and it's target.
+ *
+ * @param packageName the package name of the rule.
+ * @param rulename the name of the rule.
+ * @param lines the text of the rule.
+ * @return the configured tatarget and target instance for the created rule.
+ * @throws Exception
+ */
+ protected ConfiguredTargetAndTarget scratchConfiguredTargetAndTarget(
+ String packageName, String rulename, String... lines) throws Exception {
+ return scratchConfiguredTargetAndTarget(packageName, rulename, targetConfig, lines);
+ }
+
+ /**
+ * Creates and returns a configured scratch rule and it's target.
+ *
+ * @param packageName the package name of the rule.
+ * @param ruleName the name of the rule.
+ * @param config the configuration to use to construct the configured rule.
+ * @param lines the text of the rule.
+ * @return the ConfiguredTargetAndTarget instance for the created rule.
+ * @throws IOException
+ * @throws Exception
+ */
+ protected ConfiguredTargetAndTarget scratchConfiguredTargetAndTarget(
+ String packageName, String ruleName, BuildConfiguration config, String... lines)
+ throws Exception {
+ Target rule = scratchRule(packageName, ruleName, lines);
+ return view.getConfiguredTargetAndTargetForTesting(reporter, rule.getLabel(), config);
+ }
+
+ /**
* Create and return a scratch rule.
*
* @param packageName the package name of the rule.
@@ -829,26 +898,6 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
}
/**
- * Create and return a configured scratch rule.
- *
- * @param packageName the package name of the rule.
- * @param ruleName the name of the rule.
- * @param config the configuration to use to construct the configured rule.
- * @param lines the text of the rule.
- * @return the configured target instance for the created rule.
- * @throws IOException
- * @throws Exception
- */
- protected ConfiguredTarget scratchConfiguredTarget(String packageName,
- String ruleName,
- BuildConfiguration config,
- String... lines)
- throws IOException, Exception {
- Target rule = scratchRule(packageName, ruleName, lines);
- return view.getConfiguredTargetForTesting(reporter, rule.getLabel(), config);
- }
-
- /**
* Check that configuration of the target named 'ruleName' in the
* specified BUILD file fails with an error message ending in
* 'expectedErrorMessage'.
@@ -1156,18 +1205,6 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
}
/**
- * Strips the C++-contributed prefix out of an output path when tests are run with trimmed
- * configurations. e.g. turns "bazel-out/gcc-X-glibc-Y-k8-fastbuild/ to "bazel-out/fastbuild/".
- *
- * <p>This should be used for targets use configurations with C++ fragments.
- */
- protected String stripCppPrefixForTrimmedConfigs(String outputPath) {
- return targetConfig.trimConfigurations()
- ? AnalysisTestUtil.OUTPUT_PATH_CPP_PREFIX_PATTERN.matcher(outputPath).replaceFirst("")
- : outputPath;
- }
-
- /**
* Gets a derived Artifact for testing in the subdirectory of the {@link
* BuildConfiguration#getGenfilesDirectory} corresponding to the package of {@code owner}. So to
* specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just be
@@ -1219,6 +1256,18 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
return getGeneratingAction(getFileConfiguredTarget(label).getArtifact());
}
+ /**
+ * Strips the C++-contributed prefix out of an output path when tests are run with trimmed
+ * configurations. e.g. turns "bazel-out/gcc-X-glibc-Y-k8-fastbuild/ to "bazel-out/fastbuild/".
+ *
+ * <p>This should be used for targets use configurations with C++ fragments.
+ */
+ protected String stripCppPrefixForTrimmedConfigs(String outputPath) {
+ return targetConfig.trimConfigurations()
+ ? AnalysisTestUtil.OUTPUT_PATH_CPP_PREFIX_PATTERN.matcher(outputPath).replaceFirst("")
+ : outputPath;
+ }
+
protected String fileName(Artifact artifact) {
return artifact.getExecPathString();
}
@@ -1301,20 +1350,6 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
}
}
- private BuildConfiguration getConfiguration(String label) {
- BuildConfiguration config;
- try {
- config = getConfiguredTarget(label).getConfiguration();
- config = view.getConfigurationForTesting(getTarget(label), config, reporter);
- } catch (LabelSyntaxException e) {
- throw new IllegalArgumentException(e);
- } catch (Exception e) {
- //TODO(b/36585204): Clean this up
- throw new RuntimeException(e);
- }
- return config;
- }
-
private ConfiguredTargetKey makeConfiguredTargetKey(String label) {
return ConfiguredTargetKey.of(makeLabel(label), getConfiguration(label));
}
@@ -1519,6 +1554,20 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
}
}
+ private BuildConfiguration getConfiguration(String label) {
+ BuildConfiguration config;
+ try {
+ config = getConfiguredTarget(label).getConfiguration();
+ config = view.getConfigurationForTesting(getTarget(label), config, reporter);
+ } catch (LabelSyntaxException e) {
+ throw new IllegalArgumentException(e);
+ } catch (Exception e) {
+ // TODO(b/36585204): Clean this up
+ throw new RuntimeException(e);
+ }
+ return config;
+ }
+
/**
* Returns an attribute value retriever for the given rule for the target configuration.
*/
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryIntegrationTest.java
index aec222e596..7fa018d49c 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryIntegrationTest.java
@@ -21,7 +21,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
-import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.bazel.repository.downloader.HttpDownloader;
@@ -32,6 +31,7 @@ import com.google.devtools.build.lib.rules.repository.LocalRepositoryRule;
import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction;
import com.google.devtools.build.lib.rules.repository.RepositoryFunction;
import com.google.devtools.build.lib.rules.repository.RepositoryLoaderFunction;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.skyframe.SkyFunctions;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.skyframe.SkyFunction;
@@ -142,7 +142,7 @@ public class SkylarkRepositoryIntegrationTest extends BuildViewTestCase {
.add("repo(name='foo', path='/repo2')")
.build());
invalidatePackages();
- ConfiguredTarget target = getConfiguredTarget("@foo//:bar");
+ ConfiguredTargetAndTarget target = getConfiguredTargetAndTarget("@foo//:bar");
Object path = target.getTarget().getAssociatedRule().getAttributeContainer().getAttr("path");
assertThat(path).isEqualTo("foo");
}
@@ -170,7 +170,7 @@ public class SkylarkRepositoryIntegrationTest extends BuildViewTestCase {
.add("repo(name='foo')")
.build());
invalidatePackages();
- ConfiguredTarget target = getConfiguredTarget("@foo//:bar");
+ ConfiguredTargetAndTarget target = getConfiguredTargetAndTarget("@foo//:bar");
Object path = target.getTarget().getAssociatedRule().getAttributeContainer().getAttr("path");
assertThat(path).isEqualTo("foo");
}
@@ -199,7 +199,7 @@ public class SkylarkRepositoryIntegrationTest extends BuildViewTestCase {
.add("repo(name='foo')")
.build());
invalidatePackages();
- ConfiguredTarget target = getConfiguredTarget("@foo//:bar");
+ ConfiguredTargetAndTarget target = getConfiguredTargetAndTarget("@foo//:bar");
Object path = target.getTarget().getAssociatedRule().getAttributeContainer().getAttr("path");
assertThat(path).isEqualTo("foo");
}
@@ -229,7 +229,7 @@ public class SkylarkRepositoryIntegrationTest extends BuildViewTestCase {
.add("repo(name='foobar')")
.build());
invalidatePackages();
- ConfiguredTarget target = getConfiguredTarget("@foobar//:bar");
+ ConfiguredTargetAndTarget target = getConfiguredTargetAndTarget("@foobar//:bar");
Object path = target.getTarget().getAssociatedRule().getAttributeContainer().getAttr("path");
assertThat(path).isEqualTo("foobar");
}
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java
index c2bfad33eb..facfac3150 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java
@@ -18,12 +18,12 @@ import static org.junit.Assert.fail;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
-import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.AttributeContainer;
import com.google.devtools.build.lib.packages.BuildFileNotFoundException;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.testutil.MoreAsserts;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -169,7 +169,8 @@ public class AndroidNdkRepositoryTest extends BuildViewTestCase {
")");
invalidatePackages();
- ConfiguredTarget cpufeatures = getConfiguredTarget("@androidndk//:cpufeatures");
+ ConfiguredTargetAndTarget cpufeatures =
+ getConfiguredTargetAndTarget("@androidndk//:cpufeatures");
assertThat(cpufeatures).isNotNull();
AttributeContainer attributes =
cpufeatures.getTarget().getAssociatedRule().getAttributeContainer();
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/SdkMavenRepositoryTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/SdkMavenRepositoryTest.java
index 02cf802a6a..8f55fcc34e 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/SdkMavenRepositoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/SdkMavenRepositoryTest.java
@@ -105,7 +105,9 @@ public class SdkMavenRepositoryTest extends BuildViewTestCase {
public void testGeneratedAarImport() throws Exception {
sdkMavenRepository.writeBuildFiles(workspaceDir);
Rule aarImport =
- getConfiguredTarget("//com.google.android:bar-1.0.0").getTarget().getAssociatedRule();
+ getConfiguredTargetAndTarget("//com.google.android:bar-1.0.0")
+ .getTarget()
+ .getAssociatedRule();
assertThat(aarImport.getRuleClass()).isEqualTo("aar_import");
AttributeMap attributes = RawAttributeMapper.of(aarImport);
assertThat(attributes.get("aar", BuildType.LABEL))
@@ -118,7 +120,9 @@ public class SdkMavenRepositoryTest extends BuildViewTestCase {
public void testGeneratedJavaImport() throws Exception {
sdkMavenRepository.writeBuildFiles(workspaceDir);
Rule javaImport =
- getConfiguredTarget("//com.google.android:foo-1.0.0").getTarget().getAssociatedRule();
+ getConfiguredTargetAndTarget("//com.google.android:foo-1.0.0")
+ .getTarget()
+ .getAssociatedRule();
assertThat(javaImport.getRuleClass()).isEqualTo("java_import");
AttributeMap attributes = RawAttributeMapper.of(javaImport);
assertThat(attributes.get("jars", BuildType.LABEL_LIST)).containsExactly(
@@ -130,7 +134,9 @@ public class SdkMavenRepositoryTest extends BuildViewTestCase {
public void testGeneratedRuleForInvalidPackaging() throws Exception {
sdkMavenRepository.writeBuildFiles(workspaceDir);
Rule invalidPackagingGenrule =
- getConfiguredTarget("//com.google.android:baz-1.0.0").getTarget().getAssociatedRule();
+ getConfiguredTargetAndTarget("//com.google.android:baz-1.0.0")
+ .getTarget()
+ .getAssociatedRule();
assertThat(invalidPackagingGenrule.getRuleClass()).isEqualTo("genrule");
assertThat(RawAttributeMapper.of(invalidPackagingGenrule).get("cmd", Type.STRING))
.isEqualTo("echo Bazel does not recognize the Maven packaging type for: "
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
index 227406c03a..26d908c0a7 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
@@ -51,6 +51,7 @@ import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
import com.google.devtools.build.lib.rules.java.JavaCompileAction;
import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.testutil.MoreAsserts;
import com.google.devtools.build.lib.util.FileType;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -1547,28 +1548,28 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
"png");
}
- private void testDirectResourceFiltering(
- String filters, List<String> unexpectedQualifiers, ImmutableList<String> expectedQualifiers)
+ private void testDensityResourceFiltering(
+ String densities, List<String> unexpectedQualifiers, List<String> expectedQualifiers)
throws Exception {
testDirectResourceFiltering(
- filters,
- /* densities= */ "",
+ /* resourceConfigurationFilters= */ "",
+ densities,
unexpectedQualifiers,
expectedQualifiers,
- /* expectUnqualifiedResource= */ true,
+ /* expectUnqualifiedResource= */ false,
"drawable",
"png");
}
- private void testDensityResourceFiltering(
- String densities, List<String> unexpectedQualifiers, List<String> expectedQualifiers)
+ private void testDirectResourceFiltering(
+ String filters, List<String> unexpectedQualifiers, ImmutableList<String> expectedQualifiers)
throws Exception {
testDirectResourceFiltering(
- /* resourceConfigurationFilters= */ "",
- densities,
+ filters,
+ /* densities= */ "",
unexpectedQualifiers,
expectedQualifiers,
- /* expectUnqualifiedResource= */ false,
+ /* expectUnqualifiedResource= */ true,
"drawable",
"png");
}
@@ -2004,7 +2005,7 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
"<resources><string name = 'lib_string'>Libs!</string></resources>");
scratch.file("java/r/android/res/values/strings.xml",
"<resources><string name = 'hello'>Hello Android!</string></resources>");
- Artifact jar = getResourceClassJar(getConfiguredTarget("//java/r/android:r"));
+ Artifact jar = getResourceClassJar(getConfiguredTargetAndTarget("//java/r/android:r"));
assertThat(getGeneratingAction(jar).getMnemonic()).isEqualTo("RClassGenerator");
assertThat(getGeneratingSpawnActionArgs(jar))
.containsAllOf("--primaryRTxt", "--primaryManifest", "--library", "--classJarOutput");
@@ -2019,7 +2020,7 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
" )");
scratch.file("java/r/android/res/values/strings.xml",
"<resources><string name = 'hello'>Hello Android!</string></resources>");
- Artifact jar = getResourceClassJar(getConfiguredTarget("//java/r/android:r"));
+ Artifact jar = getResourceClassJar(getConfiguredTargetAndTarget("//java/r/android:r"));
assertThat(getGeneratingAction(jar).getMnemonic()).isEqualTo("RClassGenerator");
List<String> args = getGeneratingSpawnActionArgs(jar);
assertThat(args).containsAllOf("--primaryRTxt", "--primaryManifest", "--classJarOutput");
@@ -2044,7 +2045,7 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
"<resources><string name = 'lib_string'>Libs!</string></resources>");
scratch.file("java/r/android/res/values/strings.xml",
"<resources><string name = 'hello'>Hello Android!</string></resources>");
- ConfiguredTarget binary = getConfiguredTarget("//java/r/android:r");
+ ConfiguredTargetAndTarget binary = getConfiguredTargetAndTarget("//java/r/android:r");
Artifact jar = getResourceClassJar(binary);
assertThat(getGeneratingAction(jar).getMnemonic()).isEqualTo("RClassGenerator");
List<String> args = getGeneratingSpawnActionArgs(jar);
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
index 70003b2b6e..657ecacd9d 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
@@ -39,6 +39,7 @@ import com.google.devtools.build.lib.rules.android.deployinfo.AndroidDeployInfoO
import com.google.devtools.build.lib.rules.java.JavaCompileAction;
import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -137,9 +138,9 @@ public abstract class AndroidBuildViewTestCase extends BuildViewTestCase {
transitive ? info.getTransitiveAndroidResources() : info.getDirectAndroidResources());
}
- protected Artifact getResourceClassJar(final ConfiguredTarget target) {
+ protected Artifact getResourceClassJar(final ConfiguredTargetAndTarget target) {
JavaRuleOutputJarsProvider jarProvider =
- JavaInfo.getProvider(JavaRuleOutputJarsProvider.class, target);
+ JavaInfo.getProvider(JavaRuleOutputJarsProvider.class, target.getConfiguredTarget());
assertThat(jarProvider).isNotNull();
return Iterables.find(
jarProvider.getOutputJars(),
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTestTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTestTest.java
index 50d986494f..f50823be3a 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTestTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTestTest.java
@@ -25,6 +25,7 @@ import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -117,9 +118,11 @@ public class AndroidInstrumentationTestTest extends AndroidBuildViewTestCase {
@Test
public void testTestExecutableRunfiles() throws Exception {
- ConfiguredTarget androidInstrumentationTest = getConfiguredTarget("//javatests/com/app/ait");
+ ConfiguredTargetAndTarget androidInstrumentationTest =
+ getConfiguredTargetAndTarget("//javatests/com/app/ait");
NestedSet<Artifact> runfiles =
androidInstrumentationTest
+ .getConfiguredTarget()
.getProvider(RunfilesProvider.class)
.getDefaultRunfiles()
.getAllArtifacts();
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
index 8466857522..4d7c3fc697 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -35,6 +35,7 @@ import com.google.devtools.build.lib.analysis.util.AnalysisMock;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.util.MockCcSupport;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.testutil.TestConstants;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import com.google.devtools.build.lib.util.FileType;
@@ -1126,14 +1127,15 @@ public class CcLibraryConfiguredTargetTest extends BuildViewTestCase {
public void addOnlyStaticLibraryToFilesToBuildWhenWrappingIffImplicitOutput() throws Exception {
// This shared library has the same name as the archive generated by this rule, so it should
// override said archive. However, said archive should still be put in files to build.
- ConfiguredTarget target =
- scratchConfiguredTarget("a", "b", "cc_library(name = 'b', srcs = ['libb.so'])");
+ ConfiguredTargetAndTarget target =
+ scratchConfiguredTargetAndTarget("a", "b", "cc_library(name = 'b', srcs = ['libb.so'])");
if (target.getTarget().getAssociatedRule().getImplicitOutputsFunction()
!= ImplicitOutputsFunction.NONE) {
- assertThat(artifactsToStrings(getFilesToBuild(target))).containsExactly("bin a/libb.a");
+ assertThat(artifactsToStrings(getFilesToBuild(target.getConfiguredTarget())))
+ .containsExactly("bin a/libb.a");
} else {
- assertThat(artifactsToStrings(getFilesToBuild(target))).isEmpty();
+ assertThat(artifactsToStrings(getFilesToBuild(target.getConfiguredTarget()))).isEmpty();
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java b/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java
index 9f8e1d09eb..7b575ac946 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java
@@ -111,11 +111,12 @@ public class SkyframeExecutorTestUtils {
*/
public static Iterable<ConfiguredTarget> getExistingConfiguredTargets(
SkyframeExecutor skyframeExecutor, final Label label) {
- return Iterables.filter(getAllExistingConfiguredTargets(skyframeExecutor),
+ return Iterables.filter(
+ getAllExistingConfiguredTargets(skyframeExecutor),
new Predicate<ConfiguredTarget>() {
@Override
public boolean apply(ConfiguredTarget input) {
- return input.getTarget().getLabel().equals(label);
+ return input.getLabel().equals(label);
}
});
}
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
index 40500e66b6..6f8e3843b0 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
@@ -39,6 +39,7 @@ import com.google.devtools.build.lib.packages.Info;
import com.google.devtools.build.lib.packages.Provider;
import com.google.devtools.build.lib.packages.SkylarkProvider;
import com.google.devtools.build.lib.packages.SkylarkProvider.SkylarkKey;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.skyframe.PackageFunction;
import com.google.devtools.build.lib.skyframe.SkyFunctions;
import com.google.devtools.build.lib.skyframe.SkylarkImportLookupFunction;
@@ -107,7 +108,7 @@ public class SkylarkIntegrationTest extends BuildViewTestCase {
}
private AttributeContainer getContainerForTarget(String targetName) throws Exception {
- ConfiguredTarget target = getConfiguredTarget("//test/skylark:" + targetName);
+ ConfiguredTargetAndTarget target = getConfiguredTargetAndTarget("//test/skylark:" + targetName);
return target.getTarget().getAssociatedRule().getAttributeContainer();
}
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
index bc6a903e13..61dd892ff6 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
@@ -20,6 +20,7 @@ import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;
import static org.junit.Assert.fail;
+import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
@@ -1401,7 +1402,7 @@ public class SkylarkRuleContextTest extends SkylarkTestCase {
invalidatePackages(/*alsoConfigs=*/false); // Repository shuffling messes with toolchain labels.
assertThat(
(List<Label>)
- getConfiguredTarget("@foo//:baz")
+ getConfiguredTargetAndTarget("@foo//:baz")
.getTarget()
.getAssociatedRule()
.getAttributeContainer()
@@ -2035,10 +2036,11 @@ public class SkylarkRuleContextTest extends SkylarkTestCase {
} catch (AssertionError e) {
assertThat(e)
.hasMessageThat()
- .contains("cannot access field or method '"
- + attribute.split("\\(")[0]
- + "' of rule context for '//test:dep' outside of its own rule implementation "
- + "function");
+ .contains(
+ "cannot access field or method '"
+ + Iterables.get(Splitter.on('(').split(attribute), 0)
+ + "' of rule context for '//test:dep' outside of its own rule implementation "
+ + "function");
}
}
}
@@ -2083,10 +2085,11 @@ public class SkylarkRuleContextTest extends SkylarkTestCase {
} catch (AssertionError e) {
assertThat(e)
.hasMessageThat()
- .contains("cannot access field or method '"
- + attribute.split("\\(")[0]
- + "' of rule context for '//test:dep' outside of its own rule implementation "
- + "function");
+ .contains(
+ "cannot access field or method '"
+ + Iterables.get(Splitter.on('(').split(attribute), 0)
+ + "' of rule context for '//test:dep' outside of its own rule implementation "
+ + "function");
}
}
}