|
20 | 20 | import org.apache.ibatis.datasource.unpooled.UnpooledDataSource;
|
21 | 21 | import org.apache.ibatis.io.Resources;
|
22 | 22 | import static org.junit.Assert.*;
|
| 23 | +import static org.mockito.Mockito.*; |
23 | 24 |
|
24 | 25 | import org.junit.Ignore;
|
25 | 26 | import org.junit.Test;
|
| 27 | +import org.mockito.Mockito; |
26 | 28 |
|
27 | 29 | import javax.sql.DataSource;
|
28 | 30 | import java.io.IOException;
|
|
32 | 34 | import java.io.StringWriter;
|
33 | 35 | import java.sql.Connection;
|
34 | 36 | import java.sql.SQLException;
|
| 37 | +import java.sql.Statement; |
35 | 38 | import java.util.List;
|
36 | 39 | import java.util.Map;
|
37 | 40 | import java.util.Properties;
|
@@ -241,4 +244,61 @@ private void assertProductsTableExistsAndLoaded() throws IOException, SQLExcepti
|
241 | 244 | }
|
242 | 245 | }
|
243 | 246 |
|
| 247 | + @Test |
| 248 | + public void shouldAcceptDelimiterVariations() throws Exception { |
| 249 | + Connection conn = mock(Connection.class); |
| 250 | + Statement stmt = mock(Statement.class); |
| 251 | + when(conn.createStatement()).thenReturn(stmt); |
| 252 | + ScriptRunner runner = new ScriptRunner(conn); |
| 253 | + |
| 254 | + String sql = "-- @DELIMITER | \n" |
| 255 | + + "line 1;\n" |
| 256 | + + "line 2;\n" |
| 257 | + + "|\n" |
| 258 | + + "// @DELIMITER ;\n" |
| 259 | + + "line 3; \n" |
| 260 | + + "-- //@deLimiTer $ blah\n" |
| 261 | + + "line 4$\n" |
| 262 | + + "// //@DELIMITER %\n" |
| 263 | + + "line 5%\n"; |
| 264 | + Reader reader = new StringReader(sql); |
| 265 | + runner.runScript(reader); |
| 266 | + |
| 267 | + verify(stmt, Mockito.times(1)).execute(eq("line 1;\n" + "line 2;\n\n")); |
| 268 | + verify(stmt, Mockito.times(1)).execute(eq("line 3\n")); |
| 269 | + verify(stmt, Mockito.times(1)).execute(eq("line 4\n")); |
| 270 | + verify(stmt, Mockito.times(1)).execute(eq("line 5\n")); |
| 271 | + } |
| 272 | + |
| 273 | + @Test |
| 274 | + public void test() throws Exception { |
| 275 | + StringBuilder sb = new StringBuilder(); |
| 276 | + StringBuilder sb2 = y(sb); |
| 277 | + assertTrue(sb == sb2); |
| 278 | + } |
| 279 | + |
| 280 | + private StringBuilder y(StringBuilder sb) { |
| 281 | + sb.append("ABC"); |
| 282 | + return sb; |
| 283 | + } |
| 284 | + |
| 285 | + @Test |
| 286 | + public void shouldAcceptMultiCharDelimiter() throws Exception { |
| 287 | + Connection conn = mock(Connection.class); |
| 288 | + Statement stmt = mock(Statement.class); |
| 289 | + when(conn.createStatement()).thenReturn(stmt); |
| 290 | + ScriptRunner runner = new ScriptRunner(conn); |
| 291 | + |
| 292 | + String sql = "-- @DELIMITER || \n" |
| 293 | + + "line 1;\n" |
| 294 | + + "line 2;\n" |
| 295 | + + "||\n" |
| 296 | + + "// @DELIMITER ;\n" |
| 297 | + + "line 3; \n"; |
| 298 | + Reader reader = new StringReader(sql); |
| 299 | + runner.runScript(reader); |
| 300 | + |
| 301 | + verify(stmt, Mockito.times(1)).execute(eq("line 1;\n" + "line 2;\n\n")); |
| 302 | + verify(stmt, Mockito.times(1)).execute(eq("line 3\n")); |
| 303 | + } |
244 | 304 | }
|
0 commit comments