From 0351a150673e50ad08ecf117e3c5987cead91e29 Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Thu, 7 Jan 2016 14:03:17 +1300 Subject: [PATCH] #516 - DdlParser for seed and init sql is not ignoring sql comment lines (starting with --) --- .../avaje/ebean/dbmigration/DdlParser.java | 5 ++ .../ebean/dbmigration/DdlParserTest.java | 58 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/test/java/com/avaje/ebean/dbmigration/DdlParserTest.java diff --git a/src/main/java/com/avaje/ebean/dbmigration/DdlParser.java b/src/main/java/com/avaje/ebean/dbmigration/DdlParser.java index 2f9f2cf25..c0f787d7e 100644 --- a/src/main/java/com/avaje/ebean/dbmigration/DdlParser.java +++ b/src/main/java/com/avaje/ebean/dbmigration/DdlParser.java @@ -81,6 +81,11 @@ public class DdlParser { return; } + if (sb.length() == 0 && (line.isEmpty() || line.startsWith("--"))) { + // ignore leading empty lines and sql comments + return; + } + if (inDbProcedure) { sb.append(line).append(" "); return; diff --git a/src/test/java/com/avaje/ebean/dbmigration/DdlParserTest.java b/src/test/java/com/avaje/ebean/dbmigration/DdlParserTest.java new file mode 100644 index 000000000..e2115d1af --- /dev/null +++ b/src/test/java/com/avaje/ebean/dbmigration/DdlParserTest.java @@ -0,0 +1,58 @@ +package com.avaje.ebean.dbmigration; + +import org.junit.Test; + +import java.io.StringReader; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + + +public class DdlParserTest { + + DdlParser parser = new DdlParser(); + + @Test + public void parse_ignoresEmptyLines() throws Exception { + + List stmts = parser.parse(new StringReader("\n\none;\n\ntwo;\n\n")); + + assertThat(stmts).hasSize(2); + assertThat(stmts).contains("one;","two;"); + } + + @Test + public void parse_ignoresComments_whenFirst() throws Exception { + + List stmts = parser.parse(new StringReader("-- comment\ntwo;")); + + assertThat(stmts).hasSize(1); + assertThat(stmts).contains("two;"); + } + + @Test + public void parse_ignoresEmptyLines_whenFirst() throws Exception { + + List stmts = parser.parse(new StringReader("\n\n-- comment\ntwo;\n\n")); + assertThat(stmts).hasSize(1); + assertThat(stmts).contains("two;"); + } + + @Test + public void parse_inlineEmptyLines_replacedWithSpace() throws Exception { + + List stmts = parser.parse(new StringReader("\n\n-- comment\none\ntwo;\n\n")); + assertThat(stmts).hasSize(1); + assertThat(stmts).contains("one two;"); + } + + + @Test + public void parse_ignoresComments() throws Exception { + + List stmts = parser.parse(new StringReader("one;\n-- comment\ntwo;")); + + assertThat(stmts).hasSize(2); + assertThat(stmts).contains("one;","two;"); + } +} \ No newline at end of file