Skip to content

Commit eb91915

Browse files
committed
test_provider_ogr_gpkg.py: Test disabling walForSqlite3 setting
1 parent 38a7711 commit eb91915

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

tests/src/python/test_provider_ogr_gpkg.py

+47
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import glob
2121
from osgeo import gdal, ogr
2222

23+
from qgis.PyQt.QtCore import QCoreApplication, QSettings
2324
from qgis.core import QgsVectorLayer, QgsFeature, QgsGeometry, QgsFeatureRequest, QgsRectangle
2425
from qgis.testing import start_app, unittest
2526
from utilities import unitTestDataPath
@@ -48,10 +49,17 @@ def setUpClass(cls):
4849
# Create test layer
4950
cls.basetestpath = tempfile.mkdtemp()
5051

52+
QCoreApplication.setOrganizationName("QGIS_Test")
53+
QCoreApplication.setOrganizationDomain("TestPyQgsOGRProviderGpkg.com")
54+
QCoreApplication.setApplicationName("TestPyQgsOGRProviderGpkg")
55+
QSettings().clear()
56+
start_app()
57+
5158
@classmethod
5259
def tearDownClass(cls):
5360
"""Run after all tests"""
5461
shutil.rmtree(cls.basetestpath, True)
62+
QSettings().clear()
5563

5664
def testSingleToMultiPolygonPromotion(self):
5765

@@ -200,5 +208,44 @@ def testGeopackageExtentUpdate(self):
200208
self.assertTrue(QgsGeometry.compare(provider_extent.asPolygon()[0], reference.asPolygon()[0], 0.00001),
201209
provider_extent.asPolygon()[0])
202210

211+
def testDisablewalForSqlite3(self):
212+
''' Test disabling walForSqlite3 setting '''
213+
QSettings().setValue("/qgis/walForSqlite3", False)
214+
215+
tmpfile = os.path.join(self.basetestpath, 'testDisablewalForSqlite3.gpkg')
216+
ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile)
217+
lyr = ds.CreateLayer('test', geom_type=ogr.wkbPoint)
218+
lyr.CreateField(ogr.FieldDefn('attr0', ogr.OFTInteger))
219+
lyr.CreateField(ogr.FieldDefn('attr1', ogr.OFTInteger))
220+
f = ogr.Feature(lyr.GetLayerDefn())
221+
f.SetGeometry(ogr.CreateGeometryFromWkt('POINT(0 0)'))
222+
lyr.CreateFeature(f)
223+
f = None
224+
ds = None
225+
226+
vl = QgsVectorLayer(u'{}'.format(tmpfile), u'test', u'ogr')
227+
228+
# Test that we are using default delete mode and not WAL
229+
ds = ogr.Open(tmpfile)
230+
lyr = ds.ExecuteSQL('PRAGMA journal_mode')
231+
f = lyr.GetNextFeature()
232+
res = f.GetField(0)
233+
ds.ReleaseResultSet(lyr)
234+
ds = None
235+
self.assertEqual(res, 'delete')
236+
237+
self.assertTrue(vl.startEditing())
238+
feature = vl.getFeatures().next()
239+
self.assertTrue(vl.changeAttributeValue(feature.id(), 1, 1001))
240+
241+
# Commit changes
242+
cbk = ErrorReceiver()
243+
vl.dataProvider().raiseError.connect(cbk.receiveError)
244+
self.assertTrue(vl.commitChanges())
245+
self.assertIsNone(cbk.msg)
246+
vl = None
247+
248+
QSettings().setValue("/qgis/walForSqlite3", None)
249+
203250
if __name__ == '__main__':
204251
unittest.main()

0 commit comments

Comments
 (0)