25
25
26
26
__revision__ = '$Format:%H$'
27
27
28
+ import os
29
+ import shutil
30
+ import tempfile
31
+
28
32
from qgis .testing import start_app , unittest
29
33
from processing .tests .TestData import points2
30
34
from processing .tools import vector
31
35
from qgis .core import (QgsVectorLayer , QgsFeatureRequest )
32
36
from processing .core .ProcessingConfig import ProcessingConfig
33
37
34
- import os .path
35
- import errno
36
- import shutil
37
-
38
- dataFolder = os .path .join (os .path .dirname (__file__ ), '../../../../tests/testdata/' )
39
- tmpBaseFolder = os .path .join (os .sep , 'tmp' , 'qgis_test' , str (os .getpid ()))
40
-
41
-
42
- def mkDirP (path ):
43
- try :
44
- os .makedirs (path )
45
- except OSError as exc :
46
- if exc .errno == errno .EEXIST and os .path .isdir (path ):
47
- pass
48
- else :
49
- raise
38
+ testDataPath = os .path .join (os .path .dirname (__file__ ), 'testdata' )
50
39
51
40
start_app ()
52
41
@@ -55,54 +44,50 @@ class VectorTest(unittest.TestCase):
55
44
56
45
@classmethod
57
46
def setUpClass (cls ):
58
- mkDirP ( tmpBaseFolder )
47
+ cls . cleanup_paths = []
59
48
60
49
@classmethod
61
50
def tearDownClass (cls ):
62
- shutil . rmtree ( tmpBaseFolder )
63
- pass
51
+ for path in cls . cleanup_paths :
52
+ shutil . rmtree ( path )
64
53
65
- # See http://hub.qgis.org/issues/15698
66
- def test_ogrLayerName (self ):
67
- tmpdir = os .path .join (tmpBaseFolder , 'ogrLayerName' )
68
- os .mkdir (tmpdir )
54
+ def testOgrLayerNameExtraction (self ):
55
+ outdir = tempfile .mkdtemp ()
56
+ self .cleanup_paths .append (outdir )
69
57
70
- def linkTestfile ( f , t ):
71
- os . link (os .path .join (dataFolder , f ), os . path . join ( tmpdir , t ) )
58
+ def _copyFile ( dst ):
59
+ shutil . copyfile (os .path .join (testDataPath , 'custom' , 'grass7' , 'weighted.csv' ), dst )
72
60
73
- # URI from OGR provider
74
- linkTestfile ( 'geom_data.csv' , 'a.csv' )
75
- name = vector .ogrLayerName (tmpdir )
61
+ # OGR provider - single layer
62
+ _copyFile ( os . path . join ( outdir , 'a.csv' ) )
63
+ name = vector .ogrLayerName (outdir )
76
64
self .assertEqual (name , 'a' )
77
65
78
- # URI from OGR provider
79
- linkTestfile ('wkt_data.csv' , 'b.csv' )
80
- name = vector .ogrLayerName (tmpdir + '|layerid=0' )
81
- self .assertEqual (name , 'a' )
82
- name = vector .ogrLayerName (tmpdir + '|layerid=1' )
66
+ # OGR provider - multiple layers
67
+ _copyFile (os .path .join (outdir , 'b.csv' ))
68
+ name = vector .ogrLayerName (outdir + '|layerid=0' )
83
69
self .assertEqual (name , 'b' )
70
+ name = vector .ogrLayerName (outdir + '|layerid=1' )
71
+ self .assertEqual (name , 'a' )
84
72
85
- # URI from OGR provider
86
- name = vector .ogrLayerName (tmpdir + '|layerid=2' )
87
- self .assertEqual (name , 'invalid-layerid' )
73
+ name = vector .ogrLayerName (outdir + '|layerid=2' )
74
+ self .assertIsNone (name )
88
75
89
- # URI from OGR provider
90
- name = vector .ogrLayerName (tmpdir + '|layername=f' )
91
- self .assertEqual (name , 'f' ) # layername takes precedence
76
+ # OGR provider - layername takes precedence
77
+ name = vector .ogrLayerName (outdir + '|layername=f' )
78
+ self .assertEqual (name , 'f' )
92
79
93
- # URI from OGR provider
94
- name = vector .ogrLayerName (tmpdir + '|layerid=0|layername=f2' )
95
- self .assertEqual (name , 'f2' ) # layername takes precedence
80
+ name = vector .ogrLayerName (outdir + '|layerid=0|layername=f' )
81
+ self .assertEqual (name , 'f' )
96
82
97
- # URI from OGR provider
98
- name = vector .ogrLayerName (tmpdir + '|layername=f2|layerid=0' )
99
- self .assertEqual (name , 'f2' ) # layername takes precedence
83
+ name = vector .ogrLayerName (outdir + '|layername=f|layerid=0' )
84
+ self .assertEqual (name , 'f' )
100
85
101
- # URI from Sqlite provider
86
+ # SQLiite provider
102
87
name = vector .ogrLayerName ('dbname=\' /tmp/x.sqlite\' table="t" (geometry) sql=' )
103
88
self .assertEqual (name , 't' )
104
89
105
- # URI from PostgreSQL provider
90
+ # PostgreSQL provider
106
91
name = vector .ogrLayerName ('port=5493 sslmode=disable key=\' edge_id\' srid=0 type=LineString table="city_data"."edge" (geom) sql=' )
107
92
self .assertEqual (name , 'city_data.edge' )
108
93
0 commit comments