Fix #15: Fehlende Quelldatei beim Mini-Lauf wird korrekt als fehlgeschlagen gezählt

appendSummary verwendete bisher summary.failedCount() aus dem RunSummary-Objekt
des echten Laufs, das von synthesizeMissingSourceFileRows() nachträglich hochgezählte
failedCount nicht kannte. Nun werden die lokalen Zähler (successCount, failedCount,
skippedCount) verwendet, die über onDocumentCompleted und die Synthese konsistent
gepflegt werden. Test ergänzt um Assertion auf '1 fehlgeschlagen' in der Zusammenfassung.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-23 16:16:39 +02:00
parent 09605ee495
commit 1df541d0f9
2 changed files with 8 additions and 5 deletions
@@ -979,7 +979,7 @@ public final class GuiBatchRunTab {
miniRunCompletedFingerprints = new HashSet<>();
}
selectedRows.clear();
appendSummary(summary, outcome);
appendSummary(outcome);
updateButtonStates();
notifyRunStateChanged();
LOG.info("GUI-Verarbeitungslauf: Lauf beendet. successfullyStarted={}, completed={}, "
@@ -1065,7 +1065,7 @@ public final class GuiBatchRunTab {
result.successCount(), result.requestedCount(), result.failureCount());
}
private void appendSummary(RunSummary summary, GuiBatchRunLaunchOutcome outcome) {
private void appendSummary(GuiBatchRunLaunchOutcome outcome) {
if (!outcome.successfullyStarted()) {
outcome.failureMessage().ifPresent(GuiBatchRunTab.this::appendMessage);
return;
@@ -1073,9 +1073,9 @@ public final class GuiBatchRunTab {
if (!outcome.batchCompletedNormally()) {
outcome.failureMessage().ifPresent(GuiBatchRunTab.this::appendMessage);
}
String summaryText = summary.successCount() + " erfolgreich, "
+ summary.failedCount() + " fehlgeschlagen, "
+ summary.skippedCount() + " übersprungen";
String summaryText = successCount + " erfolgreich, "
+ failedCount + " fehlgeschlagen, "
+ skippedCount + " übersprungen";
appendMessage(summaryText);
}
}
@@ -258,6 +258,9 @@ class GuiBatchRunTabSelectionSmokeTest {
&& messageText.get().contains("Quelldatei nicht gefunden: b.pdf"),
"Message area must contain German 'Quelldatei nicht gefunden: b.pdf'; was: "
+ messageText.get());
assertTrue(messageText.get().contains("1 fehlgeschlagen"),
"Zusammenfassung muss '1 fehlgeschlagen' enthalten (fehlende Quelldatei zählt als Fehler); war: "
+ messageText.get());
}
/** Minimal thread-safe holder for tests (avoids extra imports). */