@@ -7857,6 +7857,14 @@ void TestQgsProcessing::convertCompatible()
7857
7857
// layer should be returned unchanged - underlying source is compatible
7858
7858
QCOMPARE ( out, layer->source () );
7859
7859
7860
+ // path with layer suffix
7861
+ QString vectorWithLayer = testDataDir + " points.shp|layername=points" ;
7862
+ QgsVectorLayer *layer2 = new QgsVectorLayer ( vectorWithLayer, " vl" );
7863
+ p.addMapLayer ( layer2 );
7864
+ out = QgsProcessingUtils::convertToCompatibleFormat ( layer2, false , QStringLiteral ( " test" ), QStringList () << " shp" , QString ( " shp" ), context, &feedback );
7865
+ // layer should be returned unchanged - underlying source is compatible
7866
+ QCOMPARE ( out, vector );
7867
+
7860
7868
// don't include shp as compatible type
7861
7869
out = QgsProcessingUtils::convertToCompatibleFormat ( layer, false , QStringLiteral ( " test" ), QStringList () << " tab" , QString ( " tab" ), context, &feedback );
7862
7870
QVERIFY ( out != layer->source () );
@@ -7934,20 +7942,21 @@ void TestQgsProcessing::convertCompatible()
7934
7942
std::unique_ptr< QgsVectorLayer > gpkgLayer = qgis::make_unique< QgsVectorLayer >( gpkgPath, " vl" );
7935
7943
QVERIFY ( gpkgLayer->isValid () );
7936
7944
out = QgsProcessingUtils::convertToCompatibleFormat ( gpkgLayer.get (), false , QStringLiteral ( " test" ), QStringList () << " gpkg" << " shp" , QString ( " shp" ), context, &feedback );
7937
- // layer should be returned unchanged - underlying source is compatible
7938
- QCOMPARE ( out, gpkgLayer-> source ( ) );
7945
+ // layer must be translated -- we do not know if external tool can handle picking the correct layer automatically
7946
+ QCOMPARE ( out, testDataDir + QStringLiteral ( " points_gpkg.gpkg " ) );
7939
7947
gpkgPath = testDataDir + " points_gpkg.gpkg|layername=points_small" ;
7940
7948
gpkgLayer = qgis::make_unique< QgsVectorLayer >( gpkgPath, " vl" );
7941
7949
QVERIFY ( gpkgLayer->isValid () );
7942
7950
out = QgsProcessingUtils::convertToCompatibleFormat ( gpkgLayer.get (), false , QStringLiteral ( " test" ), QStringList () << " gpkg" << " shp" , QString ( " shp" ), context, &feedback );
7943
- QCOMPARE ( out, gpkgLayer->source () );
7951
+ QVERIFY ( out.endsWith ( " .shp" ) );
7952
+ QVERIFY ( out.startsWith ( QgsProcessingUtils::tempFolder () ) );
7944
7953
7945
7954
// also test evaluating parameter to compatible format
7946
7955
std::unique_ptr< QgsProcessingParameterDefinition > def ( new QgsProcessingParameterFeatureSource ( QStringLiteral ( " source" ) ) );
7947
7956
QVariantMap params;
7948
7957
params.insert ( QStringLiteral ( " source" ), QgsProcessingFeatureSourceDefinition ( layer->id (), false ) );
7949
7958
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
7950
- QCOMPARE ( out, layer-> source () );
7959
+ QCOMPARE ( out, testDataDir + " points.shp " );
7951
7960
7952
7961
// incompatible format, will be converted
7953
7962
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " tab" , QString ( " tab" ), &feedback );
@@ -7958,7 +7967,7 @@ void TestQgsProcessing::convertCompatible()
7958
7967
// layer as input
7959
7968
params.insert ( QStringLiteral ( " source" ), QVariant::fromValue ( layer ) );
7960
7969
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
7961
- QCOMPARE ( out, layer-> source () );
7970
+ QCOMPARE ( out, testDataDir + " points.shp " );
7962
7971
7963
7972
// incompatible format, will be converted
7964
7973
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " tab" , QString ( " tab" ), &feedback );
@@ -7977,12 +7986,12 @@ void TestQgsProcessing::convertCompatible()
7977
7986
def.reset ( new QgsProcessingParameterFeatureSource ( QStringLiteral ( " source" ), QString (), QList<int >(), QVariant::fromValue ( layer ) ) );
7978
7987
params.remove ( QStringLiteral ( " source" ) );
7979
7988
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
7980
- QCOMPARE ( out, layer-> source () );
7989
+ QCOMPARE ( out, testDataDir + " points.shp " );
7981
7990
7982
7991
// output layer as input - e.g. from a previous model child
7983
7992
params.insert ( QStringLiteral ( " source" ), QgsProcessingOutputLayerDefinition ( layer->id () ) );
7984
7993
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
7985
- QCOMPARE ( out, layer-> source () );
7994
+ QCOMPARE ( out, testDataDir + " points.shp " );
7986
7995
}
7987
7996
7988
7997
void TestQgsProcessing::create ()
0 commit comments