From 9d659ad0a1024544eb6275391b56660a1d981109 Mon Sep 17 00:00:00 2001 From: Florian Weikert Date: Thu, 23 Jul 2015 14:44:36 +0000 Subject: Skylark: load() allows the loading of symbols via an alias. E.g. load("/foo/bla", my_rule = "old_name") will introduce the symbol "my_rule" as an alias for "old_name". -- MOS_MIGRATED_REVID=98933635 --- .../devtools/build/lib/syntax/ParserTest.java | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src/test/java/com/google') diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java index dad2d46e89..93e14a8c56 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java @@ -29,8 +29,10 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import java.util.LinkedList; import java.util.List; + /** * Tests of parser behaviour. */ @@ -1068,6 +1070,47 @@ public class ParserTest extends EvaluationTestCase { assertContainsEvent("function 'load' does not exist"); } + @Test + public void testLoadAlias() throws Exception { + runLoadAliasTestForSymbols("my_alias = 'lawl'", "my_alias"); + } + + @Test + public void testLoadAliasMultiple() throws Exception { + runLoadAliasTestForSymbols( + "my_alias = 'lawl', 'lol', next_alias = 'rofl'", "my_alias", "lol", "next_alias"); + } + + private void runLoadAliasTestForSymbols(String loadSymbolString, String... expectedSymbols) { + List statements = + parseFileForSkylark(String.format("load('/foo/bar/file', %s)\n", loadSymbolString)); + LoadStatement stmt = (LoadStatement) statements.get(0); + ImmutableList actualSymbols = stmt.getSymbols(); + + assertThat(actualSymbols).hasSize(expectedSymbols.length); + + List actualSymbolNames = new LinkedList<>(); + + for (Identifier identifier : actualSymbols) { + actualSymbolNames.add(identifier.getName()); + } + + assertThat(actualSymbolNames).containsExactly((Object[]) expectedSymbols); + } + + @Test + public void testLoadAliasSyntaxError() throws Exception { + setFailFast(false); + parseFileForSkylark("load('/foo', test1 = )\n"); + assertContainsEvent("syntax error at ')': expected string"); + + parseFileForSkylark("load('/foo', test2 = 1)\n"); + assertContainsEvent("syntax error at '1': expected string"); + + parseFileForSkylark("load('/foo', test3 = old)\n"); + assertContainsEvent("syntax error at 'old': expected string"); + } + @Test public void testParseErrorNotComparison() throws Exception { setFailFast(false); -- cgit v1.2.3