aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cpp17
-rw-r--r--src/mainwindow.h12
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;