diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/BindingEscapingTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/BindingEscapingTest.java index a1abf0750..b2442635a 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/BindingEscapingTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/BindingEscapingTest.java @@ -31,7 +31,8 @@ public class BindingEscapingTest { @Test public void testEscapedBindings() { - DataMapper mapper = VirtData.getMapper("Template('\"-{}-\"Func(234)\\\"\\)',NumberNameToString());'",String.class); + DataMapper mapper = VirtData.getMapper("Template('\"-{}-\"Func(234)\\\\\"\\\\)',NumberNameToString())" + + ";'",String.class); String s = mapper.get(234); assertThat(s).isEqualTo("\"-two hundred and thirty four-\"Func(234)\\\"\\)"); } diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/Template.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/Template.java index 26a9bbd1f..f108946be 100644 --- a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/Template.java +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/Template.java @@ -109,7 +109,7 @@ public class Template implements LongFunction { public String unescape(String partial) { StringBuilder unescaped = new StringBuilder(); try { - Pattern escapes = Pattern.compile("\\\\[^\\\\]"); + Pattern escapes = Pattern.compile("\\\\."); Matcher m = escapes.matcher(partial); int pos = 0; diff --git a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/unary_string/TemplateTest.java b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/unary_string/TemplateTest.java index c9ea92050..ffa77efbb 100644 --- a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/unary_string/TemplateTest.java +++ b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/unary_string/TemplateTest.java @@ -64,4 +64,13 @@ public class TemplateTest { assertThat(unescaped2).isEqualTo("' one ' two '"); } + @Test + public void testBackslashUnescaping() { + String escaped="front \\\\\" back"; + LongFunction func = String::valueOf; + Template template = new Template("{} extra", func); + String unescaped = template.unescape(escaped); + assertThat(unescaped).isEqualTo("front \\\" back"); + + } }