|
1 | 1 | /*
|
2 |
| - * Copyright 2002-2019 the original author or authors. |
| 2 | + * Copyright 2002-2021 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
20 | 20 | import java.util.List;
|
21 | 21 |
|
22 | 22 | import org.junit.jupiter.api.Test;
|
| 23 | +import org.junit.jupiter.params.ParameterizedTest; |
| 24 | +import org.junit.jupiter.params.provider.CsvSource; |
23 | 25 |
|
24 | 26 | import org.springframework.core.io.ClassPathResource;
|
25 | 27 | import org.springframework.core.io.support.EncodedResource;
|
@@ -165,17 +167,25 @@ public void readAndSplitScriptContainingMultiLineNestedComments() throws Excepti
|
165 | 167 | assertThat(statements).containsExactly(statement1, statement2);
|
166 | 168 | }
|
167 | 169 |
|
168 |
| - @Test |
169 |
| - public void containsDelimiters() { |
170 |
| - assertThat(containsSqlScriptDelimiters("select 1\n select ';'", ";")).isFalse(); |
171 |
| - assertThat(containsSqlScriptDelimiters("select 1; select 2", ";")).isTrue(); |
172 |
| - assertThat(containsSqlScriptDelimiters("select 1; select '\\n\n';", "\n")).isFalse(); |
173 |
| - assertThat(containsSqlScriptDelimiters("select 1\n select 2", "\n")).isTrue(); |
174 |
| - assertThat(containsSqlScriptDelimiters("select 1\n select 2", "\n\n")).isFalse(); |
175 |
| - assertThat(containsSqlScriptDelimiters("select 1\n\n select 2", "\n\n")).isTrue(); |
176 |
| - // MySQL style escapes '\\' |
177 |
| - assertThat(containsSqlScriptDelimiters("insert into users(first_name, last_name)\nvalues('a\\\\', 'b;')", ";")).isFalse(); |
178 |
| - assertThat(containsSqlScriptDelimiters("insert into users(first_name, last_name)\nvalues('Charles', 'd\\'Artagnan'); select 1;", ";")).isTrue(); |
| 170 | + @ParameterizedTest |
| 171 | + @CsvSource(delimiter = '#', value = { |
| 172 | + // semicolon |
| 173 | + "'select 1\n select '';''' # ; # false", |
| 174 | + "'select 1\n select \";\"' # ; # false", |
| 175 | + "'select 1; select 2' # ; # true", |
| 176 | + // newline |
| 177 | + "'select 1; select ''\n''' # '\n' # false", |
| 178 | + "'select 1; select \"\n\"' # '\n' # false", |
| 179 | + "'select 1\n select 2' # '\n' # true", |
| 180 | + // double newline |
| 181 | + "'select 1\n select 2' # '\n\n' # false", |
| 182 | + "'select 1\n\n select 2' # '\n\n' # true", |
| 183 | + // semicolon with MySQL style escapes '\\' |
| 184 | + "'insert into users(first, last)\nvalues(''a\\\\'', ''b;'')' # ; # false", |
| 185 | + "'insert into users(first, last)\nvalues(''Charles'', ''d\\''Artagnan''); select 1' # ; # true" |
| 186 | + }) |
| 187 | + public void containsDelimiter(String script, String delimiter, boolean expected) { |
| 188 | + assertThat(containsSqlScriptDelimiters(script, delimiter)).isEqualTo(expected); |
179 | 189 | }
|
180 | 190 |
|
181 | 191 | private String readScript(String path) throws Exception {
|
|
0 commit comments