diff options
author | Kristina Chodorow <kchodorow@google.com> | 2016-01-11 15:28:02 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-01-11 20:03:04 +0000 |
commit | 3680a58b5caa1552254790dd54ec7ae28a7e3bcc (patch) | |
tree | 5ba90723eb947f23caf08dace33899cbe482ab2c /src/test/java/com/google/devtools/build | |
parent | eaf8930fd1062590011b55321f551ce8b01fc57c (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/java/com/google/devtools/build')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java | 78 |
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()); } } |