diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mainwindow.cpp | 17 | ||||
| -rw-r--r-- | src/mainwindow.h | 12 |
2 files changed, 28 insertions, 1 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7c7b801..75549d3 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -83,6 +83,21 @@ QString MainWindow::uiStatePath() return base + QStringLiteral("/qtmaildir/uistate.conf"); } +namespace { +/// Overridden only by setLocksPathForTesting(); "/proc/locks" in every real run. +QString g_locksPath = QStringLiteral("/proc/locks"); +} // namespace + +void MainWindow::setLocksPathForTesting(const QString &path) +{ + g_locksPath = path; +} + +QString MainWindow::locksPath() +{ + return g_locksPath; +} + void MainWindow::restoreUiState() { QSettings state(uiStatePath(), QSettings::IniFormat); @@ -465,7 +480,7 @@ void MainWindow::buildUi() // every ten minutes, so mail arrives and tags change while the window sits // idle, and until now nothing here noticed. m_syncMonitor = new SyncMonitor(SyncMonitor::defaultLockPath(), - QStringLiteral("/proc/locks"), this); + locksPath(), this); connect(m_syncMonitor, &SyncMonitor::stateChanged, this, &MainWindow::onExternalSyncStateChanged); m_syncMonitor->start(); diff --git a/src/mainwindow.h b/src/mainwindow.h index 22c8187..96b27f4 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -104,6 +104,18 @@ public: /// preserve comments or key order). static QString uiStatePath(); + /// Kernel lock table every MainWindow's SyncMonitor watches, "/proc/locks" + /// unless a test overrides it. + /// + /// A test seam, deliberately NOT a config key: /proc/locks is not something + /// a user would ever set, and a wrong value silently disables background + /// sync detection rather than failing loudly. Without this every window a + /// test builds observes the machine's real sync state, so a test asserting + /// on the sync button fails whenever the user's cron sync happens to be + /// running (item 38). + static void setLocksPathForTesting(const QString &path); + static QString locksPath(); + protected: void closeEvent(QCloseEvent *event) override; |
