aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2016-01-11 15:28:02 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-01-11 20:03:04 +0000
commit3680a58b5caa1552254790dd54ec7ae28a7e3bcc (patch)
tree5ba90723eb947f23caf08dace33899cbe482ab2c /src/test
parenteaf8930fd1062590011b55321f551ce8b01fc57c (diff)
Allow overridding any rule in the WORKSPACE file
...instead of throwing an uncaught exception and printing a stack trace. Fixes #409. -- MOS_MIGRATED_REVID=111850179
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java78
1 files changed, 30 insertions, 48 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java b/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
index 999da0b5ba..12898477d4 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
@@ -15,15 +15,8 @@ package com.google.devtools.build.lib.packages;
import static org.junit.Assert.assertEquals;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
-import com.google.devtools.build.lib.events.Location;
-import com.google.devtools.build.lib.packages.Package.Builder;
-import com.google.devtools.build.lib.syntax.Argument;
-import com.google.devtools.build.lib.syntax.FuncallExpression;
-import com.google.devtools.build.lib.syntax.Identifier;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
+import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import org.junit.Before;
@@ -31,8 +24,6 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-import java.util.Map;
-
/**
* Test for building external packages.
*/
@@ -43,51 +34,42 @@ public class ExternalPackageTest extends BuildViewTestCase {
@Before
public final void setWorkspacePath() throws Exception {
- workspacePath = getOutputPath().getRelative("WORKSPACE");
- }
-
- @Test
- public void testWorkspaceName() {
- Builder builder = Package.newExternalPackageBuilder(workspacePath, "TESTING");
- builder.setWorkspaceName("foo");
- assertEquals("foo", builder.build().getWorkspaceName());
+ workspacePath = rootDirectory.getRelative("WORKSPACE");
}
@Test
public void testMultipleRulesWithSameName() throws Exception {
- Builder builder = Package.newExternalPackageBuilder(workspacePath, "TESTING");
-
- // The WORKSPACE file allows rules to be overridden.
- Location buildFile = Location.fromFile(getOutputPath().getRelative("WORKSPACE"));
+ FileSystemUtils.writeIsoLatin1(workspacePath,
+ "local_repository(",
+ " name = 'my-rule',",
+ " path = '/foo/bar',",
+ ")",
+ "new_local_repository(",
+ " name = 'my-rule',",
+ " path = '/foo/bar',",
+ " build_file = 'baz',",
+ ")");
- // Add first rule.
- RuleClass ruleClass =
- TestRuleClassProvider.getRuleClassProvider().getRuleClassMap().get("local_repository");
- RuleClass bindRuleClass =
- TestRuleClassProvider.getRuleClassProvider().getRuleClassMap().get("bind");
-
- Map<String, Object> kwargs = ImmutableMap.of("name", (Object) "my-rule");
- FuncallExpression ast =
- new FuncallExpression(
- new Identifier(ruleClass.getName()), Lists.<Argument.Passed>newArrayList());
- ast.setLocation(buildFile);
- builder
- .externalPackageData()
- .createAndAddRepositoryRule(builder, ruleClass, bindRuleClass, kwargs, ast);
+ invalidatePackages();
+ // Make sure the second rule "wins."
+ assertEquals("new_local_repository rule", getTarget("//external:my-rule").getTargetKind());
+ }
- // Add another rule with the same name.
- ruleClass =
- TestRuleClassProvider.getRuleClassProvider().getRuleClassMap().get("new_local_repository");
- ast =
- new FuncallExpression(
- new Identifier(ruleClass.getName()), Lists.<Argument.Passed>newArrayList());
- ast.setLocation(buildFile);
- builder
- .externalPackageData()
- .createAndAddRepositoryRule(builder, ruleClass, bindRuleClass, kwargs, ast);
- Package pkg = builder.build();
+ @Test
+ public void testOverridingBindRules() throws Exception {
+ FileSystemUtils.writeIsoLatin1(workspacePath,
+ "bind(",
+ " name = 'my-rule',",
+ " actual = '//foo:bar',",
+ ")",
+ "new_local_repository(",
+ " name = 'my-rule',",
+ " path = '/foo/bar',",
+ " build_file = 'baz',",
+ ")");
+ invalidatePackages();
// Make sure the second rule "wins."
- assertEquals("new_local_repository rule", pkg.getTarget("my-rule").getTargetKind());
+ assertEquals("new_local_repository rule", getTarget("//external:my-rule").getTargetKind());
}
}