mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Add test case for multi line dive notes merging
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									1b37e0f1a4
								
							
						
					
					
						commit
						6d7faa106f
					
				
					 2 changed files with 67 additions and 0 deletions
				
			
		|  | @ -256,6 +256,72 @@ void TestGitStorage::testGitStorageCloudMerge2() | |||
| 	QString readin = orgS.readAll(); | ||||
| 	QString written = outS.readAll(); | ||||
| 	QCOMPARE(readin, written); | ||||
| 	clear_dive_file_data(); | ||||
| } | ||||
| 
 | ||||
| void TestGitStorage::testGitStorageCloudMerge3() | ||||
| { | ||||
| 	// create multi line notes and store them to the cloud repo and local cache
 | ||||
| 	// edit dive notes offline
 | ||||
| 	// edit the same dive notes in the cloud repo
 | ||||
| 	// merge
 | ||||
| 	clear_dive_file_data(); | ||||
| 	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 localCacheRepo = localCacheDir + "[ssrftest@hohndel.org]"; | ||||
| 	QCOMPARE(parse_file(qPrintable(cloudTestRepo)), 0); | ||||
| 	process_dives(false, false); | ||||
| 	struct dive *dive = get_dive(0); | ||||
| 	dive->notes = strdup("Create multi line dive notes\nLine 2\nLine 3\nLine 4\nLine 5\nThat should be enough"); | ||||
| 	dive = get_dive(1); | ||||
| 	dive->notes = strdup("Create multi line dive notes\nLine 2\nLine 3\nLine 4\nLine 5\nThat should be enough"); | ||||
| 	dive = get_dive(2); | ||||
| 	dive->notes = strdup("Create multi line dive notes\nLine 2\nLine 3\nLine 4\nLine 5\nThat should be enough"); | ||||
| 	QCOMPARE(save_dives(qPrintable(cloudTestRepo)), 0); | ||||
| 	clear_dive_file_data(); | ||||
| 
 | ||||
| 	QCOMPARE(parse_file(qPrintable(localCacheRepo)), 0); | ||||
| 	process_dives(false, false); | ||||
| 	dive = get_dive(0); | ||||
| 	dive->notes = strdup("Create multi line dive notes\nDifferent line 2 and removed 3-5\n\nThat should be enough"); | ||||
| 	dive = get_dive(1); | ||||
| 	dive->notes = strdup("Line 2\nLine 3\nLine 4\nLine 5"); // keep the middle, remove first and last");
 | ||||
| 	dive = get_dive(2); | ||||
| 	dive->notes = strdup("single line dive notes"); | ||||
| 	QCOMPARE(save_dives(qPrintable(localCacheRepo)), 0); | ||||
| 	clear_dive_file_data(); | ||||
| 
 | ||||
| 	// move the local cache away
 | ||||
| 	{ // scope for variables
 | ||||
| 		QDir localCacheDirectory(localCacheDir); | ||||
| 		QDir localCacheDirectorySave(localCacheDir + "save"); | ||||
| 		QCOMPARE(localCacheDirectorySave.removeRecursively(), true); | ||||
| 		QCOMPARE(localCacheDirectory.rename(localCacheDir, localCacheDir + "save"), true); | ||||
| 	} | ||||
| 	// now we open the cloud storage repo and modify those first dive notes differently
 | ||||
| 	QCOMPARE(parse_file(qPrintable(cloudTestRepo)), 0); | ||||
| 	process_dives(false, false); | ||||
| 	dive = get_dive(0); | ||||
| 	dive->notes = strdup("Completely different dive notes\nBut also multi line"); | ||||
| 	dive = get_dive(1); | ||||
| 	dive->notes = strdup("single line dive notes"); | ||||
| 	dive = get_dive(2); | ||||
| 	dive->notes = strdup("Line 2\nLine 3\nLine 4\nLine 5"); // keep the middle, remove first and last");
 | ||||
| 	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); | ||||
| 	QDir localCacheDirectorySave(localCacheDir + "save"); | ||||
| 	QCOMPARE(localCacheDirectory.removeRecursively(), true); | ||||
| 	QCOMPARE(localCacheDirectorySave.rename(localCacheDir + "save", localCacheDir), true); | ||||
| 
 | ||||
| 	QCOMPARE(parse_file(qPrintable(cloudTestRepo)), 0); | ||||
| 	QCOMPARE(save_dives("./SampleDivesMerge3.ssrf"), 0); | ||||
| 	// we are not trying to compare this to a pre-determined result... what this test
 | ||||
| 	// checks is that there are no parsing errors with the merge
 | ||||
| 	clear_dive_file_data(); | ||||
| } | ||||
| 
 | ||||
| QTEST_MAIN(TestGitStorage) | ||||
|  |  | |||
|  | @ -13,6 +13,7 @@ private slots: | |||
| 	void testGitStorageCloudOfflineSync(); | ||||
| 	void testGitStorageCloudMerge(); | ||||
| 	void testGitStorageCloudMerge2(); | ||||
| 	void testGitStorageCloudMerge3(); | ||||
| }; | ||||
| 
 | ||||
| #endif // TESTGITSTORAGE_H
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue