From 4ff8d1dc17d353b63ad5dda699f88acd78dfb763 Mon Sep 17 00:00:00 2001 From: Ivan Ponomarev Date: Mon, 15 Jan 2024 13:14:00 +0000 Subject: [PATCH] Keep semicolons after END when semicolon is not the separator (#8108) --- .../main/java/org/testcontainers/ext/ScriptSplitter.java | 2 +- .../java/org/testcontainers/ext/ScriptSplittingTest.java | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/database-commons/src/main/java/org/testcontainers/ext/ScriptSplitter.java b/modules/database-commons/src/main/java/org/testcontainers/ext/ScriptSplitter.java index 888bf4df420..ba05b71e7bd 100644 --- a/modules/database-commons/src/main/java/org/testcontainers/ext/ScriptSplitter.java +++ b/modules/database-commons/src/main/java/org/testcontainers/ext/ScriptSplitter.java @@ -101,8 +101,8 @@ private boolean endOfBlock(boolean recursive) { if (";".equals(scanner.getCurrentMatch())) { if (recursive) { sb.append(temporary); - appendMatch(); } + appendMatch(); return true; } sb.append(temporary); diff --git a/modules/database-commons/src/test/java/org/testcontainers/ext/ScriptSplittingTest.java b/modules/database-commons/src/test/java/org/testcontainers/ext/ScriptSplittingTest.java index 7b2068df672..baaf3bbd08c 100644 --- a/modules/database-commons/src/test/java/org/testcontainers/ext/ScriptSplittingTest.java +++ b/modules/database-commons/src/test/java/org/testcontainers/ext/ScriptSplittingTest.java @@ -320,12 +320,19 @@ public void testIfLoopBlocksSpecificSeparator() { " IF something_wrong THEN LEAVE rec_loop; END IF;\n" + " do_something_else;\n" + " END LOOP;\n" + - "END", + "END;", "CALL something();" ); splitAndCompare(script, expected, "@"); } + @Test + public void oracleStyleBlocks() { + String script = "BEGIN END; /\n" + "BEGIN END;"; + List expected = Arrays.asList("BEGIN END;", "BEGIN END;"); + splitAndCompare(script, expected, "/"); + } + @Test public void testMultiProcedureMySQLScript() { String script =