|
20 | 20 | import glob
|
21 | 21 | from osgeo import gdal, ogr
|
22 | 22 |
|
| 23 | +from qgis.PyQt.QtCore import QCoreApplication, QSettings |
23 | 24 | from qgis.core import QgsVectorLayer, QgsFeature, QgsGeometry, QgsFeatureRequest, QgsRectangle
|
24 | 25 | from qgis.testing import start_app, unittest
|
25 | 26 | from utilities import unitTestDataPath
|
@@ -48,10 +49,17 @@ def setUpClass(cls):
|
48 | 49 | # Create test layer
|
49 | 50 | cls.basetestpath = tempfile.mkdtemp()
|
50 | 51 |
|
| 52 | + QCoreApplication.setOrganizationName("QGIS_Test") |
| 53 | + QCoreApplication.setOrganizationDomain("TestPyQgsOGRProviderGpkg.com") |
| 54 | + QCoreApplication.setApplicationName("TestPyQgsOGRProviderGpkg") |
| 55 | + QSettings().clear() |
| 56 | + start_app() |
| 57 | + |
51 | 58 | @classmethod
|
52 | 59 | def tearDownClass(cls):
|
53 | 60 | """Run after all tests"""
|
54 | 61 | shutil.rmtree(cls.basetestpath, True)
|
| 62 | + QSettings().clear() |
55 | 63 |
|
56 | 64 | def testSingleToMultiPolygonPromotion(self):
|
57 | 65 |
|
@@ -200,5 +208,44 @@ def testGeopackageExtentUpdate(self):
|
200 | 208 | self.assertTrue(QgsGeometry.compare(provider_extent.asPolygon()[0], reference.asPolygon()[0], 0.00001),
|
201 | 209 | provider_extent.asPolygon()[0])
|
202 | 210 |
|
| 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 | + |
203 | 250 | if __name__ == '__main__':
|
204 | 251 | unittest.main()
|
0 commit comments