@@ -819,7 +819,7 @@ def test_server_compatibility(mc):
819819 assert mc .is_server_compatible ()
820820
821821
822- def create_versioned_project (mc , project_name , project_dir , updated_file , remove = True ):
822+ def create_versioned_project (mc , project_name , project_dir , updated_file , remove = True , overwrite = False ):
823823 project = API_USER + '/' + project_name
824824 cleanup (mc , project , [project_dir ])
825825
@@ -839,6 +839,12 @@ def create_versioned_project(mc, project_name, project_dir, updated_file, remove
839839 os .remove (os .path .join (project_dir , updated_file ))
840840 mc .push_project (project_dir )
841841
842+ # create version with forced overwrite (broken history)
843+ if overwrite :
844+ shutil .move (mp .fpath (updated_file ), mp .fpath_meta (updated_file ))
845+ shutil .copy (os .path .join (CHANGED_SCHEMA_DIR , 'modified_schema.gpkg' ), mp .fpath (updated_file ))
846+ shutil .copy (os .path .join (CHANGED_SCHEMA_DIR , 'modified_schema.gpkg-wal' ), mp .fpath (updated_file + '-wal' ))
847+ mc .push_project (project_dir )
842848 return mp
843849
844850
@@ -1625,7 +1631,7 @@ def test_report(mc):
16251631 project = API_USER + '/' + test_project
16261632 project_dir = os .path .join (TMP_DIR , test_project )
16271633 f_updated = "base.gpkg"
1628- mp = create_versioned_project (mc , test_project , project_dir , f_updated , remove = False )
1634+ mp = create_versioned_project (mc , test_project , project_dir , f_updated , remove = False , overwrite = True )
16291635
16301636 # create report for between versions 2 and 4
16311637 directory = mp .dir
@@ -1635,8 +1641,9 @@ def test_report(mc):
16351641 report_file = os .path .join (TMP_DIR , "report" , f'{ proj_name } -{ since } -{ to } .csv' )
16361642 if os .path .exists (report_file ):
16371643 os .remove (report_file )
1638- create_report (mc , directory , since , to , report_file )
1644+ warnings = create_report (mc , directory , since , to , report_file )
16391645 assert os .path .exists (report_file )
1646+ assert not warnings
16401647 # assert headers and content in report file
16411648 with open (report_file , "r" ) as rf :
16421649 content = rf .read ()
@@ -1647,6 +1654,10 @@ def test_report(mc):
16471654 # files not edited are not in reports
16481655 assert "inserted_1_A.gpkg" not in content
16491656
1657+ # do report for v1 with added files and v5 with overwritten file
1658+ warnings = create_report (mc , directory , "v1" , "v5" , report_file )
1659+ assert warnings
1660+
16501661 # rm local mergin project and try again
16511662 shutil .rmtree (directory )
16521663 with pytest .raises (InvalidProject ):
0 commit comments