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