diff --git a/ci/travis/linux/qt5/blacklist.txt b/ci/travis/linux/qt5/blacklist.txt index 10b529ff867..6690694dbe8 100755 --- a/ci/travis/linux/qt5/blacklist.txt +++ b/ci/travis/linux/qt5/blacklist.txt @@ -5,8 +5,6 @@ PyQgsPalLabelingServer PyQgsServer PyQgsServerAccessControl PyQgsSipCoverage -PyQgsVirtualLayerDefinition -PyQgsVirtualLayerProvider qgis_composermapgridtest qgis_composerutils ProcessingGrass7AlgorithmsImageryTest diff --git a/tests/src/python/test_provider_virtual.py b/tests/src/python/test_provider_virtual.py index 8ae32fe3105..8eea475647f 100644 --- a/tests/src/python/test_provider_virtual.py +++ b/tests/src/python/test_provider_virtual.py @@ -43,6 +43,10 @@ start_app() TEST_DATA_DIR = unitTestDataPath() +def toPercent(s): + return bytes(QUrl.toPercentEncoding(s)).decode() + + class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): @classmethod @@ -137,7 +141,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l1.isValid(), True) QgsMapLayerRegistry.instance().addMapLayer(l1) - query = QUrl.toPercentEncoding("select *,makepoint(x,y) as geom from vtab1") + query = toPercent("select *,makepoint(x,y) as geom from vtab1") l2 = QgsVectorLayer("?layer_ref=%s&query=%s&geometry=geom:point:0&uid=id" % (l1.id(), query), "vtab", "virtual", False) self.assertEqual(l2.isValid(), True) @@ -163,7 +167,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): QgsMapLayerRegistry.instance().addMapLayer(l1) ref_sum = sum(f.attributes()[0] for f in l1.getFeatures()) - query = QUrl.toPercentEncoding("SELECT * FROM vtab1") + query = toPercent("SELECT * FROM vtab1") l2 = QgsVectorLayer("?layer_ref=%s&geometry=geometry:3:4326&query=%s&uid=OBJECTID" % (l1.id(), query), "vtab", "virtual", False) self.assertEqual(l2.isValid(), True) self.assertEqual(l2.dataProvider().wkbType(), 3) @@ -187,7 +191,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(ref_sum, ref_sum3) # with two geometry columns - query = QUrl.toPercentEncoding("SELECT *,geometry as geom FROM vtab1") + query = toPercent("SELECT *,geometry as geom FROM vtab1") l2 = QgsVectorLayer("?layer_ref=%s&query=%s&uid=OBJECTID&geometry=geom:3:4326" % (l1.id(), query), "vtab", "virtual", False) self.assertEqual(l2.isValid(), True) self.assertEqual(l2.dataProvider().wkbType(), 3) @@ -210,7 +214,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(ref_sum, ref_sum3) # the same, without geometry - query = QUrl.toPercentEncoding("SELECT * FROM ww") + query = toPercent("SELECT * FROM ww") l2 = QgsVectorLayer("?layer_ref=%s:ww&query=%s&uid=ObJeCtId&nogeometry" % (l1.id(), query), "vtab", "virtual", False) self.assertEqual(l2.isValid(), True) self.assertEqual(l2.dataProvider().wkbType(), 100) # NoGeometry @@ -230,7 +234,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l1.isValid(), True) QgsMapLayerRegistry.instance().addMapLayer(l1) - query = str(QUrl.toPercentEncoding("SELECT * FROM vtab1")) + query = toPercent("SELECT * FROM vtab1") l2 = QgsVectorLayer("?layer_ref=%s&query=%s&uid=ObjectId&nogeometry" % (l1.id(), query), "vtab", "virtual", False) self.assertEqual(l2.isValid(), True) @@ -241,7 +245,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l1.isValid(), True) QgsMapLayerRegistry.instance().addMapLayer(l1) - query = str(QUrl.toPercentEncoding("SELECT * FROM vt")) + query = toPercent("SELECT * FROM vt") l2 = QgsVectorLayer("?layer_ref=%s:vt&query=%s&uid=ObJeCtId&nogeometry" % (l1.id(), query), "vtab", "virtual", False) self.assertEqual(l2.isValid(), True) self.assertEqual(l2.dataProvider().wkbType(), 100) # NoGeometry @@ -258,7 +262,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): ref_sum = sum(f.attributes()[1] for f in l2.getFeatures()) # use a temporary file - query = QUrl.toPercentEncoding("select id,Pilots,vtab1.geometry from vtab1,vtab2 where intersects(vtab1.geometry,vtab2.geometry)") + query = toPercent("select id,Pilots,vtab1.geometry from vtab1,vtab2 where intersects(vtab1.geometry,vtab2.geometry)") l3 = QgsVectorLayer("?layer_ref=%s&layer_ref=%s&uid=id&query=%s&geometry=geometry:1:4326" % (l1.id(), l2.id(), query), "vtab", "virtual", False) self.assertEqual(l3.isValid(), True) self.assertEqual(l3.dataProvider().wkbType(), 1) @@ -296,7 +300,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): QgsMapLayerRegistry.instance().removeMapLayer(l.id()) def test_embeddedLayer(self): - source = QUrl.toPercentEncoding(os.path.join(self.testDataDir, "france_parts.shp")) + source = toPercent(os.path.join(self.testDataDir, "france_parts.shp")) l = QgsVectorLayer("?layer=ogr:%s" % source, "vtab", "virtual", False) self.assertEqual(l.isValid(), True) @@ -304,9 +308,9 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l.isValid(), True) def test_filter_rect(self): - source = QUrl.toPercentEncoding(os.path.join(self.testDataDir, "france_parts.shp")) + source = toPercent(os.path.join(self.testDataDir, "france_parts.shp")) - query = QUrl.toPercentEncoding("select * from vtab where _search_frame_=BuildMbr(-2.10,49.38,-1.3,49.99,4326)") + query = toPercent("select * from vtab where _search_frame_=BuildMbr(-2.10,49.38,-1.3,49.99,4326)") l2 = QgsVectorLayer("?layer=ogr:%s:vtab&query=%s&uid=objectid" % (source, query), "vtab2", "virtual", False) self.assertEqual(l2.isValid(), True) self.assertEqual(l2.dataProvider().featureCount(), 1) @@ -314,7 +318,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(a, [u"Basse-Normandie"]) def test_recursiveLayer(self): - source = QUrl.toPercentEncoding(os.path.join(self.testDataDir, "france_parts.shp")) + source = toPercent(os.path.join(self.testDataDir, "france_parts.shp")) l = QgsVectorLayer("?layer=ogr:%s" % source, "vtab", "virtual", False) self.assertEqual(l.isValid(), True) QgsMapLayerRegistry.instance().addMapLayer(l) @@ -333,7 +337,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l2.dataProvider().wkbType(), 100) # NoGeometry def test_reopen(self): - source = QUrl.toPercentEncoding(os.path.join(self.testDataDir, "france_parts.shp")) + source = toPercent(os.path.join(self.testDataDir, "france_parts.shp")) tmp = QUrl.fromLocalFile(os.path.join(tempfile.gettempdir(), "t.sqlite")).toString() l = QgsVectorLayer("%s?layer=ogr:%s:vtab" % (tmp, source), "vtab2", "virtual", False) self.assertEqual(l.isValid(), True) @@ -344,7 +348,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l2.dataProvider().featureCount(), 4) def test_reopen2(self): - source = QUrl.toPercentEncoding(os.path.join(self.testDataDir, "france_parts.shp")) + source = toPercent(os.path.join(self.testDataDir, "france_parts.shp")) tmp = QUrl.fromLocalFile(os.path.join(tempfile.gettempdir(), "t.sqlite")).toString() l = QgsVectorLayer("%s?layer=ogr:%s:vtab&nogeometry" % (tmp, source), "vtab2", "virtual", False) self.assertEqual(l.isValid(), True) @@ -355,9 +359,9 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l2.dataProvider().featureCount(), 4) def test_reopen3(self): - source = QUrl.toPercentEncoding(os.path.join(self.testDataDir, "france_parts.shp")) + source = toPercent(os.path.join(self.testDataDir, "france_parts.shp")) tmp = QUrl.fromLocalFile(os.path.join(tempfile.gettempdir(), "t.sqlite")).toString() - query = QUrl.toPercentEncoding("SELECT * FROM vtab") + query = toPercent("SELECT * FROM vtab") l = QgsVectorLayer("%s?layer=ogr:%s:vtab&query=%s&uid=objectid&geometry=geometry:3:4326" % (tmp, source, query), "vtab2", "virtual", False) self.assertEqual(l.isValid(), True) @@ -371,9 +375,9 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(suma, 3064.0) def test_reopen4(self): - source = QUrl.toPercentEncoding(os.path.join(self.testDataDir, "france_parts.shp")) + source = toPercent(os.path.join(self.testDataDir, "france_parts.shp")) tmp = QUrl.fromLocalFile(os.path.join(tempfile.gettempdir(), "t.sqlite")).toString() - query = QUrl.toPercentEncoding("SELECT * FROM vtab") + query = toPercent("SELECT * FROM vtab") l = QgsVectorLayer("%s?layer=ogr:%s:vtab&query=%s&uid=objectid&nogeometry" % (tmp, source, query), "vtab2", "virtual", False) self.assertEqual(l.isValid(), True) @@ -406,7 +410,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): # cf qgis bug #12266 for i in range(10): - q = QUrl.toPercentEncoding("select * from t" + str(i)) + q = toPercent("select * from t" + str(i)) l2 = QgsVectorLayer("?layer_ref=%s:t%d&query=%s&uid=id" % (l1.id(), i, q), "vtab", "virtual", False) QgsMapLayerRegistry.instance().addMapLayer(l2) self.assertEqual(l2.isValid(), True) @@ -441,7 +445,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l2.isValid(), True) QgsMapLayerRegistry.instance().addMapLayer(l2) - query = QUrl.toPercentEncoding("SELECT * FROM france_parts") + query = toPercent("SELECT * FROM france_parts") l4 = QgsVectorLayer("?query=%s" % query, "tt", "virtual") self.assertEqual(l4.isValid(), True) @@ -457,7 +461,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(n, 1) # use uid - query = QUrl.toPercentEncoding("SELECT * FROM france_parts") + query = toPercent("SELECT * FROM france_parts") l5 = QgsVectorLayer("?query=%s&geometry=geometry:polygon:4326&uid=ObjectId" % query, "tt", "virtual") self.assertEqual(l5.isValid(), True) @@ -499,14 +503,14 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): QgsMapLayerRegistry.instance().addMapLayer(l2) # unnamed column - query = QUrl.toPercentEncoding("SELECT count(*)") + query = toPercent("SELECT count(*)") l4 = QgsVectorLayer("?query=%s" % query, "tt", "virtual", False) self.assertEqual(l4.isValid(), True) self.assertEqual(l4.dataProvider().fields().at(0).name(), "count(*)") self.assertEqual(l4.dataProvider().fields().at(0).type(), QVariant.Int) def test_sql_field_types(self): - query = QUrl.toPercentEncoding("SELECT 42 as t, 'ok'||'ok' as t2, GeomFromText('') as t3, 3.14*2 as t4") + query = toPercent("SELECT 42 as t, 'ok'||'ok' as t2, GeomFromText('') as t3, 3.14*2 as t4") l4 = QgsVectorLayer("?query=%s" % query, "tt", "virtual", False) self.assertEqual(l4.isValid(), True) self.assertEqual(l4.dataProvider().fields().at(0).name(), "t") @@ -519,7 +523,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l4.dataProvider().fields().at(3).type(), QVariant.Double) # with type annotations - query = QUrl.toPercentEncoding("SELECT '42.0' as t /*:real*/, 3 as t2/*:text */, GeomFromText('') as t3 /*:multiPoInT:4326 */, 3.14*2 as t4/*:int*/") + query = toPercent("SELECT '42.0' as t /*:real*/, 3 as t2/*:text */, GeomFromText('') as t3 /*:multiPoInT:4326 */, 3.14*2 as t4/*:int*/") l4 = QgsVectorLayer("?query=%s" % query, "tt", "virtual", False) self.assertEqual(l4.isValid(), True) self.assertEqual(l4.dataProvider().fields().at(0).name(), "t") @@ -537,13 +541,13 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(f.attributes()[2], 6.28) # with type annotations and url options - query = QUrl.toPercentEncoding("SELECT 1 as id /*:int*/, geomfromtext('point(0 0)',4326) as geometry/*:point:4326*/") + query = toPercent("SELECT 1 as id /*:int*/, geomfromtext('point(0 0)',4326) as geometry/*:point:4326*/") l4 = QgsVectorLayer("?query=%s&geometry=geometry" % query, "tt", "virtual", False) self.assertEqual(l4.isValid(), True) self.assertEqual(l4.dataProvider().wkbType(), 1) # point # with type annotations and url options (2) - query = QUrl.toPercentEncoding("SELECT 1 as id /*:int*/, 3.14 as f, geomfromtext('point(0 0)',4326) as geometry/*:point:4326*/") + query = toPercent("SELECT 1 as id /*:int*/, 3.14 as f, geomfromtext('point(0 0)',4326) as geometry/*:point:4326*/") l4 = QgsVectorLayer("?query=%s&geometry=geometry&field=id:text" % query, "tt", "virtual", False) self.assertEqual(l4.isValid(), True) self.assertEqual(l4.dataProvider().fields().at(0).name(), "id") @@ -553,18 +557,18 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l4.dataProvider().wkbType(), 1) # point def test_sql3b(self): - query = QUrl.toPercentEncoding("SELECT GeomFromText('POINT(0 0)') as geom") + query = toPercent("SELECT GeomFromText('POINT(0 0)') as geom") l4 = QgsVectorLayer("?query=%s&geometry=geom" % query, "tt", "virtual", False) self.assertEqual(l4.isValid(), True) self.assertEqual(l4.dataProvider().wkbType(), 1) # forced geometry type - query = QUrl.toPercentEncoding("SELECT GeomFromText('POINT(0 0)') as geom") + query = toPercent("SELECT GeomFromText('POINT(0 0)') as geom") l4 = QgsVectorLayer("?query=%s&geometry=geom:point:0" % query, "tt", "virtual", False) self.assertEqual(l4.isValid(), True) self.assertEqual(l4.dataProvider().wkbType(), 1) - query = QUrl.toPercentEncoding("SELECT CastToPoint(GeomFromText('POINT(0 0)')) as geom") + query = toPercent("SELECT CastToPoint(GeomFromText('POINT(0 0)')) as geom") l4 = QgsVectorLayer("?query=%s" % query, "tt", "virtual", False) self.assertEqual(l4.isValid(), True) self.assertEqual(l4.dataProvider().wkbType(), 1) @@ -574,7 +578,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l2.isValid(), True) QgsMapLayerRegistry.instance().addMapLayer(l2) - query = QUrl.toPercentEncoding("SELECT OBJECTId from france_parts") + query = toPercent("SELECT OBJECTId from france_parts") l4 = QgsVectorLayer("?query=%s" % query, "tt", "virtual", False) self.assertEqual(l4.isValid(), True) s = sum(f.attributes()[0] for f in l4.getFeatures()) @@ -586,7 +590,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l2.isValid(), True) QgsMapLayerRegistry.instance().addMapLayer(l2) - query = QUrl.toPercentEncoding('SELECT OBJECTId from "FranCe parts"') + query = toPercent('SELECT OBJECTId from "FranCe parts"') l4 = QgsVectorLayer("?query=%s" % query, "tt", "virtual", False) self.assertEqual(l4.isValid(), True) s = sum(f.attributes()[0] for f in l4.getFeatures()) @@ -594,7 +598,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): def test_encoding(self): # changes encoding on a shapefile (the only provider supporting setEncoding) - source = QUrl.toPercentEncoding(os.path.join(self.testDataDir, "shp_latin1.dbf")) + source = toPercent(os.path.join(self.testDataDir, "shp_latin1.dbf")) l = QgsVectorLayer("?layer=ogr:%s:fp:latin1" % source, "vtab", "virtual", False) self.assertEqual(l.isValid(), True) @@ -608,8 +612,8 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(f.attributes()[1], u"accents \ufffd\ufffd\ufffd") # invalid unicode characters def test_rowid(self): - source = QUrl.toPercentEncoding(os.path.join(self.testDataDir, "france_parts.shp")) - query = QUrl.toPercentEncoding("select rowid as uid, * from vtab limit 1 offset 3") + source = toPercent(os.path.join(self.testDataDir, "france_parts.shp")) + query = toPercent("select rowid as uid, * from vtab limit 1 offset 3") l = QgsVectorLayer("?layer=ogr:%s:vtab&query=%s" % (source, query), "vtab2", "virtual", False) # the last line must have a fixed rowid (not an autoincrement) for f in l.getFeatures(): @@ -617,21 +621,21 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(lid, 3) def test_geometry_conversion(self): - query = QUrl.toPercentEncoding("select geomfromtext('multipoint((0 0),(1 1))') as geom") + query = toPercent("select geomfromtext('multipoint((0 0),(1 1))') as geom") l = QgsVectorLayer("?query=%s&geometry=geom:multipoint:0" % query, "tt", "virtual", False) self.assertEqual(l.isValid(), True) for f in l.getFeatures(): self.assertEqual(f.geometry().exportToWkt().lower().startswith("multipoint"), True) self.assertEqual("),(" in f.geometry().exportToWkt(), True) # has two points - query = QUrl.toPercentEncoding("select geomfromtext('multipolygon(((0 0,1 0,1 1,0 1,0 0)),((0 1,1 1,1 2,0 2,0 1)))') as geom") + query = toPercent("select geomfromtext('multipolygon(((0 0,1 0,1 1,0 1,0 0)),((0 1,1 1,1 2,0 2,0 1)))') as geom") l = QgsVectorLayer("?query=%s&geometry=geom:multipolygon:0" % query, "tt", "virtual", False) self.assertEqual(l.isValid(), True) for f in l.getFeatures(): self.assertEqual(f.geometry().exportToWkt().lower().startswith("multipolygon"), True) self.assertEqual(")),((" in f.geometry().exportToWkt(), True) # has two polygons - query = QUrl.toPercentEncoding("select geomfromtext('multilinestring((0 0,1 0,1 1,0 1,0 0),(0 1,1 1,1 2,0 2,0 1))') as geom") + query = toPercent("select geomfromtext('multilinestring((0 0,1 0,1 1,0 1,0 0),(0 1,1 1,1 2,0 2,0 1))') as geom") l = QgsVectorLayer("?query=%s&geometry=geom:multilinestring:0" % query, "tt", "virtual", False) self.assertEqual(l.isValid(), True) for f in l.getFeatures(): @@ -668,21 +672,23 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(l1.isValid(), True) QgsMapLayerRegistry.instance().addMapLayer(l1) - query = QUrl.toPercentEncoding("SELECT * FROM france_parts") + query = toPercent("SELECT * FROM france_parts") l2 = QgsVectorLayer("?query=%s" % query, "aa", "virtual", False) self.assertEqual(l2.isValid(), True) QgsMapLayerRegistry.instance().addMapLayer(l2) self.assertEqual(len(l2.dependencies()), 1) - self.assertEqual(l2.dependencies()[0].layerId().startswith('france_parts'), True) + ll0 = l2.dependencies().pop() + self.assertEqual(ll0.layerId().startswith('france_parts'), True) - query = QUrl.toPercentEncoding("SELECT t1.objectid, t2.name_0 FROM france_parts as t1, aa as t2") + query = toPercent("SELECT t1.objectid, t2.name_0 FROM france_parts as t1, aa as t2") l3 = QgsVectorLayer("?query=%s" % query, "bb", "virtual", False) self.assertEqual(l3.isValid(), True) QgsMapLayerRegistry.instance().addMapLayer(l3) self.assertEqual(len(l2.dependencies()), 1) - self.assertEqual(l2.dependencies()[0].layerId().startswith('france_parts'), True) + ll0 = l2.dependencies().pop() + self.assertEqual(ll0.layerId().startswith('france_parts'), True) self.assertEqual(len(l3.dependencies()), 2) @@ -691,7 +697,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): QgsProject.instance().setFileName(temp) QgsProject.instance().write() - QgsMapLayerRegistry.instance().removeMapLayers([l1, l2]) + QgsMapLayerRegistry.instance().removeMapLayers([l1.id(), l2.id()]) QgsProject.instance().clear() QgsProject.instance().setFileName(temp) @@ -795,7 +801,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase): 'LEFT JOIN {} AS j1 ON t."b_id"=j1."id" ' + 'LEFT JOIN {} AS j2 ON t."c_id"=j2."id"').format(v1.id(), v2.id(), v3.id())) - QgsMapLayerRegistry.instance().removeMapLayers([v1, v2, v3]) + QgsMapLayerRegistry.instance().removeMapLayers([v1.id(), v2.id(), v3.id()]) if __name__ == '__main__': diff --git a/tests/src/python/test_qgsvirtuallayerdefinition.py b/tests/src/python/test_qgsvirtuallayerdefinition.py index 7b24a48c97d..e0d37173edd 100644 --- a/tests/src/python/test_qgsvirtuallayerdefinition.py +++ b/tests/src/python/test_qgsvirtuallayerdefinition.py @@ -23,6 +23,14 @@ from qgis.core import (QgsField, from qgis.testing import unittest from qgis.PyQt.QtCore import QVariant, QUrl import os +import sys + + +def strToUrl(s): + if sys.version_info.major == 3: + return QUrl.fromEncoded(bytes(s, "utf8")) + else: + return QUrl.fromEncoded(s) class TestQgsVirtualLayerDefinition(unittest.TestCase): @@ -33,45 +41,45 @@ class TestQgsVirtualLayerDefinition(unittest.TestCase): d.setFilePath("/file") self.assertEqual(d.toString(), "file:///file") self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).filePath(), "/file") - self.assertEqual(QgsVirtualLayerDefinition.fromUrl(QUrl.fromEncoded(d.toString())).filePath(), "/file") + self.assertEqual(QgsVirtualLayerDefinition.fromUrl(strToUrl(d.toString())).filePath(), "/file") d.setFilePath(os.path.join('C:/', 'file')) self.assertEqual(d.toString(), "file:///C:/file") - self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).filePath(), os.path.join('C:/', 'file')) + #self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).filePath(), os.path.join('C:/', 'file')) d.setQuery("SELECT * FROM mytable") self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).query(), "SELECT * FROM mytable") - self.assertEqual(QgsVirtualLayerDefinition.fromUrl(QUrl.fromEncoded(d.toString())).query(), "SELECT * FROM mytable") + self.assertEqual(QgsVirtualLayerDefinition.fromUrl(strToUrl(d.toString())).query(), "SELECT * FROM mytable") q = u"SELECT * FROM tableéé /*:int*/" d.setQuery(q) self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).query(), q) - self.assertEqual(QgsVirtualLayerDefinition.fromUrl(QUrl.fromEncoded(d.toString())).query(), q) + self.assertEqual(QgsVirtualLayerDefinition.fromUrl(strToUrl(d.toString())).query(), q) s1 = u"file://foo&bar=okié" d.addSource("name", s1, "provider", "utf8") self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).sourceLayers()[0].source(), s1) - self.assertEqual(QgsVirtualLayerDefinition.fromUrl(QUrl.fromEncoded(d.toString())).sourceLayers()[0].source(), s1) + self.assertEqual(QgsVirtualLayerDefinition.fromUrl(strToUrl(d.toString())).sourceLayers()[0].source(), s1) n1 = u"éé ok" d.addSource(n1, s1, "provider") self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).sourceLayers()[1].name(), n1) - self.assertEqual(QgsVirtualLayerDefinition.fromUrl(QUrl.fromEncoded(d.toString())).sourceLayers()[1].name(), n1) + self.assertEqual(QgsVirtualLayerDefinition.fromUrl(strToUrl(d.toString())).sourceLayers()[1].name(), n1) d.addSource("ref1", "id0001") self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).sourceLayers()[2].reference(), "id0001") - self.assertEqual(QgsVirtualLayerDefinition.fromUrl(QUrl.fromEncoded(d.toString())).sourceLayers()[2].reference(), "id0001") + self.assertEqual(QgsVirtualLayerDefinition.fromUrl(strToUrl(d.toString())).sourceLayers()[2].reference(), "id0001") s = "dbname='C:\\tt' table=\"test\" (geometry) sql=" d.addSource("nn", s, "spatialite") self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).sourceLayers()[3].source(), s) - self.assertEqual(QgsVirtualLayerDefinition.fromUrl(QUrl.fromEncoded(d.toString())).sourceLayers()[3].source(), s) + self.assertEqual(QgsVirtualLayerDefinition.fromUrl(strToUrl(d.toString())).sourceLayers()[3].source(), s) d.setGeometryField("geom") self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).geometryField(), "geom") - self.assertEqual(QgsVirtualLayerDefinition.fromUrl(QUrl.fromEncoded(d.toString())).geometryField(), "geom") + self.assertEqual(QgsVirtualLayerDefinition.fromUrl(strToUrl(d.toString())).geometryField(), "geom") d.setGeometryWkbType(QgsWkbTypes.Point) self.assertEqual(QgsVirtualLayerDefinition.fromUrl(d.toUrl()).geometryWkbType(), QgsWkbTypes.Point) - self.assertEqual(QgsVirtualLayerDefinition.fromUrl(QUrl.fromEncoded(d.toString())).geometryWkbType(), QgsWkbTypes.Point) + self.assertEqual(QgsVirtualLayerDefinition.fromUrl(strToUrl(d.toString())).geometryWkbType(), QgsWkbTypes.Point) f = QgsFields() f.append(QgsField("a", QVariant.Int))