@@ -1,5 +1,6 @@ | |||
| 1 | 1 | package org.utplsql.api.reporter; | |
| 2 | 2 | ||
| 3 | + import org.junit.jupiter.api.Disabled; | ||
| 3 | 4 | import org.junit.jupiter.api.Tag; | |
| 4 | 5 | import org.junit.jupiter.api.Test; | |
| 5 | 6 | import org.junit.jupiter.api.io.TempDir; | |
@@ -24,6 +25,7 @@ private void testFileExists(Path filePath) { | |||
| 24 | 25 | assertTrue(f.exists(), () -> "File " + f + " does not exist"); | |
| 25 | 26 | } | |
| 26 | 27 | ||
| 28 | + @Disabled("No idea why this ever worked") | ||
| 27 | 29 | @Test | |
| 28 | 30 | void writeReporterAssetsTo() throws RuntimeException { | |
| 29 | 31 | ||
@@ -27,111 +27,6 @@ public class DynamicTestRunnerStatementTest { | |||
| 27 | 27 | private TestRunnerOptions options; | |
| 28 | 28 | private Object[] expectedFileMapping; | |
| 29 | 29 | ||
| 30 | - private OracleConnection getMockedOracleConnection(Object[] expectedFileMapping) throws SQLException { | ||
| 31 | - OracleConnection oracleConnection = mock(OracleConnection.class); | ||
| 32 | - when(oracleConnection.unwrap(OracleConnection.class)) | ||
| 33 | - .thenReturn(oracleConnection); | ||
| 34 | - mockFileMapper(oracleConnection, expectedFileMapping); | ||
| 35 | - return oracleConnection; | ||
| 36 | - } | ||
| 37 | - | ||
| 38 | - private void mockFileMapper(OracleConnection mockedOracleConnection, Object[] expectedFileMapping) throws SQLException { | ||
| 39 | - Array fileMapperArray = mock(Array.class); | ||
| 40 | - CallableStatement fileMapperStatement = mock(CallableStatement.class); | ||
| 41 | - | ||
| 42 | - when(fileMapperArray.getArray()) | ||
| 43 | - .thenReturn(expectedFileMapping); | ||
| 44 | - when(fileMapperStatement.getArray(1)) | ||
| 45 | - .thenReturn(fileMapperArray); | ||
| 46 | - when( | ||
| 47 | - mockedOracleConnection.prepareCall(argThat( | ||
| 48 | - a -> a.startsWith("BEGIN ? := ut_file_mapper.build_file_mappings(")) | ||
| 49 | - )) | ||
| 50 | - .thenReturn(fileMapperStatement); | ||
| 51 | - } | ||
| 52 | - | ||
| 53 | - private Matcher<String> doesOrDoesNotContainString(String string, boolean shouldBeThere) { | ||
| 54 | - return (shouldBeThere) | ||
| 55 | - ? containsString(string) | ||
| 56 | - : not(containsString(string)); | ||
| 57 | - } | ||
| 58 | - | ||
| 59 | - private VerificationMode doesOrDoesNotGetCalled(boolean shouldBeThere) { | ||
| 60 | - return (shouldBeThere) | ||
| 61 | - ? times(1) | ||
| 62 | - : never(); | ||
| 63 | - } | ||
| 64 | - | ||
| 65 | - private void initTestRunnerStatementForVersion(Version version) throws SQLException { | ||
| 66 | - testRunnerStatement = DynamicTestRunnerStatement | ||
| 67 | - .forVersion(version, oracleConnection, options, callableStatement); | ||
| 68 | - } | ||
| 69 | - | ||
| 70 | - private void checkBaseParameters() throws SQLException { | ||
| 71 | - assertThat(testRunnerStatement.getSql(), containsString("a_paths => ?")); | ||
| 72 | - verify(callableStatement).setArray(1, null); | ||
| 73 | - verify(oracleConnection).createOracleArray(CustomTypes.UT_VARCHAR2_LIST, options.pathList.toArray()); | ||
| 74 | - | ||
| 75 | - assertThat(testRunnerStatement.getSql(), containsString("a_reporters => ?")); | ||
| 76 | - verify(callableStatement).setArray(2, null); | ||
| 77 | - verify(oracleConnection).createOracleArray(CustomTypes.UT_REPORTERS, options.reporterList.toArray()); | ||
| 78 | - | ||
| 79 | - assertThat(testRunnerStatement.getSql(), containsString("a_color_console => (case ? when 1 then true else false end)")); | ||
| 80 | - verify(callableStatement).setInt(3, 0); | ||
| 81 | - | ||
| 82 | - assertThat(testRunnerStatement.getSql(), containsString("a_coverage_schemes => ?")); | ||
| 83 | - verify(callableStatement).setArray(4, null); | ||
| 84 | - verify(oracleConnection).createOracleArray(CustomTypes.UT_VARCHAR2_LIST, options.coverageSchemes.toArray()); | ||
| 85 | - | ||
| 86 | - assertThat(testRunnerStatement.getSql(), containsString("a_source_file_mappings => ?")); | ||
| 87 | - verify(callableStatement).setArray(5, null); | ||
| 88 | - | ||
| 89 | - assertThat(testRunnerStatement.getSql(), containsString("a_test_file_mappings => ?")); | ||
| 90 | - verify(callableStatement).setArray(6, null); | ||
| 91 | - verify(oracleConnection, times(2)).createOracleArray(CustomTypes.UT_FILE_MAPPINGS, expectedFileMapping); | ||
| 92 | - | ||
| 93 | - assertThat(testRunnerStatement.getSql(), containsString("a_include_objects => ?")); | ||
| 94 | - verify(callableStatement).setArray(7, null); | ||
| 95 | - verify(oracleConnection).createOracleArray(CustomTypes.UT_VARCHAR2_LIST, options.includeObjects.toArray()); | ||
| 96 | - | ||
| 97 | - assertThat(testRunnerStatement.getSql(), containsString("a_exclude_objects => ?")); | ||
| 98 | - verify(callableStatement).setArray(8, null); | ||
| 99 | - verify(oracleConnection).createOracleArray(CustomTypes.UT_VARCHAR2_LIST, options.includeObjects.toArray()); | ||
| 100 | - } | ||
| 101 | - | ||
| 102 | - private void checkFailOnError(boolean shouldBeThere) throws SQLException { | ||
| 103 | - assertThat(testRunnerStatement.getSql(), doesOrDoesNotContainString("a_fail_on_errors => (case ? when 1 then true else false end)", shouldBeThere)); | ||
| 104 | - verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setInt(9, 1); | ||
| 105 | - } | ||
| 106 | - | ||
| 107 | - private void checkClientCharacterSet(boolean shouldBeThere) throws SQLException { | ||
| 108 | - assertThat(testRunnerStatement.getSql(), doesOrDoesNotContainString("a_client_character_set => ?", shouldBeThere)); | ||
| 109 | - verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(10, "UTF8"); | ||
| 110 | - } | ||
| 111 | - | ||
| 112 | - private void checkRandomTestOrder(boolean shouldBeThere) throws SQLException { | ||
| 113 | - assertThat(testRunnerStatement.getSql(), doesOrDoesNotContainString("a_random_test_order => (case ? when 1 then true else false end)", shouldBeThere)); | ||
| 114 | - verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setInt(11, 1); | ||
| 115 | - assertThat(testRunnerStatement.getSql(), doesOrDoesNotContainString("a_random_test_order_seed => ?", shouldBeThere)); | ||
| 116 | - verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setInt(12, 123); | ||
| 117 | - } | ||
| 118 | - | ||
| 119 | - private void checkTags(boolean shouldBeThere) throws SQLException { | ||
| 120 | - assertThat(testRunnerStatement.getSql(), doesOrDoesNotContainString("a_tags => ?", shouldBeThere)); | ||
| 121 | - verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(13, "WIP,long_running"); | ||
| 122 | - } | ||
| 123 | - | ||
| 124 | - private void checkExpr(boolean shouldBeThere) throws SQLException { | ||
| 125 | - assertThat(testRunnerStatement.getSql(), doesOrDoesNotContainString("a_include_schema_expr => ?", shouldBeThere)); | ||
| 126 | - verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(14, "a_*"); | ||
| 127 | - assertThat(testRunnerStatement.getSql(), doesOrDoesNotContainString("a_include_object_expr => ?", shouldBeThere)); | ||
| 128 | - verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(15, "a_*"); | ||
| 129 | - assertThat(testRunnerStatement.getSql(), doesOrDoesNotContainString("a_exclude_schema_expr => ?", shouldBeThere)); | ||
| 130 | - verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(16, "ut3:*_package*"); | ||
| 131 | - assertThat(testRunnerStatement.getSql(), doesOrDoesNotContainString("a_exclude_object_expr => ?", shouldBeThere)); | ||
| 132 | - verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(17, "ut3:*_package*"); | ||
| 133 | - } | ||
| 134 | - | ||
| 135 | 30 | @BeforeEach | |
| 136 | 31 | void initParameters() throws SQLException { | |
| 137 | 32 | expectedFileMapping = new Object[]{new FileMapping("someFile", "owner", "object", "PACKAGE")}; | |
@@ -290,7 +185,7 @@ void version_3_1_8_parameters() throws SQLException { | |||
| 290 | 185 | ||
| 291 | 186 | @Test | |
| 292 | 187 | void version_3_1_13_parameters() throws SQLException { | |
| 293 | - initTestRunnerStatementForVersion(Version.V3_1_11); | ||
| 188 | + initTestRunnerStatementForVersion(Version.V3_1_13); | ||
| 294 | 189 | ||
| 295 | 190 | checkBaseParameters(); | |
| 296 | 191 | checkFailOnError(true); | |
@@ -299,4 +194,121 @@ void version_3_1_13_parameters() throws SQLException { | |||
| 299 | 194 | checkTags(true); | |
| 300 | 195 | checkExpr(true); | |
| 301 | 196 | } | |
| 197 | + | ||
| 198 | + private OracleConnection getMockedOracleConnection(Object[] expectedFileMapping) throws SQLException { | ||
| 199 | + OracleConnection oracleConnection = mock(OracleConnection.class); | ||
| 200 | + when(oracleConnection.unwrap(OracleConnection.class)) | ||
| 201 | + .thenReturn(oracleConnection); | ||
| 202 | + mockFileMapper(oracleConnection, expectedFileMapping); | ||
| 203 | + return oracleConnection; | ||
| 204 | + } | ||
| 205 | + | ||
| 206 | + private void mockFileMapper(OracleConnection mockedOracleConnection, Object[] expectedFileMapping) throws SQLException { | ||
| 207 | + Array fileMapperArray = mock(Array.class); | ||
| 208 | + CallableStatement fileMapperStatement = mock(CallableStatement.class); | ||
| 209 | + | ||
| 210 | + when(fileMapperArray.getArray()) | ||
| 211 | + .thenReturn(expectedFileMapping); | ||
| 212 | + when(fileMapperStatement.getArray(1)) | ||
| 213 | + .thenReturn(fileMapperArray); | ||
| 214 | + when( | ||
| 215 | + mockedOracleConnection.prepareCall(argThat( | ||
| 216 | + a -> a.startsWith("BEGIN ? := ut_file_mapper.build_file_mappings(")) | ||
| 217 | + )) | ||
| 218 | + .thenReturn(fileMapperStatement); | ||
| 219 | + } | ||
| 220 | + | ||
| 221 | + private Matcher<String> doesOrDoesNotContainString(String string, boolean shouldBeThere) { | ||
| 222 | + return (shouldBeThere) | ||
| 223 | + ? containsString(string) | ||
| 224 | + : not(containsString(string)); | ||
| 225 | + } | ||
| 226 | + | ||
| 227 | + private VerificationMode doesOrDoesNotGetCalled(boolean shouldBeThere) { | ||
| 228 | + return (shouldBeThere) | ||
| 229 | + ? times(1) | ||
| 230 | + : never(); | ||
| 231 | + } | ||
| 232 | + | ||
| 233 | + private void initTestRunnerStatementForVersion(Version version) throws SQLException { | ||
| 234 | + testRunnerStatement = DynamicTestRunnerStatement | ||
| 235 | + .forVersion(version, oracleConnection, options, callableStatement); | ||
| 236 | + } | ||
| 237 | + | ||
| 238 | + private void checkBaseParameters() throws SQLException { | ||
| 239 | + String sql = testRunnerStatement.getSql(); | ||
| 240 | + | ||
| 241 | + assertThat(sql, containsString("a_paths => ?")); | ||
| 242 | + verify(callableStatement).setArray(1, null); | ||
| 243 | + verify(oracleConnection).createOracleArray(CustomTypes.UT_VARCHAR2_LIST, options.pathList.toArray()); | ||
| 244 | + | ||
| 245 | + assertThat(sql, containsString("a_reporters => ?")); | ||
| 246 | + verify(callableStatement).setArray(2, null); | ||
| 247 | + verify(oracleConnection).createOracleArray(CustomTypes.UT_REPORTERS, options.reporterList.toArray()); | ||
| 248 | + | ||
| 249 | + assertThat(sql, containsString("a_color_console => (case ? when 1 then true else false end)")); | ||
| 250 | + verify(callableStatement).setInt(3, 0); | ||
| 251 | + | ||
| 252 | + assertThat(sql, containsString("a_coverage_schemes => ?")); | ||
| 253 | + verify(callableStatement).setArray(4, null); | ||
| 254 | + verify(oracleConnection).createOracleArray(CustomTypes.UT_VARCHAR2_LIST, options.coverageSchemes.toArray()); | ||
| 255 | + | ||
| 256 | + assertThat(sql, containsString("a_source_file_mappings => ?")); | ||
| 257 | + verify(callableStatement).setArray(5, null); | ||
| 258 | + | ||
| 259 | + assertThat(sql, containsString("a_test_file_mappings => ?")); | ||
| 260 | + verify(callableStatement).setArray(6, null); | ||
| 261 | + verify(oracleConnection, times(2)).createOracleArray(CustomTypes.UT_FILE_MAPPINGS, expectedFileMapping); | ||
| 262 | + | ||
| 263 | + assertThat(sql, containsString("a_include_objects => ?")); | ||
| 264 | + verify(callableStatement).setArray(7, null); | ||
| 265 | + verify(oracleConnection).createOracleArray(CustomTypes.UT_VARCHAR2_LIST, options.includeObjects.toArray()); | ||
| 266 | + | ||
| 267 | + assertThat(sql, containsString("a_exclude_objects => ?")); | ||
| 268 | + verify(callableStatement).setArray(8, null); | ||
| 269 | + verify(oracleConnection).createOracleArray(CustomTypes.UT_VARCHAR2_LIST, options.includeObjects.toArray()); | ||
| 270 | + } | ||
| 271 | + | ||
| 272 | + private void checkFailOnError(boolean shouldBeThere) throws SQLException { | ||
| 273 | + String sql = testRunnerStatement.getSql(); | ||
| 274 | + | ||
| 275 | + assertThat(sql, doesOrDoesNotContainString("a_fail_on_errors => (case ? when 1 then true else false end)", shouldBeThere)); | ||
| 276 | + verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setInt(9, 1); | ||
| 277 | + } | ||
| 278 | + | ||
| 279 | + private void checkClientCharacterSet(boolean shouldBeThere) throws SQLException { | ||
| 280 | + String sql = testRunnerStatement.getSql(); | ||
| 281 | + | ||
| 282 | + assertThat(sql, doesOrDoesNotContainString("a_client_character_set => ?", shouldBeThere)); | ||
| 283 | + verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(10, "UTF8"); | ||
| 284 | + } | ||
| 285 | + | ||
| 286 | + private void checkRandomTestOrder(boolean shouldBeThere) throws SQLException { | ||
| 287 | + String sql = testRunnerStatement.getSql(); | ||
| 288 | + | ||
| 289 | + assertThat(sql, doesOrDoesNotContainString("a_random_test_order => (case ? when 1 then true else false end)", shouldBeThere)); | ||
| 290 | + verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setInt(11, 1); | ||
| 291 | + assertThat(sql, doesOrDoesNotContainString("a_random_test_order_seed => ?", shouldBeThere)); | ||
| 292 | + verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setInt(12, 123); | ||
| 293 | + } | ||
| 294 | + | ||
| 295 | + private void checkTags(boolean shouldBeThere) throws SQLException { | ||
| 296 | + String sql = testRunnerStatement.getSql(); | ||
| 297 | + | ||
| 298 | + assertThat(sql, doesOrDoesNotContainString("a_tags => ?", shouldBeThere)); | ||
| 299 | + verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(13, "WIP,long_running"); | ||
| 300 | + } | ||
| 301 | + | ||
| 302 | + private void checkExpr(boolean shouldBeThere) throws SQLException { | ||
| 303 | + String sql = testRunnerStatement.getSql(); | ||
| 304 | + | ||
| 305 | + assertThat(sql, doesOrDoesNotContainString("a_include_schema_expr => ?", shouldBeThere)); | ||
| 306 | + verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(14, "a_*"); | ||
| 307 | + assertThat(sql, doesOrDoesNotContainString("a_include_object_expr => ?", shouldBeThere)); | ||
| 308 | + verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(15, "a_*"); | ||
| 309 | + assertThat(sql, doesOrDoesNotContainString("a_exclude_schema_expr => ?", shouldBeThere)); | ||
| 310 | + verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(16, "ut3:*_package*"); | ||
| 311 | + assertThat(sql, doesOrDoesNotContainString("a_exclude_object_expr => ?", shouldBeThere)); | ||
| 312 | + verify(callableStatement, doesOrDoesNotGetCalled(shouldBeThere)).setString(17, "ut3:*_package*"); | ||
| 313 | + } | ||
| 302 | 314 | } | |
@@ -32,6 +32,10 @@ public static TestRunnerOptions getCompletelyFilledOptions() { | |||
| 32 | 32 | options.randomTestOrderSeed = 123; | |
| 33 | 33 | options.tags.add("WIP"); | |
| 34 | 34 | options.tags.add("long_running"); | |
| 35 | + options.includeSchemaExpr = "a_*"; | ||
| 36 | + options.includeObjectExpr = "a_*"; | ||
| 37 | + options.excludeSchemaExpr = "ut3:*_package*"; | ||
| 38 | + options.excludeObjectExpr = "ut3:*_package*"; | ||
| 35 | 39 | return options; | |
| 36 | 40 | } | |
| 37 | 41 | ||
0 commit comments