From 86ab331b473cfe2612ecae75c637b1f72c902edc Mon Sep 17 00:00:00 2001 From: gjoranv Date: Wed, 16 Aug 2017 13:53:37 +0200 Subject: Move namespace testing to separate class. --- .../config/codegen/DefParserNamespaceTest.java | 141 +++++++++++++++++++++ .../com/yahoo/config/codegen/DefParserTest.java | 120 +----------------- 2 files changed, 145 insertions(+), 116 deletions(-) create mode 100644 configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java (limited to 'configgen/src/test/java/com') diff --git a/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java b/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java new file mode 100644 index 00000000000..a0dff8dcf91 --- /dev/null +++ b/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java @@ -0,0 +1,141 @@ +package com.yahoo.config.codegen; + +import org.junit.Test; + +import java.io.IOException; + +import static com.yahoo.config.codegen.DefParserTest.assertExceptionAndMessage; +import static com.yahoo.config.codegen.DefParserTest.createDefTemplate; +import static com.yahoo.config.codegen.DefParserTest.createParser; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; + +/** + * @author gjoranv + * @author musum + */ +public class DefParserNamespaceTest { + + @Test + public void namespace_is_set_on_root_node() { + DefParser parser = createParser("version=1\nnamespace=myproject.config\na string\n"); + CNode root = parser.getTree(); + assertThat(root.getNamespace(), is("myproject.config")); + } + + @Test(expected = CodegenRuntimeException.class) + public void uppercase_chars_are_not_allowed() { + createParser("version=1\nnamespace=Foo\na string\n").getTree(); + } + + @Test(expected = CodegenRuntimeException.class) + public void explicit_com_yahoo_prefix_is_not_allowed() { + createParser("version=1\n" + + "namespace=com.yahoo.myproject.config\n" + + "a string\n").getTree(); + } + + @Test + public void spaces_are_allowed_around_equals_sign() { + DefParser parser = createParser("version=1\nnamespace = myproject.config\na string\n"); + CNode root = parser.getTree(); + assertThat(root.getNamespace(), is("myproject.config")); + } + + @Test + public void empty_namespace_is_not_allowed() { + // invalid + DefParser parser = createParser("version=1\nnamespace \na string\n"); + try { + parser.getTree(); + fail(); + } catch (Exception e) { + //e.printStackTrace(); + assertExceptionAndMessage(e, CodegenRuntimeException.class, + "Error parsing or reading config definition.Error when parsing line 2: namespace \n" + + "namespace"); + } + } + + @Test + public void consecutive_dots_are_not_allowed() { + // invalid + DefParser parser = createParser("version=1\nnamespace=a..b\na string\n"); + try { + parser.getTree(); + fail(); + } catch (Exception e) { + //e.printStackTrace(); + assertExceptionAndMessage(e, CodegenRuntimeException.class, + "Error parsing or reading config definition.Error when parsing line 2: namespace=a..b\n" + + "namespace=a..b"); + } + } + + @Test + public void namespace_alters_def_md5() { + DefParser parser = createParser("version=1\na string\n"); + CNode root = parser.getTree(); + + parser = createParser("version=1\nnamespace=myproject.config\na string\n"); + CNode namespaceRoot = parser.getTree(); + + assertThat(root.defMd5, not(namespaceRoot.defMd5)); + } + + + @Test + public void number_is_allowed_as_non_leading_char_in_namespace() throws IOException, DefParser.DefParserException { + StringBuilder sb = createDefTemplate(); + String line = "namespace=a.b.c2\nfoo int\n"; + sb.append(line); + createParser(sb.toString()).parse(); + } + + @Test + public void number_is_not_allowed_as_namespace_start_char() throws IOException, DefParser.DefParserException { + StringBuilder sb = createDefTemplate(); + String line = "namespace=2.a.b"; + sb.append(line).append("\n"); + Class exceptionClass = DefParser.DefParserException.class; + try { + createParser(sb.toString()).parse(); + fail("Didn't find expected exception of type " + exceptionClass); + } catch (Exception e) { + assertExceptionAndMessage(e, exceptionClass, + "Error when parsing line 3: " + line + "\n" + line); + } + } + + @Test + public void number_is_not_allowed_as_leading_char_in_namespace_token() throws IOException, DefParser.DefParserException { + StringBuilder sb = createDefTemplate(); + String line = "namespace=a.b.2c"; + sb.append(line).append("\n"); + Class exceptionClass = DefParser.DefParserException.class; + try { + createParser(sb.toString()).parse(); + fail("Didn't find expected exception of type " + exceptionClass); + } catch (Exception e) { + assertExceptionAndMessage(e, exceptionClass, + "Error when parsing line 3: " + line + "\n" + line); + } + + } + + @Test + public void underscore_in_namespace_is_allowed() throws IOException, DefParser.DefParserException { + StringBuilder sb = createDefTemplate(); + String line = "namespace=a_b.c\nfoo int\n"; + sb.append(line); + createParser(sb.toString()).parse(); + + sb = createDefTemplate(); + line = "namespace=a_b.c_d\nfoo int\n"; + sb.append(line); + createParser(sb.toString()).parse(); + } + +} diff --git a/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java b/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java index b899b3596c4..a59a70751b4 100644 --- a/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java +++ b/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java @@ -81,66 +81,6 @@ public class DefParserTest { assertThat(root.defMd5, is("a5e5fdbb2b27e56ba7d5e60e335c598b")); } - @Test - public void testExplicitNamespace() { - DefParser parser = createParser("version=1\nnamespace=myproject.config\na string\n"); - CNode root = parser.getTree(); - assertThat(root.getNamespace(), is("myproject.config")); - - // with spaces - parser = createParser("version=1\nnamespace = myproject.config\na string\n"); - root = parser.getTree(); - assertThat(root.getNamespace(), is("myproject.config")); - - // invalid - parser = createParser("version=1\nnamespace \na string\n"); - try { - parser.getTree(); - fail(); - } catch (Exception e) { - //e.printStackTrace(); - assertExceptionAndMessage(e, CodegenRuntimeException.class, - "Error parsing or reading config definition.Error when parsing line 2: namespace \n" + - "namespace"); - } - - // invalid - parser = createParser("version=1\nnamespace=a..b\na string\n"); - try { - parser.getTree(); - fail(); - } catch (Exception e) { - //e.printStackTrace(); - assertExceptionAndMessage(e, CodegenRuntimeException.class, - "Error parsing or reading config definition.Error when parsing line 2: namespace=a..b\n" + - "namespace=a..b"); - } - } - - @Test - public void verifyThatExplicitNamespaceAltersDefMd5() { - DefParser parser = createParser("version=1\na string\n"); - CNode root = parser.getTree(); - - parser = createParser("version=1\nnamespace=myproject.config\na string\n"); - CNode namespaceRoot = parser.getTree(); - - assertThat(root.defMd5, not(namespaceRoot.defMd5)); - } - - - @Test(expected = CodegenRuntimeException.class) - public void verify_fail_on_illegal_char_in_namespace() { - createParser("version=1\nnamespace=Foo\na string\n").getTree(); - } - - @Test(expected = CodegenRuntimeException.class) - public void verify_fail_on_com_yahoo_in_explicit_namespace() { - createParser("version=1\n" + - "namespace=com.yahoo.myproject.config\n" + - "a string\n").getTree(); - } - @Test public void testInvalidType() { Class exceptionClass = DefParser.DefParserException.class; @@ -184,7 +124,7 @@ public class DefParserTest { } } - private DefParser createParser(String def) { + static DefParser createParser(String def) { return new DefParser("test", new StringReader(def)); } @@ -221,12 +161,12 @@ public class DefParserTest { } // Helper method for checking correct exception class and message - private void assertExceptionAndMessage(Exception e, Class exceptionClass, String message) { + static void assertExceptionAndMessage(Exception e, Class exceptionClass, String message) { assertExceptionAndMessage(e, exceptionClass, message, true); } // Helper method for checking correct exception class and message - private void assertExceptionAndMessage(Exception e, Class exceptionClass, String message, boolean exact) { + static void assertExceptionAndMessage(Exception e, Class exceptionClass, String message, boolean exact) { if (exact) { assertEquals(message, e.getMessage()); } else { @@ -458,59 +398,7 @@ public class DefParserTest { } } - @Test - public void number_is_allowed_as_non_leading_char_in_namespace() throws IOException, DefParser.DefParserException { - StringBuilder sb = createDefTemplate(); - String line = "namespace=a.b.c2\nfoo int\n"; - sb.append(line); - createParser(sb.toString()).parse(); - } - - @Test - public void number_is_not_allowed_as_namespace_start_char() throws IOException, DefParser.DefParserException { - StringBuilder sb = createDefTemplate(); - String line = "namespace=2.a.b"; - sb.append(line).append("\n"); - Class exceptionClass = DefParser.DefParserException.class; - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + line + "\n" + line); - } - } - - @Test - public void number_is_not_allowed_as_leading_char_in_namespace_token() throws IOException, DefParser.DefParserException { - StringBuilder sb = createDefTemplate(); - String line = "namespace=a.b.2c"; - sb.append(line).append("\n"); - Class exceptionClass = DefParser.DefParserException.class; - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + line + "\n" + line); - } - - } - - @Test - public void underscore_in_namespace_is_allowed() throws IOException, DefParser.DefParserException { - StringBuilder sb = createDefTemplate(); - String line = "namespace=a_b.c\nfoo int\n"; - sb.append(line); - createParser(sb.toString()).parse(); - - sb = createDefTemplate(); - line = "namespace=a_b.c_d\nfoo int\n"; - sb.append(line); - createParser(sb.toString()).parse(); - } - - private StringBuilder createDefTemplate() { + static StringBuilder createDefTemplate() { StringBuilder sb = new StringBuilder(); sb.append("version=8\n"); // Add a comment line to check that we get correct line number with comments -- cgit v1.2.3