MailJDTourDownloadDocsQualityTestsCoverage

Which source lines and branches the tests execute. Lines 91.5 %, branches 75.0 % (minimum 85 % and 72 %). main @ 399ffe3d · 21 October 2026 · pipeline 7238.

GCC Code Coverage Report


Directory: src/
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 37 / 0 / 37
Functions: 100.0% 1 / 0 / 1
Branches: 78.0% 71 / 0 / 91

app/core/DavPushDiagnostics.cpp
Line Branch Exec Source
1 #include "DavPushDiagnostics.h"
2
3 #include "DavPushCoordinator.h"
4 #include "DavPushStatistics.h"
5 #include "data/DavPushSettings.h"
6
7 #include <QDateTime>
8 #include <QStringList>
9 #include <QUrl>
10
11 4 QString davPushDiagnosticsReport(const DavPushCoordinator &push) {
12 4 QStringList lines;
13
1/1
✓ Branch 2 → 3 taken 4 times.
4 const auto receiver = push.effectiveReceiver();
14
1/1
✓ Branch 6 → 7 taken 4 times.
4 lines << QStringLiteral("MailJD DAV-Push diagnostics (redacted)");
15
6/6
✓ Branch 13 → 14 taken 4 times.
✓ Branch 14 → 15 taken 4 times.
✓ Branch 15 → 16 taken 4 times.
✓ Branch 16 → 17 taken 4 times.
✓ Branch 17 → 18 taken 4 times.
✓ Branch 18 → 19 taken 4 times.
8 lines << QStringLiteral("generated: %1").arg(QDateTime::fromSecsSinceEpoch(push.now()).toUTC().toString(Qt::ISODate));
16 8 lines << QStringLiteral("push enabled: %1, background sync: %2, pause: %3")
17
2/2
✓ Branch 29 → 30 taken 4 times.
✓ Branch 30 → 31 taken 4 times.
8 .arg(DavPushSettings::enabled())
18
2/2
✓ Branch 32 → 33 taken 4 times.
✓ Branch 33 → 34 taken 4 times.
8 .arg(DavPushSettings::backgroundSyncEnabled())
19
8/10
✓ Branch 35 → 36 taken 4 times.
✓ Branch 37 → 38 taken 3 times.
✓ Branch 37 → 41 taken 1 time.
✓ Branch 41 → 42 taken 1 time.
✓ Branch 42 → 43 taken 4 times.
✓ Branch 43 → 44 taken 4 times.
✓ Branch 46 → 47 taken 3 times.
✓ Branch 46 → 48 taken 1 time.
✗ Branch 243 → 244 not taken.
✗ Branch 243 → 245 not taken.
11 .arg(push.pauseReason().isEmpty() ? QStringLiteral("none") : push.pauseReason());
20 8 lines << QStringLiteral("push service: %1 %2 (%3)")
21
5/7
✓ Branch 70 → 71 taken 3 times.
✓ Branch 70 → 72 taken 1 time.
✓ Branch 75 → 76 taken 4 times.
✓ Branch 79 → 80 taken 1 time.
✓ Branch 79 → 81 taken 3 times.
✗ Branch 271 → 272 not taken.
✗ Branch 271 → 273 not taken.
9 .arg(receiver.isConfigured() ? receiver.provider : QStringLiteral("none"),
22
6/8
✓ Branch 64 → 65 taken 1 time.
✓ Branch 64 → 66 taken 3 times.
✓ Branch 66 → 67 taken 3 times.
✓ Branch 68 → 69 taken 3 times.
✓ Branch 82 → 83 taken 3 times.
✓ Branch 82 → 84 taken 1 time.
✗ Branch 279 → 280 not taken.
✗ Branch 279 → 281 not taken.
8 receiver.provider == DavPushSettings::kSystemProvider ? receiver.server : QUrl(receiver.server).host(),
23
4/11
✗ Branch 56 → 57 not taken.
✓ Branch 56 → 60 taken 4 times.
✓ Branch 76 → 77 taken 4 times.
✓ Branch 85 → 86 taken 4 times.
✗ Branch 85 → 87 not taken.
✗ Branch 87 → 88 not taken.
✓ Branch 87 → 89 taken 4 times.
✗ Branch 286 → 287 not taken.
✗ Branch 286 → 288 not taken.
✗ Branch 290 → 291 not taken.
✗ Branch 290 → 292 not taken.
16 receiver.publicService ? QStringLiteral("public") : QStringLiteral("own"));
24
5/5
✓ Branch 91 → 92 taken 4 times.
✓ Branch 92 → 93 taken 4 times.
✓ Branch 93 → 94 taken 4 times.
✓ Branch 204 → 95 taken 9 times.
✓ Branch 204 → 205 taken 4 times.
13 for (const auto &status : push.statuses()) {
25
1/1
✓ Branch 96 → 97 taken 9 times.
9 const QString scope = DavPushStatistics::collectionScope(status.accountId, status.path);
26
1/1
✓ Branch 98 → 99 taken 9 times.
9 lines << QString();
27
2/2
✓ Branch 103 → 104 taken 9 times.
✓ Branch 104 → 105 taken 9 times.
9 lines << QStringLiteral("%1: %2").arg(status.kind, status.displayName);
28 18 lines << QStringLiteral(" policy=%1 capability=%2 profile=%3 reason=%4")
29
4/11
✓ Branch 112 → 113 taken 9 times.
✗ Branch 112 → 116 not taken.
✓ Branch 119 → 120 taken 9 times.
✗ Branch 129 → 130 not taken.
✓ Branch 129 → 131 taken 9 times.
✓ Branch 131 → 132 taken 9 times.
✗ Branch 131 → 133 not taken.
✗ Branch 324 → 325 not taken.
✗ Branch 324 → 326 not taken.
✗ Branch 328 → 329 not taken.
✗ Branch 328 → 330 not taken.
27 .arg(status.policy == DavPushPolicy::Automatic ? QStringLiteral("automatic") : QStringLiteral("interval"),
30
1/1
✓ Branch 111 → 112 taken 9 times.
18 davPushCapabilityName(status.offer.capability))
31
1/1
✓ Branch 121 → 122 taken 9 times.
18 .arg(int(status.offer.profile))
32
2/2
✓ Branch 123 → 124 taken 9 times.
✓ Branch 124 → 125 taken 9 times.
18 .arg(status.offer.reason);
33 18 lines << QStringLiteral(" registration=%1 expires=%2 error=%3")
34
1/1
✓ Branch 140 → 141 taken 9 times.
18 .arg(int(status.registration))
35
1/1
✓ Branch 142 → 143 taken 9 times.
18 .arg(status.expiresAt)
36
2/2
✓ Branch 144 → 145 taken 9 times.
✓ Branch 145 → 146 taken 9 times.
18 .arg(status.registrationError);
37 18 lines << QStringLiteral(" receiver=%1 detail=%2 fallback=%3")
38
1/1
✓ Branch 155 → 156 taken 9 times.
18 .arg(int(status.receiver))
39
1/1
✓ Branch 157 → 158 taken 9 times.
18 .arg(status.receiverDetail)
40
2/2
✓ Branch 159 → 160 taken 9 times.
✓ Branch 160 → 161 taken 9 times.
18 .arg(status.inFallback);
41
3/3
✓ Branch 170 → 171 taken 9 times.
✓ Branch 172 → 173 taken 9 times.
✓ Branch 173 → 174 taken 9 times.
27 lines << QStringLiteral(" last push=%1 last sync=%2").arg(status.lastPushAt).arg(status.lastSyncAt);
42 108 for (const char *name : {"messages.mapped", "messages.token-noop", "messages.coalesced", "subscription.registered",
43 "subscription.renewed", "subscription.failed", "syncs.push", "syncs.poll",
44
2/2
✓ Branch 200 → 181 taken 99 times.
✓ Branch 200 → 201 taken 9 times.
117 "syncs.recovery", "syncs.manual", "syncs.failed"})
45
5/5
✓ Branch 186 → 187 taken 99 times.
✓ Branch 190 → 191 taken 99 times.
✓ Branch 191 → 192 taken 99 times.
✓ Branch 192 → 193 taken 99 times.
✓ Branch 193 → 194 taken 99 times.
297 lines << QStringLiteral(" %1=%2").arg(QLatin1String(name)).arg(push.statistics()->counter(scope, QLatin1String(name)));
46 13 }
47
1/1
✓ Branch 208 → 209 taken 4 times.
8 return lines.join(QLatin1Char('\n'));
48 4 }
49