Skip to content

Commit df4716b

Browse files
committedMay 28, 2015
Run atlas test in temporary folder
1 parent 232565d commit df4716b

File tree

1 file changed

+111
-97
lines changed

1 file changed

+111
-97
lines changed
 

‎tests/src/python/test_qgsatlascomposition.py

Lines changed: 111 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -16,87 +16,98 @@
1616
'''
1717
import qgis
1818
import unittest
19+
import os
20+
import glob
21+
import shutil
22+
import tempfile
1923
from utilities import getQgisTestApp, unitTestDataPath
2024
from PyQt4.QtCore import QFileInfo, QRectF, qWarning
21-
from qgis.core import QGis, QgsVectorLayer, QgsMapLayerRegistry, QgsMapRenderer, QgsCoordinateReferenceSystem, QgsComposition, QgsFillSymbolV2, QgsSingleSymbolRendererV2, QgsComposerLabel, QgsComposerMap, QgsFontUtils, QgsRectangle
25+
from qgis.core import QGis, QgsVectorLayer, QgsMapLayerRegistry, QgsMapRenderer, QgsCoordinateReferenceSystem, \
26+
QgsComposition, QgsFillSymbolV2, QgsSingleSymbolRendererV2, QgsComposerLabel, QgsComposerMap, QgsFontUtils, \
27+
QgsRectangle
2228
from qgscompositionchecker import QgsCompositionChecker
2329

2430
QGISAPP, CANVAS, IFACE, PARENT = getQgisTestApp()
2531

26-
class TestQgsAtlasComposition(unittest.TestCase):
2732

33+
class TestQgsAtlasComposition(unittest.TestCase):
2834
def testCase(self):
2935
self.TEST_DATA_DIR = unitTestDataPath()
30-
vectorFileInfo = QFileInfo( self.TEST_DATA_DIR + "/france_parts.shp")
31-
mVectorLayer = QgsVectorLayer( vectorFileInfo.filePath(), vectorFileInfo.completeBaseName(), "ogr" )
36+
tmppath = tempfile.mkdtemp()
37+
for file in glob.glob(os.path.join(self.TEST_DATA_DIR, 'france_parts.*')):
38+
shutil.copy(os.path.join(self.TEST_DATA_DIR, file), tmppath)
39+
vectorFileInfo = QFileInfo(tmppath + "/france_parts.shp")
40+
mVectorLayer = QgsVectorLayer(vectorFileInfo.filePath(), vectorFileInfo.completeBaseName(), "ogr")
3241

33-
QgsMapLayerRegistry.instance().addMapLayers( [mVectorLayer] )
42+
QgsMapLayerRegistry.instance().addMapLayers([mVectorLayer])
3443

3544
# create composition with composer map
3645
mMapRenderer = QgsMapRenderer()
3746
layerStringList = []
38-
layerStringList.append( mVectorLayer.id() )
39-
mMapRenderer.setLayerSet( layerStringList )
40-
mMapRenderer.setProjectionsEnabled( True )
41-
mMapRenderer.setMapUnits( QGis.Meters )
47+
layerStringList.append(mVectorLayer.id())
48+
mMapRenderer.setLayerSet(layerStringList)
49+
mMapRenderer.setProjectionsEnabled(True)
50+
mMapRenderer.setMapUnits(QGis.Meters)
4251

4352
# select epsg:2154
4453
crs = QgsCoordinateReferenceSystem()
45-
crs.createFromSrid( 2154 )
46-
mMapRenderer.setDestinationCrs( crs )
54+
crs.createFromSrid(2154)
55+
mMapRenderer.setDestinationCrs(crs)
4756

48-
self.mComposition = QgsComposition( mMapRenderer )
49-
self.mComposition.setPaperSize( 297, 210 )
57+
self.mComposition = QgsComposition(mMapRenderer)
58+
self.mComposition.setPaperSize(297, 210)
5059

5160
# fix the renderer, fill with green
52-
props = { "color": "0,127,0" }
53-
fillSymbol = QgsFillSymbolV2.createSimple( props )
54-
renderer = QgsSingleSymbolRendererV2( fillSymbol )
55-
mVectorLayer.setRendererV2( renderer )
61+
props = {"color": "0,127,0"}
62+
fillSymbol = QgsFillSymbolV2.createSimple(props)
63+
renderer = QgsSingleSymbolRendererV2(fillSymbol)
64+
mVectorLayer.setRendererV2(renderer)
5665

5766
# the atlas map
58-
self.mAtlasMap = QgsComposerMap( self.mComposition, 20, 20, 130, 130 )
59-
self.mAtlasMap.setFrameEnabled( True )
60-
self.mComposition.addComposerMap( self.mAtlasMap )
67+
self.mAtlasMap = QgsComposerMap(self.mComposition, 20, 20, 130, 130)
68+
self.mAtlasMap.setFrameEnabled(True)
69+
self.mComposition.addComposerMap(self.mAtlasMap)
6170

6271
# the atlas
6372
self.mAtlas = self.mComposition.atlasComposition()
64-
self.mAtlas.setCoverageLayer( mVectorLayer )
65-
self.mAtlas.setEnabled( True )
66-
self.mComposition.setAtlasMode( QgsComposition.ExportAtlas )
73+
self.mAtlas.setCoverageLayer(mVectorLayer)
74+
self.mAtlas.setEnabled(True)
75+
self.mComposition.setAtlasMode(QgsComposition.ExportAtlas)
6776

6877
# an overview
69-
mOverview = QgsComposerMap( self.mComposition, 180, 20, 50, 50 )
70-
mOverview.setFrameEnabled( True )
71-
mOverview.setOverviewFrameMap( self.mAtlasMap.id() )
72-
self.mComposition.addComposerMap( mOverview )
73-
nextent = QgsRectangle( 49670.718, 6415139.086, 699672.519, 7065140.887 )
74-
mOverview.setNewExtent( nextent )
78+
mOverview = QgsComposerMap(self.mComposition, 180, 20, 50, 50)
79+
mOverview.setFrameEnabled(True)
80+
mOverview.setOverviewFrameMap(self.mAtlasMap.id())
81+
self.mComposition.addComposerMap(mOverview)
82+
nextent = QgsRectangle(49670.718, 6415139.086, 699672.519, 7065140.887)
83+
mOverview.setNewExtent(nextent)
7584

7685
# set the fill symbol of the overview map
77-
props2 = { "color": "127,0,0,127" }
78-
fillSymbol2 = QgsFillSymbolV2.createSimple( props2 )
79-
mOverview.setOverviewFrameMapSymbol( fillSymbol2 )
86+
props2 = {"color": "127,0,0,127"}
87+
fillSymbol2 = QgsFillSymbolV2.createSimple(props2)
88+
mOverview.setOverviewFrameMapSymbol(fillSymbol2)
8089

8190
# header label
82-
self.mLabel1 = QgsComposerLabel( self.mComposition )
83-
self.mComposition.addComposerLabel( self.mLabel1 )
84-
self.mLabel1.setText( "[% \"NAME_1\" %] area" )
85-
self.mLabel1.setFont( QgsFontUtils.getStandardTestFont() )
91+
self.mLabel1 = QgsComposerLabel(self.mComposition)
92+
self.mComposition.addComposerLabel(self.mLabel1)
93+
self.mLabel1.setText("[% \"NAME_1\" %] area")
94+
self.mLabel1.setFont(QgsFontUtils.getStandardTestFont())
8695
self.mLabel1.adjustSizeToText()
87-
self.mLabel1.setSceneRect( QRectF( 150, 5, 60, 15 ) )
96+
self.mLabel1.setSceneRect(QRectF(150, 5, 60, 15))
8897

89-
qWarning( "header label font: %s exactMatch:%s" % ( self.mLabel1.font().toString(), self.mLabel1.font().exactMatch() ) )
98+
qWarning(
99+
"header label font: %s exactMatch:%s" % (self.mLabel1.font().toString(), self.mLabel1.font().exactMatch()))
90100

91101
# feature number label
92-
self.mLabel2 = QgsComposerLabel( self.mComposition )
93-
self.mComposition.addComposerLabel( self.mLabel2 )
94-
self.mLabel2.setText( "# [%$feature || ' / ' || $numfeatures%]" )
95-
self.mLabel2.setFont( QgsFontUtils.getStandardTestFont() )
102+
self.mLabel2 = QgsComposerLabel(self.mComposition)
103+
self.mComposition.addComposerLabel(self.mLabel2)
104+
self.mLabel2.setText("# [%$feature || ' / ' || $numfeatures%]")
105+
self.mLabel2.setFont(QgsFontUtils.getStandardTestFont())
96106
self.mLabel2.adjustSizeToText()
97-
self.mLabel2.setSceneRect( QRectF( 150, 200, 60, 15 ) )
107+
self.mLabel2.setSceneRect(QRectF(150, 200, 60, 15))
98108

99-
qWarning( "feature number label font: %s exactMatch:%s" % ( self.mLabel2.font().toString(), self.mLabel2.font().exactMatch() ) )
109+
qWarning("feature number label font: %s exactMatch:%s" % (
110+
self.mLabel2.font().toString(), self.mLabel2.font().exactMatch()))
100111

101112
self.filename_test()
102113
self.autoscale_render_test()
@@ -105,25 +116,27 @@ def testCase(self):
105116
self.predefinedscales_render_test()
106117
self.hidden_render_test()
107118

108-
def filename_test( self ):
119+
shutil.rmtree(tmppath)
109120

110-
self.mAtlas.setFilenamePattern( "'output_' || $feature" )
121+
def filename_test(self):
122+
123+
self.mAtlas.setFilenamePattern("'output_' || $feature")
111124
self.mAtlas.beginRender()
112125
for i in range(0, self.mAtlas.numFeatures()):
113-
self.mAtlas.prepareForFeature( i )
114-
expected = "output_%d" % (i+1)
126+
self.mAtlas.prepareForFeature(i)
127+
expected = "output_%d" % (i + 1)
115128
assert self.mAtlas.currentFilename() == expected
116129
self.mAtlas.endRender()
117130

118-
def autoscale_render_test( self ):
119-
self.mAtlasMap.setAtlasDriven( True )
120-
self.mAtlasMap.setAtlasScalingMode( QgsComposerMap.Auto )
121-
self.mAtlasMap.setAtlasMargin( 0.10 )
131+
def autoscale_render_test(self):
132+
self.mAtlasMap.setAtlasDriven(True)
133+
self.mAtlasMap.setAtlasScalingMode(QgsComposerMap.Auto)
134+
self.mAtlasMap.setAtlasMargin(0.10)
122135

123136
self.mAtlas.beginRender()
124137

125138
for i in range(0, 2):
126-
self.mAtlas.prepareForFeature( i )
139+
self.mAtlas.prepareForFeature(i)
127140
self.mLabel1.adjustSizeToText()
128141

129142
checker = QgsCompositionChecker('atlas_autoscale%d' % (i + 1), self.mComposition)
@@ -132,19 +145,19 @@ def autoscale_render_test( self ):
132145
assert myTestResult
133146
self.mAtlas.endRender()
134147

135-
self.mAtlasMap.setAtlasDriven( False )
136-
self.mAtlasMap.setAtlasScalingMode( QgsComposerMap.Fixed )
137-
self.mAtlasMap.setAtlasMargin( 0 )
148+
self.mAtlasMap.setAtlasDriven(False)
149+
self.mAtlasMap.setAtlasScalingMode(QgsComposerMap.Fixed)
150+
self.mAtlasMap.setAtlasMargin(0)
138151

139-
def autoscale_render_test_old_api( self ):
140-
self.mAtlas.setComposerMap( self.mAtlasMap )
141-
self.mAtlas.setFixedScale( False )
142-
self.mAtlas.setMargin( 0.10 )
152+
def autoscale_render_test_old_api(self):
153+
self.mAtlas.setComposerMap(self.mAtlasMap)
154+
self.mAtlas.setFixedScale(False)
155+
self.mAtlas.setMargin(0.10)
143156

144157
self.mAtlas.beginRender()
145158

146159
for i in range(0, 2):
147-
self.mAtlas.prepareForFeature( i )
160+
self.mAtlas.prepareForFeature(i)
148161
self.mLabel1.adjustSizeToText()
149162

150163
checker = QgsCompositionChecker('atlas_autoscale_old_api%d' % (i + 1), self.mComposition)
@@ -153,20 +166,20 @@ def autoscale_render_test_old_api( self ):
153166
assert myTestResult
154167
self.mAtlas.endRender()
155168

156-
self.mAtlas.setFixedScale( True )
157-
self.mAtlas.setMargin( 0 )
158-
self.mAtlas.setComposerMap( None )
159-
self.mAtlasMap.setAtlasDriven( False )
169+
self.mAtlas.setFixedScale(True)
170+
self.mAtlas.setMargin(0)
171+
self.mAtlas.setComposerMap(None)
172+
self.mAtlasMap.setAtlasDriven(False)
160173

161-
def fixedscale_render_test( self ):
162-
self.mAtlasMap.setNewExtent( QgsRectangle( 209838.166, 6528781.020, 610491.166, 6920530.620 ) )
163-
self.mAtlasMap.setAtlasDriven( True )
164-
self.mAtlasMap.setAtlasScalingMode( QgsComposerMap.Fixed )
174+
def fixedscale_render_test(self):
175+
self.mAtlasMap.setNewExtent(QgsRectangle(209838.166, 6528781.020, 610491.166, 6920530.620))
176+
self.mAtlasMap.setAtlasDriven(True)
177+
self.mAtlasMap.setAtlasScalingMode(QgsComposerMap.Fixed)
165178

166179
self.mAtlas.beginRender()
167180

168181
for i in range(0, 2):
169-
self.mAtlas.prepareForFeature( i )
182+
self.mAtlas.prepareForFeature(i)
170183
self.mLabel1.adjustSizeToText()
171184

172185
checker = QgsCompositionChecker('atlas_fixedscale%d' % (i + 1), self.mComposition)
@@ -175,20 +188,20 @@ def fixedscale_render_test( self ):
175188
assert myTestResult
176189
self.mAtlas.endRender()
177190

178-
def predefinedscales_render_test( self ):
179-
self.mAtlasMap.setNewExtent( QgsRectangle( 209838.166, 6528781.020, 610491.166, 6920530.620 ) )
180-
self.mAtlasMap.setAtlasDriven( True )
181-
self.mAtlasMap.setAtlasScalingMode( QgsComposerMap.Predefined )
191+
def predefinedscales_render_test(self):
192+
self.mAtlasMap.setNewExtent(QgsRectangle(209838.166, 6528781.020, 610491.166, 6920530.620))
193+
self.mAtlasMap.setAtlasDriven(True)
194+
self.mAtlasMap.setAtlasScalingMode(QgsComposerMap.Predefined)
182195

183196
scales = [1800000, 5000000]
184-
self.mAtlas.setPredefinedScales( scales )
197+
self.mAtlas.setPredefinedScales(scales)
185198
for i, s in enumerate(self.mAtlas.predefinedScales()):
186199
assert s == scales[i]
187200

188201
self.mAtlas.beginRender()
189202

190203
for i in range(0, 2):
191-
self.mAtlas.prepareForFeature( i )
204+
self.mAtlas.prepareForFeature(i)
192205
self.mLabel1.adjustSizeToText()
193206

194207
checker = QgsCompositionChecker('atlas_predefinedscales%d' % (i + 1), self.mComposition)
@@ -197,15 +210,15 @@ def predefinedscales_render_test( self ):
197210
assert myTestResult
198211
self.mAtlas.endRender()
199212

200-
def hidden_render_test( self ):
201-
self.mAtlasMap.setNewExtent( QgsRectangle( 209838.166, 6528781.020, 610491.166, 6920530.620 ) )
202-
self.mAtlasMap.setAtlasScalingMode( QgsComposerMap.Fixed )
203-
self.mAtlas.setHideCoverage( True )
213+
def hidden_render_test(self):
214+
self.mAtlasMap.setNewExtent(QgsRectangle(209838.166, 6528781.020, 610491.166, 6920530.620))
215+
self.mAtlasMap.setAtlasScalingMode(QgsComposerMap.Fixed)
216+
self.mAtlas.setHideCoverage(True)
204217

205218
self.mAtlas.beginRender()
206219

207220
for i in range(0, 2):
208-
self.mAtlas.prepareForFeature( i )
221+
self.mAtlas.prepareForFeature(i)
209222
self.mLabel1.adjustSizeToText()
210223

211224
checker = QgsCompositionChecker('atlas_hiding%d' % (i + 1), self.mComposition)
@@ -214,19 +227,19 @@ def hidden_render_test( self ):
214227
assert myTestResult
215228
self.mAtlas.endRender()
216229

217-
def sorting_render_test( self ):
218-
self.mAtlasMap.setNewExtent( QgsRectangle( 209838.166, 6528781.020, 610491.166, 6920530.620 ) )
219-
self.mAtlasMap.setAtlasScalingMode( QgsComposerMap.Fixed )
220-
self.mAtlas.setHideCoverage( False )
230+
def sorting_render_test(self):
231+
self.mAtlasMap.setNewExtent(QgsRectangle(209838.166, 6528781.020, 610491.166, 6920530.620))
232+
self.mAtlasMap.setAtlasScalingMode(QgsComposerMap.Fixed)
233+
self.mAtlas.setHideCoverage(False)
221234

222-
self.mAtlas.setSortFeatures( True )
223-
self.mAtlas.setSortKeyAttributeIndex( 4 ) # departement name
224-
self.mAtlas.setSortAscending( False )
235+
self.mAtlas.setSortFeatures(True)
236+
self.mAtlas.setSortKeyAttributeIndex(4) # departement name
237+
self.mAtlas.setSortAscending(False)
225238

226239
self.mAtlas.beginRender()
227240

228241
for i in range(0, 2):
229-
self.mAtlas.prepareForFeature( i )
242+
self.mAtlas.prepareForFeature(i)
230243
self.mLabel1.adjustSizeToText()
231244

232245
checker = QgsCompositionChecker('atlas_sorting%d' % (i + 1), self.mComposition)
@@ -235,20 +248,20 @@ def sorting_render_test( self ):
235248
assert myTestResult
236249
self.mAtlas.endRender()
237250

238-
def filtering_render_test( self ):
239-
self.mAtlasMap.setNewExtent( QgsRectangle( 209838.166, 6528781.020, 610491.166, 6920530.620 ) )
240-
self.mAtlasMap.setAtlasScalingMode( QgsComposerMap.Fixed )
241-
self.mAtlas.setHideCoverage( False )
251+
def filtering_render_test(self):
252+
self.mAtlasMap.setNewExtent(QgsRectangle(209838.166, 6528781.020, 610491.166, 6920530.620))
253+
self.mAtlasMap.setAtlasScalingMode(QgsComposerMap.Fixed)
254+
self.mAtlas.setHideCoverage(False)
242255

243-
self.mAtlas.setSortFeatures( False )
256+
self.mAtlas.setSortFeatures(False)
244257

245-
self.mAtlas.setFilterFeatures( True )
246-
self.mAtlas.setFeatureFilter( "substr(NAME_1,1,1)='P'" ) # select only 'Pays de la loire'
258+
self.mAtlas.setFilterFeatures(True)
259+
self.mAtlas.setFeatureFilter("substr(NAME_1,1,1)='P'") # select only 'Pays de la loire'
247260

248261
self.mAtlas.beginRender()
249262

250263
for i in range(0, 1):
251-
self.mAtlas.prepareForFeature( i )
264+
self.mAtlas.prepareForFeature(i)
252265
self.mLabel1.adjustSizeToText()
253266

254267
checker = QgsCompositionChecker('atlas_filtering%d' % (i + 1), self.mComposition)
@@ -257,5 +270,6 @@ def filtering_render_test( self ):
257270
assert myTestResult
258271
self.mAtlas.endRender()
259272

273+
260274
if __name__ == '__main__':
261275
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.