@@ -6822,6 +6822,14 @@ void TestQgsProcessing::convertCompatible()
6822
6822
// layer should be returned unchanged - underlying source is compatible
6823
6823
QCOMPARE ( out, layer->source () );
6824
6824
6825
+ // path with layer suffix
6826
+ QString vectorWithLayer = testDataDir + " points.shp|layername=points" ;
6827
+ QgsVectorLayer *layer2 = new QgsVectorLayer ( vectorWithLayer, " vl" );
6828
+ p.addMapLayer ( layer2 );
6829
+ out = QgsProcessingUtils::convertToCompatibleFormat ( layer2, false , QStringLiteral ( " test" ), QStringList () << " shp" , QString ( " shp" ), context, &feedback );
6830
+ // layer should be returned unchanged - underlying source is compatible
6831
+ QCOMPARE ( out, vector );
6832
+
6825
6833
// don't include shp as compatible type
6826
6834
out = QgsProcessingUtils::convertToCompatibleFormat ( layer, false , QStringLiteral ( " test" ), QStringList () << " tab" , QString ( " tab" ), context, &feedback );
6827
6835
QVERIFY ( out != layer->source () );
@@ -6899,20 +6907,21 @@ void TestQgsProcessing::convertCompatible()
6899
6907
std::unique_ptr< QgsVectorLayer > gpkgLayer = qgis::make_unique< QgsVectorLayer >( gpkgPath, " vl" );
6900
6908
QVERIFY ( gpkgLayer->isValid () );
6901
6909
out = QgsProcessingUtils::convertToCompatibleFormat ( gpkgLayer.get (), false , QStringLiteral ( " test" ), QStringList () << " gpkg" << " shp" , QString ( " shp" ), context, &feedback );
6902
- // layer should be returned unchanged - underlying source is compatible
6903
- QCOMPARE ( out, gpkgLayer-> source ( ) );
6910
+ // layer must be translated -- we do not know if external tool can handle picking the correct layer automatically
6911
+ QCOMPARE ( out, testDataDir + QStringLiteral ( " points_gpkg.gpkg " ) );
6904
6912
gpkgPath = testDataDir + " points_gpkg.gpkg|layername=points_small" ;
6905
6913
gpkgLayer = qgis::make_unique< QgsVectorLayer >( gpkgPath, " vl" );
6906
6914
QVERIFY ( gpkgLayer->isValid () );
6907
6915
out = QgsProcessingUtils::convertToCompatibleFormat ( gpkgLayer.get (), false , QStringLiteral ( " test" ), QStringList () << " gpkg" << " shp" , QString ( " shp" ), context, &feedback );
6908
- QCOMPARE ( out, gpkgLayer->source () );
6916
+ QVERIFY ( out.endsWith ( " .shp" ) );
6917
+ QVERIFY ( out.startsWith ( QgsProcessingUtils::tempFolder () ) );
6909
6918
6910
6919
// also test evaluating parameter to compatible format
6911
6920
std::unique_ptr< QgsProcessingParameterDefinition > def ( new QgsProcessingParameterFeatureSource ( QStringLiteral ( " source" ) ) );
6912
6921
QVariantMap params;
6913
6922
params.insert ( QStringLiteral ( " source" ), QgsProcessingFeatureSourceDefinition ( layer->id (), false ) );
6914
6923
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
6915
- QCOMPARE ( out, layer-> source () );
6924
+ QCOMPARE ( out, testDataDir + " points.shp " );
6916
6925
6917
6926
// incompatible format, will be converted
6918
6927
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " tab" , QString ( " tab" ), &feedback );
@@ -6923,7 +6932,7 @@ void TestQgsProcessing::convertCompatible()
6923
6932
// layer as input
6924
6933
params.insert ( QStringLiteral ( " source" ), QVariant::fromValue ( layer ) );
6925
6934
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
6926
- QCOMPARE ( out, layer-> source () );
6935
+ QCOMPARE ( out, testDataDir + " points.shp " );
6927
6936
6928
6937
// incompatible format, will be converted
6929
6938
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " tab" , QString ( " tab" ), &feedback );
@@ -6942,12 +6951,12 @@ void TestQgsProcessing::convertCompatible()
6942
6951
def.reset ( new QgsProcessingParameterFeatureSource ( QStringLiteral ( " source" ), QString (), QList<int >(), QVariant::fromValue ( layer ) ) );
6943
6952
params.remove ( QStringLiteral ( " source" ) );
6944
6953
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
6945
- QCOMPARE ( out, layer-> source () );
6954
+ QCOMPARE ( out, testDataDir + " points.shp " );
6946
6955
6947
6956
// output layer as input - e.g. from a previous model child
6948
6957
params.insert ( QStringLiteral ( " source" ), QgsProcessingOutputLayerDefinition ( layer->id () ) );
6949
6958
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
6950
- QCOMPARE ( out, layer-> source () );
6959
+ QCOMPARE ( out, testDataDir + " points.shp " );
6951
6960
}
6952
6961
6953
6962
void TestQgsProcessing::create ()
0 commit comments