Skip to content

Commit 7a4fda9

Browse files
add aggregation logic for suites in PostSuiteEvent
Previously only tests were processed. That was enough for a representation in a simple table. To show the run result in a tree also suites need to be processed.
1 parent d84dc2c commit 7a4fda9

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,48 @@ assert logFalseCondition(node != null, () -> "Could not find suite id \"" + even
231231
}
232232

233233
private void doProcess(final PostSuiteEvent event) {
234+
final ItemNode node = run.getItemNodes().get(event.getId());
235+
assert logFalseCondition(node != null, () -> "Could not find suite id \"" + event.getId()
236+
+ "\" when processing PostSuiteEvent " + event.toString() + ".");
237+
final Suite suite = (Suite) node.getUserObject();
238+
if (suite.getEndTime() == null) {
239+
// first occurrence, multiple possible, e.g. ut_tester and ut_user in utPLSQL project
240+
suite.setStartTime(event.getStartTime());
241+
suite.setEndTime(event.getEndTime());
242+
suite.setExecutionTime(event.getExecutionTime());
243+
suite.setCounter(event.getCounter());
244+
suite.setErrorStack(event.getErrorStack());
245+
suite.setWarnings(event.getWarnings());
246+
suite.setServerOutput(event.getServerOutput());
247+
} else {
248+
// subsequent occurrence, aggregate
249+
suite.setEndTime(event.getEndTime());
250+
suite.setExecutionTime(suite.getExecutionTime() + event.getExecutionTime());
251+
suite.getCounter().setWarning(suite.getCounter().getWarning() + event.getCounter().getWarning());
252+
suite.getCounter().setDisabled(suite.getCounter().getDisabled() + event.getCounter().getDisabled());
253+
suite.getCounter().setSuccess(suite.getCounter().getSuccess() + event.getCounter().getSuccess());
254+
suite.getCounter().setFailure(suite.getCounter().getFailure() + event.getCounter().getFailure());
255+
suite.getCounter().setError(suite.getCounter().getError() + event.getCounter().getError());
256+
if (event.getWarnings() != null) {
257+
StringBuilder sb = new StringBuilder();
258+
if (suite.getWarnings() != null) {
259+
sb.append(suite.getWarnings());
260+
sb.append("\n\n");
261+
}
262+
sb.append(event.getWarnings());
263+
suite.setWarnings(sb.toString());
264+
}
265+
if (event.getServerOutput() != null) {
266+
StringBuilder sb = new StringBuilder();
267+
if (suite.getServerOutput() != null) {
268+
sb.append(suite.getServerOutput());
269+
sb.append("\n\n");
270+
}
271+
sb.append(event.getServerOutput());
272+
suite.setServerOutput(sb.toString());
273+
}
274+
}
275+
234276
final Test test = run.getCurrentTest();
235277
// Errors on suite levels are reported as warnings by the utPLSQL framework,
236278
// since an error on suite level does not affect a status of a test.

0 commit comments

Comments
 (0)