@@ -484,6 +484,34 @@ def testDeleteShapes(self):
484
484
485
485
vl = None
486
486
487
+ def testDontRepackOnReload (self ):
488
+ ''' Test fix for #18421 '''
489
+
490
+ tmpdir = tempfile .mkdtemp ()
491
+ self .dirs_to_cleanup .append (tmpdir )
492
+ srcpath = os .path .join (TEST_DATA_DIR , 'provider' )
493
+ for file in glob .glob (os .path .join (srcpath , 'shapefile.*' )):
494
+ shutil .copy (os .path .join (srcpath , file ), tmpdir )
495
+ datasource = os .path .join (tmpdir , 'shapefile.shp' )
496
+
497
+ vl = QgsVectorLayer ('{}|layerid=0' .format (datasource ), 'test' , 'ogr' )
498
+ feature_count = vl .featureCount ()
499
+ # Start an iterator that will open a new connection
500
+ iterator = vl .getFeatures ()
501
+ next (iterator )
502
+
503
+ # Delete another feature while in update mode
504
+ vl .dataProvider ().enterUpdateMode ()
505
+ vl .dataProvider ().reloadData ()
506
+ vl .dataProvider ().deleteFeatures ([0 ])
507
+
508
+ # Test that repacking has not been done (since in update mode)
509
+ ds = osgeo .ogr .Open (datasource )
510
+ self .assertTrue (ds .GetLayer (0 ).GetFeatureCount () == feature_count )
511
+ ds = None
512
+
513
+ vl = None
514
+
487
515
def testRepackUnderFileLocks (self ):
488
516
''' Test fix for #15570 and #15393 '''
489
517
0 commit comments