mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Cloud storage: first test case for a very simple merge
- We add a dive while offline. - On a different computer (here simulated by a different local cache) we add a different file. - Now we go back to the previous local cache (the one where we added a different dive in the first step) and take that online (i.e., connect to cloud storage). Now both of the new dives should have been added to our data file. This is a rather trivial test with no conflict and a straight forward merge. We need to add a lot more test cases to make sure this works as expected and doesn't leave the user with a corrupt state. Ideally whatever happens, the user should never see an error... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
449ba2876f
commit
9f5a944107
2 changed files with 48 additions and 0 deletions
|
@ -149,4 +149,51 @@ void TestGitStorage::testGitStorageCloudOfflineSync()
|
|||
clear_dive_file_data();
|
||||
}
|
||||
|
||||
void TestGitStorage::testGitStorageCloudMerge()
|
||||
{
|
||||
// now we need to mess with the local git repo to get an actual merge
|
||||
// first we add another dive to the "moved away" repository, pretending we did
|
||||
// another offline change there
|
||||
QString cloudTestRepo("https://cloud.subsurface-divelog.org/git/ssrftest@hohndel.org[ssrftest@hohndel.org]");
|
||||
QString localCacheDir(get_local_dir("https://cloud.subsurface-divelog.org/git/ssrftest@hohndel.org", "ssrftest@hohndel.org"));
|
||||
QString localCacheRepoSave = localCacheDir + "save[ssrftest@hohndel.org]";
|
||||
QCOMPARE(parse_file(qPrintable(localCacheRepoSave)), 0);
|
||||
QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test11.xml"), 0);
|
||||
process_dives(false, false);
|
||||
QCOMPARE(save_dives(qPrintable(localCacheRepoSave)), 0);
|
||||
clear_dive_file_data();
|
||||
|
||||
// now we open the cloud storage repo and add a different dive to it
|
||||
QCOMPARE(parse_file(qPrintable(cloudTestRepo)), 0);
|
||||
QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test12.xml"), 0);
|
||||
process_dives(false, false);
|
||||
QCOMPARE(save_dives(qPrintable(cloudTestRepo)), 0);
|
||||
clear_dive_file_data();
|
||||
|
||||
// now we move the saved local cache into place and try to open the cloud repo
|
||||
// -> this forces a merge
|
||||
QDir localCacheDirectory(localCacheDir);
|
||||
QCOMPARE(localCacheDirectory.removeRecursively(), true);
|
||||
QDir localCacheDirectorySave(localCacheDir + "save");
|
||||
QCOMPARE(localCacheDirectory.rename(localCacheDir + "save", localCacheDir), true);
|
||||
QCOMPARE(parse_file(qPrintable(cloudTestRepo)), 0);
|
||||
QCOMPARE(save_dives("./SapleDivesV3plus10-11-12-merged.ssrf"), 0);
|
||||
clear_dive_file_data();
|
||||
QCOMPARE(parse_file("./SampleDivesV3plus10local.ssrf"), 0);
|
||||
QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test11.xml"), 0);
|
||||
process_dives(false, false);
|
||||
QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test12.xml"), 0);
|
||||
process_dives(false, false);
|
||||
QCOMPARE(save_dives("./SapleDivesV3plus10-11-12.ssrf"), 0);
|
||||
QFile org("./SapleDivesV3plus10-11-12-merged.ssrf");
|
||||
org.open(QFile::ReadOnly);
|
||||
QFile out("./SapleDivesV3plus10-11-12.ssrf");
|
||||
out.open(QFile::ReadOnly);
|
||||
QTextStream orgS(&org);
|
||||
QTextStream outS(&out);
|
||||
QString readin = orgS.readAll();
|
||||
QString written = outS.readAll();
|
||||
QCOMPARE(readin, written);
|
||||
}
|
||||
|
||||
QTEST_MAIN(TestGitStorage)
|
||||
|
|
|
@ -10,6 +10,7 @@ private slots:
|
|||
void testGitStorageLocal();
|
||||
void testGitStorageCloud();
|
||||
void testGitStorageCloudOfflineSync();
|
||||
void testGitStorageCloudMerge();
|
||||
};
|
||||
|
||||
#endif // TESTGITSTORAGE_H
|
||||
|
|
Loading…
Add table
Reference in a new issue