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% 23 / 0 / 23
Functions: 100.0% 2 / 0 / 2
Branches: 76.7% 46 / 0 / 60

presentation/PimEditorTime.h
Line Branch Exec Source
1 #pragma once
2
3 #include <QDateTime>
4 #include <QTimeZone>
5
6 // DATE is a calendar date, encoded at UTC midnight only for the existing
7 // store. DATE-TIME is an instant; editor text includes its local UTC offset
8 // and subsecond precision so a title-only edit cannot change that instant.
9 namespace PimEditorTime {
10 1472 inline QString display(const QDateTime &stamp, bool dateOnly) {
11
2/2
✓ Branch 3 → 4 taken 893 times.
✓ Branch 3 → 5 taken 579 times.
1472 if (!stamp.isValid()) return {};
12
1/1
✓ Branch 6 → 7 taken 158 times.
158 return dateOnly ? stamp.date().toString(Qt::ISODate)
13
7/9
✓ Branch 5 → 6 taken 158 times.
✓ Branch 5 → 8 taken 421 times.
✓ Branch 7 → 10 taken 158 times.
✓ Branch 8 → 9 taken 421 times.
✓ Branch 9 → 10 taken 421 times.
✓ Branch 11 → 12 taken 421 times.
✓ Branch 11 → 13 taken 158 times.
✗ Branch 15 → 16 not taken.
✗ Branch 15 → 17 not taken.
1316 : stamp.toLocalTime().toString(Qt::ISODateWithMs);
14 }
15
16 125 inline QDateTime parse(const QString &input, bool dateOnly) {
17
1/1
✓ Branch 2 → 3 taken 125 times.
125 const QString text = input.trimmed();
18
2/2
✓ Branch 4 → 5 taken 1 time.
✓ Branch 4 → 6 taken 124 times.
125 if (text.isEmpty()) return {};
19
2/2
✓ Branch 6 → 7 taken 23 times.
✓ Branch 6 → 17 taken 101 times.
124 if (dateOnly) {
20
1/1
✓ Branch 7 → 8 taken 23 times.
23 const QDate date = QDate::fromString(text, Qt::ISODate);
21
8/10
✓ Branch 8 → 9 taken 23 times.
✓ Branch 9 → 10 taken 22 times.
✓ Branch 9 → 13 taken 1 time.
✓ Branch 10 → 11 taken 22 times.
✓ Branch 11 → 12 taken 22 times.
✓ Branch 12 → 14 taken 22 times.
✓ Branch 14 → 15 taken 22 times.
✓ Branch 14 → 16 taken 1 time.
✗ Branch 71 → 72 not taken.
✗ Branch 71 → 73 not taken.
23 return date.isValid() ? QDateTime(date, QTime(0, 0), QTimeZone::utc()) : QDateTime();
22 }
23 101 QString normalized = text;
24
5/6
✓ Branch 19 → 20 taken 101 times.
✗ Branch 19 → 26 not taken.
✓ Branch 24 → 25 taken 4 times.
✓ Branch 24 → 26 taken 97 times.
✓ Branch 27 → 28 taken 4 times.
✓ Branch 27 → 32 taken 97 times.
101 if (normalized.size() > 10 && normalized.at(10) == QLatin1Char(' '))
25
1/1
✓ Branch 30 → 31 taken 4 times.
4 normalized[10] = QLatin1Char('T');
26
1/1
✓ Branch 32 → 33 taken 101 times.
101 const auto parsed = QDateTime::fromString(normalized, Qt::ISODateWithMs);
27
2/3
✓ Branch 33 → 34 taken 101 times.
✗ Branch 34 → 35 not taken.
✓ Branch 34 → 36 taken 101 times.
101 if (!parsed.isValid()) return {};
28
3/3
✓ Branch 36 → 37 taken 101 times.
✓ Branch 37 → 38 taken 6 times.
✓ Branch 37 → 39 taken 95 times.
101 if (parsed.timeSpec() != Qt::LocalTime) return parsed;
29 // Do not silently normalize a DST gap or choose one side of a fold.
30 // An explicit offset supplied by the editor/user resolves a fold.
31
2/2
✓ Branch 39 → 40 taken 95 times.
✓ Branch 40 → 41 taken 95 times.
95 const QDate date = QDate::fromString(normalized.left(10), Qt::ISODate);
32 95 QTime time = normalized.size() == 10 ? QTime(0, 0)
33
4/9
✗ Branch 43 → 44 not taken.
✓ Branch 43 → 45 taken 95 times.
✗ Branch 44 → 47 not taken.
✓ Branch 45 → 46 taken 95 times.
✓ Branch 46 → 47 taken 95 times.
✓ Branch 47 → 48 taken 95 times.
✗ Branch 47 → 49 not taken.
✗ Branch 81 → 82 not taken.
✗ Branch 81 → 83 not taken.
95 : QTime::fromString(normalized.mid(11), Qt::ISODateWithMs);
34
2/5
✓ Branch 49 → 50 taken 95 times.
✗ Branch 50 → 51 not taken.
✓ Branch 50 → 60 taken 95 times.
✗ Branch 54 → 55 not taken.
✗ Branch 55 → 56 not taken.
95 if (!time.isValid()) time = QTime::fromString(normalized.mid(11), QStringLiteral("HH:mm"));
35
1/1
✓ Branch 60 → 61 taken 95 times.
190 return QDateTime(date, time, QTimeZone::systemTimeZone(),
36
1/1
✓ Branch 61 → 62 taken 95 times.
95 QDateTime::TransitionResolution::Reject);
37 125 }
38 }
39