Improve handling of remote sync saving

* Fixes sporadic failures on gui tests on Windows
* Corrects inability to write to temporary config file while running tests
* Corrects errors when using MockRemoteProcess due to missing functions
This commit is contained in:
Jonathan White 2025-03-10 19:37:44 -04:00
parent 33a3796074
commit 8779721f92
No known key found for this signature in database
GPG Key ID: 440FC65F2E0C6E01
4 changed files with 21 additions and 6 deletions

View File

@ -624,11 +624,13 @@ void Config::createTempFileInstance()
if (m_instance) {
delete m_instance;
}
auto* tmpFile = new QTemporaryFile();
bool openResult = tmpFile->open();
Q_ASSERT(openResult);
Q_UNUSED(openResult);
m_instance = new Config(tmpFile->fileName(), "", qApp);
auto tmpFileName = QString("%1/%2_settings.XXXXXX").arg(QDir::tempPath(), QCoreApplication::applicationName());
auto tmpFile = new QTemporaryFile(tmpFileName);
if (!tmpFile->open()) {
Q_ASSERT_X(false, __func__, "Failed to create temporary config settings file");
}
tmpFile->close();
m_instance = new Config(tmpFileName, "", qApp);
tmpFile->setParent(m_instance);
}

View File

@ -1426,7 +1426,7 @@ bool DatabaseWidget::syncWithDatabase(const QSharedPointer<Database>& otherDb, Q
if (!changeList.isEmpty()) {
// Save synced databases
if (!m_db->save(Database::Atomic, {}, &error)) {
if (!save()) {
error = tr("Error while saving database %1: %2").arg(m_db->filePath(), error);
return false;
}

View File

@ -32,6 +32,7 @@ void MockRemoteProcess::start(const QString&)
qint64 MockRemoteProcess::write(const QString& data)
{
m_data.append(data.toUtf8());
return data.length();
}
@ -54,3 +55,13 @@ int MockRemoteProcess::exitCode() const
{
return 0; // always return success
}
QString MockRemoteProcess::readOutput()
{
return {};
}
QString MockRemoteProcess::readError()
{
return {};
}

View File

@ -32,6 +32,8 @@ public:
void closeWriteChannel() override;
bool waitForFinished(int msecs) override;
[[nodiscard]] int exitCode() const override;
virtual QString readOutput() override;
virtual QString readError() override;
private:
QByteArray m_data;