aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java170
1 files changed, 5 insertions, 165 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java
index 13c0987364..fa98c70e3d 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java
@@ -14,11 +14,9 @@
package com.google.devtools.build.lib.syntax;
-import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import com.google.common.collect.Lists;
@@ -27,7 +25,6 @@ import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import java.util.Arrays;
-import java.util.IllegalFormatException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -39,15 +36,18 @@ import java.util.Map;
@RunWith(JUnit4.class)
public class EvalUtilsTest {
- private static List<?> makeList(Object ...args) {
+ private static List<?> makeList(Object... args) {
return EvalUtils.makeSequence(Arrays.<Object>asList(args), false);
}
- private static List<?> makeTuple(Object ...args) {
+
+ private static List<?> makeTuple(Object... args) {
return EvalUtils.makeSequence(Arrays.<Object>asList(args), true);
}
+
private static Map<Object, Object> makeDict() {
return new LinkedHashMap<>();
}
+
private static FilesetEntry makeFilesetEntry() {
try {
return new FilesetEntry(Label.parseAbsolute("//foo:bar"),
@@ -78,164 +78,4 @@ public class EvalUtilsTest {
assertFalse(EvalUtils.isImmutable(makeDict()));
assertFalse(EvalUtils.isImmutable(makeFilesetEntry()));
}
-
- @Test
- public void testPrintValue() throws Exception {
- // Note that prettyPrintValue and printValue only differ on behaviour of
- // labels and strings at toplevel.
- assertEquals("foo\nbar", EvalUtils.printValue("foo\nbar"));
- assertEquals("\"foo\\nbar\"", EvalUtils.prettyPrintValue("foo\nbar"));
- assertEquals("foo\nbar", EvalUtils.printValue("foo\nbar"));
- assertEquals("'", EvalUtils.printValue("'"));
- assertEquals("\"'\"", EvalUtils.prettyPrintValue("'"));
- assertEquals("\"", EvalUtils.printValue("\""));
- assertEquals("\"\\\"\"", EvalUtils.prettyPrintValue("\""));
- assertEquals("a\\b", EvalUtils.printValue("a\\b"));
- assertEquals("\"a\\\\b\"", EvalUtils.prettyPrintValue("a\\b"));
- assertEquals("3", EvalUtils.printValue(3));
- assertEquals("3", EvalUtils.prettyPrintValue(3));
- assertEquals("None", EvalUtils.printValue(Environment.NONE));
- assertEquals("None", EvalUtils.prettyPrintValue(Environment.NONE));
-
- assertEquals("//x:x", EvalUtils.printValue(Label.parseAbsolute("//x")));
- assertEquals("\"//x:x\"", EvalUtils.prettyPrintValue(Label.parseAbsolute("//x")));
-
- List<?> list = makeList("foo", "bar");
- List<?> tuple = makeTuple("foo", "bar");
-
- assertEquals("(1, [\"foo\", \"bar\"], 3)",
- EvalUtils.printValue(makeTuple(1, list, 3)));
- assertEquals("(1, [\"foo\", \"bar\"], 3)",
- EvalUtils.prettyPrintValue(makeTuple(1, list, 3)));
- assertEquals("[1, (\"foo\", \"bar\"), 3]",
- EvalUtils.printValue(makeList(1, tuple, 3)));
- assertEquals("[1, (\"foo\", \"bar\"), 3]",
- EvalUtils.prettyPrintValue(makeList(1, tuple, 3)));
-
- Map<Object, Object> dict = makeDict();
- dict.put(1, tuple);
- dict.put(2, list);
- dict.put("foo", makeList());
- assertEquals("{1: (\"foo\", \"bar\"), 2: [\"foo\", \"bar\"], \"foo\": []}",
- EvalUtils.printValue(dict));
- assertEquals("{1: (\"foo\", \"bar\"), 2: [\"foo\", \"bar\"], \"foo\": []}",
- EvalUtils.prettyPrintValue(dict));
- assertEquals("FilesetEntry(srcdir = \"//foo:bar\", files = [], "
- + "excludes = [\"xyz\"], destdir = \"\", "
- + "strip_prefix = \".\", symlinks = \"copy\")",
- EvalUtils.prettyPrintValue(makeFilesetEntry()));
- }
-
- private void checkFormatPositionalFails(String format, List<?> tuple,
- String errorMessage) {
- try {
- EvalUtils.formatString(format, tuple);
- fail();
- } catch (IllegalFormatException e) {
- assertThat(e).hasMessage(errorMessage);
- }
- }
-
- @Test
- public void testFormatPositional() throws Exception {
- assertEquals("foo 3", EvalUtils.formatString("%s %d", makeTuple("foo", 3)));
-
- // Note: formatString doesn't perform scalar x -> (x) conversion;
- // The %-operator is responsible for that.
- assertThat(EvalUtils.formatString("", makeTuple())).isEmpty();
- assertEquals("foo", EvalUtils.formatString("%s", makeTuple("foo")));
- assertEquals("3.14159", EvalUtils.formatString("%s", makeTuple(3.14159)));
- checkFormatPositionalFails("%s", makeTuple(1, 2, 3),
- "not all arguments converted during string formatting");
- assertEquals("%foo", EvalUtils.formatString("%%%s", makeTuple("foo")));
- checkFormatPositionalFails("%%s", makeTuple("foo"),
- "not all arguments converted during string formatting");
- checkFormatPositionalFails("% %s", makeTuple("foo"),
- "invalid arguments for format string");
- assertEquals("[1, 2, 3]", EvalUtils.formatString("%s", makeTuple(makeList(1, 2, 3))));
- assertEquals("(1, 2, 3)", EvalUtils.formatString("%s", makeTuple(makeTuple(1, 2, 3))));
- assertEquals("[]", EvalUtils.formatString("%s", makeTuple(makeList())));
- assertEquals("()", EvalUtils.formatString("%s", makeTuple(makeTuple())));
-
- checkFormatPositionalFails("%.3g", makeTuple(), "invalid arguments for format string");
- checkFormatPositionalFails("%.3g", makeTuple(1, 2), "invalid arguments for format string");
- checkFormatPositionalFails("%.s", makeTuple(), "invalid arguments for format string");
- }
-
- private String createExpectedFilesetEntryString(FilesetEntry.SymlinkBehavior symlinkBehavior) {
- return "FilesetEntry(srcdir = \"//x:x\","
- + " files = [\"//x:x\"],"
- + " excludes = [],"
- + " destdir = \"\","
- + " strip_prefix = \".\","
- + " symlinks = \"" + symlinkBehavior.toString().toLowerCase() + "\")";
- }
-
- private FilesetEntry createTestFilesetEntry(FilesetEntry.SymlinkBehavior symlinkBehavior)
- throws Exception {
- Label label = Label.parseAbsolute("//x");
- return new FilesetEntry(label,
- Arrays.asList(label),
- Arrays.<String>asList(),
- "",
- symlinkBehavior,
- ".");
- }
-
- @Test
- public void testFilesetEntrySymlinkAttr() throws Exception {
- FilesetEntry entryDereference =
- createTestFilesetEntry(FilesetEntry.SymlinkBehavior.DEREFERENCE);
-
- assertEquals(createExpectedFilesetEntryString(FilesetEntry.SymlinkBehavior.DEREFERENCE),
- EvalUtils.prettyPrintValue(entryDereference));
- }
-
- private FilesetEntry createStripPrefixFilesetEntry(String stripPrefix) throws Exception {
- Label label = Label.parseAbsolute("//x");
- return new FilesetEntry(
- label,
- Arrays.asList(label),
- Arrays.<String>asList(),
- "",
- FilesetEntry.SymlinkBehavior.DEREFERENCE,
- stripPrefix);
- }
-
- @Test
- public void testFilesetEntryStripPrefixAttr() throws Exception {
- FilesetEntry withoutStripPrefix = createStripPrefixFilesetEntry(".");
- FilesetEntry withStripPrefix = createStripPrefixFilesetEntry("orange");
-
- String prettyWithout = EvalUtils.prettyPrintValue(withoutStripPrefix);
- String prettyWith = EvalUtils.prettyPrintValue(withStripPrefix);
-
- assertThat(prettyWithout).contains("strip_prefix = \".\"");
- assertThat(prettyWith).contains("strip_prefix = \"orange\"");
- }
-
- @Test
- public void testRegressionCrashInPrettyPrintValue() throws Exception {
- // Would cause crash in code such as this:
- // Fileset(name='x', entries=[], out=[FilesetEntry(files=['a'])])
- // While formatting the "expected x, got y" message for the 'out'
- // attribute, prettyPrintValue(FilesetEntry) would be recursively called
- // with a List<Label> even though this isn't a valid datatype in the
- // interpreter.
- // Fileset isn't part of bazel, even though FilesetEntry is.
- Label label = Label.parseAbsolute("//x");
- assertEquals("FilesetEntry(srcdir = \"//x:x\","
- + " files = [\"//x:x\"],"
- + " excludes = [],"
- + " destdir = \"\","
- + " strip_prefix = \".\","
- + " symlinks = \"copy\")",
- EvalUtils.prettyPrintValue(
- new FilesetEntry(label,
- Arrays.asList(label),
- Arrays.<String>asList(),
- "",
- FilesetEntry.SymlinkBehavior.COPY,
- ".")));
- }
}