@@ -819,7 +819,7 @@ def test_server_compatibility(mc):
819
819
assert mc .is_server_compatible ()
820
820
821
821
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 ):
823
823
project = API_USER + '/' + project_name
824
824
cleanup (mc , project , [project_dir ])
825
825
@@ -839,6 +839,12 @@ def create_versioned_project(mc, project_name, project_dir, updated_file, remove
839
839
os .remove (os .path .join (project_dir , updated_file ))
840
840
mc .push_project (project_dir )
841
841
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 )
842
848
return mp
843
849
844
850
@@ -1625,7 +1631,7 @@ def test_report(mc):
1625
1631
project = API_USER + '/' + test_project
1626
1632
project_dir = os .path .join (TMP_DIR , test_project )
1627
1633
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 )
1629
1635
1630
1636
# create report for between versions 2 and 4
1631
1637
directory = mp .dir
@@ -1635,8 +1641,9 @@ def test_report(mc):
1635
1641
report_file = os .path .join (TMP_DIR , "report" , f'{ proj_name } -{ since } -{ to } .csv' )
1636
1642
if os .path .exists (report_file ):
1637
1643
os .remove (report_file )
1638
- create_report (mc , directory , since , to , report_file )
1644
+ warnings = create_report (mc , directory , since , to , report_file )
1639
1645
assert os .path .exists (report_file )
1646
+ assert not warnings
1640
1647
# assert headers and content in report file
1641
1648
with open (report_file , "r" ) as rf :
1642
1649
content = rf .read ()
@@ -1647,6 +1654,10 @@ def test_report(mc):
1647
1654
# files not edited are not in reports
1648
1655
assert "inserted_1_A.gpkg" not in content
1649
1656
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
+
1650
1661
# rm local mergin project and try again
1651
1662
shutil .rmtree (directory )
1652
1663
with pytest .raises (InvalidProject ):
0 commit comments