mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
CLI Merge: Only save database file when modified. (#2466)
* Merge: detect if database was changed. * Adding unit test. * Only saving on change.
This commit is contained in:
parent
a7dd9f19f4
commit
f06742cf41
@ -84,14 +84,18 @@ int Merge::execute(const QStringList& arguments)
|
||||
}
|
||||
|
||||
Merger merger(db2.data(), db1.data());
|
||||
merger.merge();
|
||||
bool databaseChanged = merger.merge();
|
||||
|
||||
if (databaseChanged) {
|
||||
QString errorMessage = db1->saveToFile(args.at(0));
|
||||
if (!errorMessage.isEmpty()) {
|
||||
err << QObject::tr("Unable to save database to file : %1").arg(errorMessage) << endl;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
out << "Successfully merged the database files." << endl;
|
||||
} else {
|
||||
out << "Database was not modified by merge operation." << endl;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
@ -698,6 +698,15 @@ void TestCli::testMerge()
|
||||
QVERIFY(entry1);
|
||||
QCOMPARE(entry1->title(), QString("Some Website"));
|
||||
QCOMPARE(entry1->password(), QString("secretsecretsecret"));
|
||||
|
||||
// making sure that the message is different if the database was not
|
||||
// modified by the merge operation.
|
||||
pos = m_stdoutFile->pos();
|
||||
Utils::Test::setNextPassword("a");
|
||||
mergeCmd.execute({"merge", "-s", sourceFile.fileName(), sourceFile.fileName()});
|
||||
m_stdoutFile->seek(pos);
|
||||
m_stdoutFile->readLine();
|
||||
QCOMPARE(m_stdoutFile->readAll(), QByteArray("Database was not modified by merge operation.\n"));
|
||||
}
|
||||
|
||||
void TestCli::testRemove()
|
||||
|
Loading…
Reference in New Issue
Block a user