@@ -186,6 +186,61 @@ def testFeatureSourceInput(self):
186186
187187 QgsProject .instance ().removeMapLayer (layer )
188188
189+ def testOutputToGeopackage (self ):
190+ # create a memory layer and add to project and context
191+ layer = QgsVectorLayer ("Point?crs=epsg:3857&field=fldtxt:string&field=fldint:integer" ,
192+ "testmem" , "memory" )
193+ self .assertTrue (layer .isValid ())
194+ pr = layer .dataProvider ()
195+ f = QgsFeature ()
196+ f .setAttributes (["test" , 123 ])
197+ f .setGeometry (QgsGeometry .fromPointXY (QgsPointXY (100 , 200 )))
198+ f2 = QgsFeature ()
199+ f2 .setAttributes (["test2" , 457 ])
200+ f2 .setGeometry (QgsGeometry .fromPointXY (QgsPointXY (110 , 200 )))
201+ self .assertTrue (pr .addFeatures ([f , f2 ]))
202+ self .assertEqual (layer .featureCount (), 2 )
203+ QgsProject .instance ().addMapLayer (layer )
204+ context = QgsProcessingContext ()
205+ context .setProject (QgsProject .instance ())
206+
207+ alg = QgsApplication .processingRegistry ().createAlgorithmById ('grass7:v.buffer' )
208+ self .assertIsNotNone (alg )
209+
210+ temp_file = os .path .join (self .temp_dir , 'grass_output.gpkg' )
211+ parameters = {'input' : 'testmem' ,
212+ 'cats' : '' ,
213+ 'where' : '' ,
214+ 'type' : [0 , 1 , 4 ],
215+ 'distance' : 1 ,
216+ 'minordistance' : None ,
217+ 'angle' : 0 ,
218+ 'column' : None ,
219+ 'scale' : 1 ,
220+ 'tolerance' : 0.01 ,
221+ '-s' : False ,
222+ '-c' : False ,
223+ '-t' : False ,
224+ 'output' : temp_file ,
225+ 'GRASS_REGION_PARAMETER' : None ,
226+ 'GRASS_SNAP_TOLERANCE_PARAMETER' : - 1 ,
227+ 'GRASS_MIN_AREA_PARAMETER' : 0.0001 ,
228+ 'GRASS_OUTPUT_TYPE_PARAMETER' : 0 ,
229+ 'GRASS_VECTOR_DSCO' : '' ,
230+ 'GRASS_VECTOR_LCO' : '' }
231+ feedback = QgsProcessingFeedback ()
232+
233+ results , ok = alg .run (parameters , context , feedback )
234+ self .assertTrue (ok )
235+ self .assertTrue (os .path .exists (temp_file ))
236+
237+ # make sure that layer has correct features
238+ res = QgsVectorLayer (temp_file , 'res' )
239+ self .assertTrue (res .isValid ())
240+ self .assertEqual (res .featureCount (), 2 )
241+
242+ QgsProject .instance ().removeMapLayer (layer )
243+
189244
190245if __name__ == '__main__' :
191246 nose2 .main ()
0 commit comments