Skip to content

Commit 12bd938

Browse files
committed
feat: Show reported vs skipped tests in console
1 parent 22c9af8 commit 12bd938

4 files changed

Lines changed: 65 additions & 2 deletions

File tree

src/main/java/dev/dochia/cli/core/report/ExecutionStatisticsListener.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public class ExecutionStatisticsListener {
3030
*/
3131
private final Map<String, Long> success = new HashMap<>();
3232

33+
/**
34+
* Map to track the count of requests that were skipped from reporting per path.
35+
*/
36+
private final Map<String, Long> skippedFromReporting = new HashMap<>();
37+
3338
/**
3439
* Count of skipped tests.
3540
*/
@@ -96,6 +101,15 @@ public void increaseSuccess(String path) {
96101
this.success.merge(path, 1L, Long::sum);
97102
}
98103

104+
/**
105+
* Increases the count of requests skipped from reporting for a specific path.
106+
*
107+
* @param path The path for which skipped requests are increased.
108+
*/
109+
public void increaseSkippedFromReporting(String path) {
110+
this.skippedFromReporting.merge(path, 1L, Long::sum);
111+
}
112+
99113
/**
100114
* Gets the total count of errors across all paths.
101115
*
@@ -132,6 +146,24 @@ public long getAll() {
132146
return this.getSuccess() + this.getWarns() + this.getErrors();
133147
}
134148

149+
/**
150+
* Gets the total count of all requests made (before skip logic).
151+
*
152+
* @return The total count of all requests.
153+
*/
154+
public long getTotalRequests() {
155+
return this.getAll() + getSkippedFromReporting();
156+
}
157+
158+
/**
159+
* Gets the total count of requests skipped from reporting.
160+
*
161+
* @return The total count of skipped requests.
162+
*/
163+
public long getSkippedFromReporting() {
164+
return this.skippedFromReporting.values().stream().reduce(0L, Long::sum);
165+
}
166+
135167
/**
136168
* Checks if there are many authentication errors, considering their ratio to the total number of executions.
137169
*

src/main/java/dev/dochia/cli/core/report/TestCaseExporter.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,16 +258,22 @@ private void writeExecutionTimesForPathAndHttpMethod(String key, List<TestCaseEx
258258
*
259259
*/
260260
public void printExecutionDetails() {
261-
String dochiaFinished = AnsiUtils.blue("{} tests completed in {}\n");
261+
long totalRequests = executionStatisticsListener.getTotalRequests();
262+
long skippedFromReporting = executionStatisticsListener.getSkippedFromReporting();
263+
long reportedResults = executionStatisticsListener.getAll();
264+
265+
String dochiaFinished = AnsiUtils.blue("{} tests completed in {}. {} reported, {} skipped\n");
262266
String passed = AnsiUtils.boldGreen(" ✔ {} passed, ");
263267
String warnings = AnsiUtils.boldYellow("⚠ {} warnings, ");
264268
String errors = AnsiUtils.boldRed("‼ {} errors");
269+
265270
String check = AnsiUtils.blue(String.format("Full Report: %s ", reportingPath.toUri() + getSummaryReportTitle()));
266271
String finalMessage = dochiaFinished + passed + warnings + errors;
267272
String duration = Duration.ofMillis(System.currentTimeMillis() - t0).toString().toLowerCase(Locale.ROOT).substring(2);
268273

269274
ConsoleUtils.emptyLine();
270-
logger.complete(finalMessage, executionStatisticsListener.getAll(), duration, executionStatisticsListener.getSuccess(), executionStatisticsListener.getWarns(), executionStatisticsListener.getErrors(), executionStatisticsListener.getSkipped());
275+
logger.complete(finalMessage, totalRequests, reportedResults, skippedFromReporting,
276+
executionStatisticsListener.getAll(), duration, executionStatisticsListener.getSuccess(), executionStatisticsListener.getWarns(), executionStatisticsListener.getErrors(), executionStatisticsListener.getSkipped());
271277

272278
// Print quality gate result
273279
boolean qualityGatePassed = !qualityGateArguments.shouldFailBuild(executionStatisticsListener.getErrors(), executionStatisticsListener.getWarns());

src/main/java/dev/dochia/cli/core/report/TestCaseListener.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,7 @@ void reportWarn(PrettyLogger logger, String message, Object... params) {
496496
} else if (ignoreArguments.isSkipReportingForWarnings()) {
497497
this.logger.debug(RECEIVED_RESPONSE_IS_MARKED_AS_IGNORED_SKIPPING);
498498
this.skipTest(logger, replaceBrackets("Skip reporting as --hide-warnings is enabled"));
499+
executionStatisticsListener.increaseSkippedFromReporting(testCase.getContractPath());
499500
this.recordResult(message, params, SKIP_REPORTING, logger);
500501
} else if (ignoreArguments.isNotIgnoredResponse(httpResponse)) {
501502
this.logger.debug("Received response is not marked as ignored... reporting warn!");
@@ -505,6 +506,7 @@ void reportWarn(PrettyLogger logger, String message, Object... params) {
505506
} else if (ignoreArguments.isSkipReportingForIgnoredArguments()) {
506507
this.logger.debug(RECEIVED_RESPONSE_IS_MARKED_AS_IGNORED_SKIPPING);
507508
this.skipTest(logger, replaceBrackets("Some response elements were marked as filtered through --filter-*** arguments."));
509+
executionStatisticsListener.increaseSkippedFromReporting(testCase.getContractPath());
508510
this.recordResult(message, params, SKIP_REPORTING, logger);
509511
} else {
510512
testCase.setResultIgnoreDetails("warning");
@@ -579,6 +581,7 @@ void reportError(PrettyLogger logger, String message, Object... params) {
579581
} else if (ignoreArguments.isSkipReportingForIgnoredArguments()) {
580582
this.logger.debug(RECEIVED_RESPONSE_IS_MARKED_AS_IGNORED_SKIPPING);
581583
this.skipTest(logger, "Some response elements were filtered usinbg --filter-* argyments.");
584+
executionStatisticsListener.increaseSkippedFromReporting(testCase.getContractPath());
582585
this.recordResult(message, params, SKIP_REPORTING, logger);
583586
} else {
584587
testCase.setResultIgnoreDetails(Level.ERROR.toString());
@@ -667,10 +670,12 @@ void reportInfo(PrettyLogger logger, String message, Object... params) {
667670
} else if (ignoreArguments.isSkipReportingForSuccess()) {
668671
this.logger.debug(RECEIVED_RESPONSE_IS_MARKED_AS_IGNORED_SKIPPING);
669672
this.skipTest(logger, replaceBrackets("Skip reporting as --hide-success is enabled"));
673+
executionStatisticsListener.increaseSkippedFromReporting(testCase.getContractPath());
670674
this.recordResult(message, params, SKIP_REPORTING, logger);
671675
} else if (ignoreArguments.isIgnoredResponse(httpResponse) && ignoreArguments.isSkipReportingForIgnoredArguments()) {
672676
this.logger.debug(RECEIVED_RESPONSE_IS_MARKED_AS_IGNORED_SKIPPING);
673677
this.skipTest(logger, "Some response elements were filtered using --filter-* arguments.");
678+
executionStatisticsListener.increaseSkippedFromReporting(testCase.getContractPath());
674679
this.recordResult(message, params, SKIP_REPORTING, logger);
675680
} else if (httpResponse.exceedsExpectedResponseTime(reportingArguments.getMaxResponseTime())) {
676681
this.logger.debug("Received response time exceeds --maxResponseTimeInMs: actual {}, max {}",

src/test/java/dev/dochia/cli/core/report/ExecutionStatisticsListenerTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,24 @@ void shouldTestForIOErrors(int authErrors, int all, boolean expected) {
8181

8282
Assertions.assertThat(listener.areManyIoErrors()).isEqualTo(expected);
8383
}
84+
85+
@Test
86+
void shouldTrackSkippedFromReporting() {
87+
ExecutionStatisticsListener listener = new ExecutionStatisticsListener();
88+
listener.increaseSkippedFromReporting("/path1");
89+
listener.increaseSkippedFromReporting("/path2");
90+
listener.increaseSuccess("/path1");
91+
92+
Assertions.assertThat(listener.getTotalRequests()).isEqualTo(3);
93+
Assertions.assertThat(listener.getSkippedFromReporting()).isEqualTo(2);
94+
Assertions.assertThat(listener.getAll()).isEqualTo(1);
95+
}
96+
97+
@Test
98+
void shouldReturnZeroForTotalRequestsWhenNoneTracked() {
99+
ExecutionStatisticsListener listener = new ExecutionStatisticsListener();
100+
101+
Assertions.assertThat(listener.getTotalRequests()).isZero();
102+
Assertions.assertThat(listener.getSkippedFromReporting()).isZero();
103+
}
84104
}

0 commit comments

Comments
 (0)