From 12342d7f8e3be33ac9d040451167a33f74a55b3b Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Wed, 2 Feb 2022 16:57:27 +0100 Subject: [PATCH] Sync ScriptUtilsUnitTests implementations --- .../connection/init/ScriptUtilsUnitTests.java | 70 ++++++++++--------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/spring-r2dbc/src/test/java/org/springframework/r2dbc/connection/init/ScriptUtilsUnitTests.java b/spring-r2dbc/src/test/java/org/springframework/r2dbc/connection/init/ScriptUtilsUnitTests.java index 8cf650bcb4..63fe4ecd96 100644 --- a/spring-r2dbc/src/test/java/org/springframework/r2dbc/connection/init/ScriptUtilsUnitTests.java +++ b/spring-r2dbc/src/test/java/org/springframework/r2dbc/connection/init/ScriptUtilsUnitTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 the original author or authors. + * Copyright 2002-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -180,37 +180,43 @@ public class ScriptUtilsUnitTests { } @ParameterizedTest - @CsvSource(delimiter = '#', value = { - // semicolon - "'select 1\n select '';''' # ; # false", - "'select 1\n select \";\"' # ; # false", - "'select 1; select 2' # ; # true", - // newline - "'select 1; select ''\n''' # '\n' # false", - "'select 1; select \"\n\"' # '\n' # false", - "'select 1\n select 2' # '\n' # true", - // double newline - "'select 1\n select 2' # '\n\n' # false", - "'select 1\n\n select 2' # '\n\n' # true", - // semicolon with MySQL style escapes '\\' - "'insert into users(first, last)\nvalues(''a\\\\'', ''b;'')' # ; # false", - "'insert into users(first, last)\nvalues(''Charles'', ''d\\''Artagnan''); select 1' # ; # true", - // semicolon inside comments - "'-- a;b;c\ninsert into colors(color_num) values(42);' # ; # true", - "'/* a;b;c */\ninsert into colors(color_num) values(42);' # ; # true", - "'-- a;b;c\ninsert into colors(color_num) values(42)' # ; # false", - "'/* a;b;c */\ninsert into colors(color_num) values(42)' # ; # false", - // single quotes inside comments - "'-- What\\''s your favorite color?\ninsert into colors(color_num) values(42);' # ; # true", - "'-- What''s your favorite color?\ninsert into colors(color_num) values(42);' # ; # true", - "'/* What\\''s your favorite color? */\ninsert into colors(color_num) values(42);' # ; # true", - "'/* What''s your favorite color? */\ninsert into colors(color_num) values(42);' # ; # true", - // double quotes inside comments - "'-- double \" quotes\ninsert into colors(color_num) values(42);' # ; # true", - "'-- double \\\" quotes\ninsert into colors(color_num) values(42);' # ; # true", - "'/* double \" quotes */\ninsert into colors(color_num) values(42);' # ; # true", - "'/* double \\\" quotes */\ninsert into colors(color_num) values(42);' # ; # true" - }) + @CsvSource(delimiter = '|', quoteCharacter = '~', textBlock = """ + # semicolon + ~select 1\n select ';'~ | ; | false + ~select 1\n select ";"~ | ; | false + ~select 1; select 2~ | ; | true + + # newline + ~select 1; select '\n'~ | ~\n~ | false + ~select 1; select "\n"~ | ~\n~ | false + ~select 1\n select 2~ | ~\n~ | true + + # double newline + ~select 1\n select 2~ | ~\n\n~ | false + ~select 1\n\n select 2~ | ~\n\n~ | true + + # semicolon with MySQL style escapes '\\' + ~insert into users(first, last)\n values('a\\\\', 'b;')~ | ; | false + ~insert into users(first, last)\n values('Charles', 'd\\'Artagnan'); select 1~ | ; | true + + # semicolon inside comments + ~-- a;b;c\n insert into colors(color_num) values(42);~ | ; | true + ~/* a;b;c */\n insert into colors(color_num) values(42);~ | ; | true + ~-- a;b;c\n insert into colors(color_num) values(42)~ | ; | false + ~/* a;b;c */\n insert into colors(color_num) values(42)~ | ; | false + + # single quotes inside comments + ~-- What\\'s your favorite color?\n insert into colors(color_num) values(42);~ | ; | true + ~-- What's your favorite color?\n insert into colors(color_num) values(42);~ | ; | true + ~/* What\\'s your favorite color? */\n insert into colors(color_num) values(42);~ | ; | true + ~/* What's your favorite color? */\n insert into colors(color_num) values(42);~ | ; | true + + # double quotes inside comments + ~-- double " quotes\n insert into colors(color_num) values(42);~ | ; | true + ~-- double \\" quotes\n insert into colors(color_num) values(42);~ | ; | true + ~/* double " quotes */\n insert into colors(color_num) values(42);~ | ; | true + ~/* double \\" quotes */\n insert into colors(color_num) values(42);~ | ; | true + """) public void containsStatementSeparator(String script, String delimiter, boolean expected) { boolean contains = ScriptUtils.containsStatementSeparator(null, script, delimiter, DEFAULT_COMMENT_PREFIXES, DEFAULT_BLOCK_COMMENT_START_DELIMITER, DEFAULT_BLOCK_COMMENT_END_DELIMITER);