@@ -7457,6 +7457,14 @@ void TestQgsProcessing::convertCompatible()
7457
7457
// layer should be returned unchanged - underlying source is compatible
7458
7458
QCOMPARE ( out, layer->source () );
7459
7459
7460
+ // path with layer suffix
7461
+ QString vectorWithLayer = testDataDir + " points.shp|layername=points" ;
7462
+ QgsVectorLayer *layer2 = new QgsVectorLayer ( vectorWithLayer, " vl" );
7463
+ p.addMapLayer ( layer2 );
7464
+ out = QgsProcessingUtils::convertToCompatibleFormat ( layer2, false , QStringLiteral ( " test" ), QStringList () << " shp" , QString ( " shp" ), context, &feedback );
7465
+ // layer should be returned unchanged - underlying source is compatible
7466
+ QCOMPARE ( out, vector );
7467
+
7460
7468
// don't include shp as compatible type
7461
7469
out = QgsProcessingUtils::convertToCompatibleFormat ( layer, false , QStringLiteral ( " test" ), QStringList () << " tab" , QString ( " tab" ), context, &feedback );
7462
7470
QVERIFY ( out != layer->source () );
@@ -7534,20 +7542,21 @@ void TestQgsProcessing::convertCompatible()
7534
7542
std::unique_ptr< QgsVectorLayer > gpkgLayer = qgis::make_unique< QgsVectorLayer >( gpkgPath, " vl" );
7535
7543
QVERIFY ( gpkgLayer->isValid () );
7536
7544
out = QgsProcessingUtils::convertToCompatibleFormat ( gpkgLayer.get (), false , QStringLiteral ( " test" ), QStringList () << " gpkg" << " shp" , QString ( " shp" ), context, &feedback );
7537
- // layer should be returned unchanged - underlying source is compatible
7538
- QCOMPARE ( out, gpkgLayer-> source ( ) );
7545
+ // layer must be translated -- we do not know if external tool can handle picking the correct layer automatically
7546
+ QCOMPARE ( out, testDataDir + QStringLiteral ( " points_gpkg.gpkg " ) );
7539
7547
gpkgPath = testDataDir + " points_gpkg.gpkg|layername=points_small" ;
7540
7548
gpkgLayer = qgis::make_unique< QgsVectorLayer >( gpkgPath, " vl" );
7541
7549
QVERIFY ( gpkgLayer->isValid () );
7542
7550
out = QgsProcessingUtils::convertToCompatibleFormat ( gpkgLayer.get (), false , QStringLiteral ( " test" ), QStringList () << " gpkg" << " shp" , QString ( " shp" ), context, &feedback );
7543
- QCOMPARE ( out, gpkgLayer->source () );
7551
+ QVERIFY ( out.endsWith ( " .shp" ) );
7552
+ QVERIFY ( out.startsWith ( QgsProcessingUtils::tempFolder () ) );
7544
7553
7545
7554
// also test evaluating parameter to compatible format
7546
7555
std::unique_ptr< QgsProcessingParameterDefinition > def ( new QgsProcessingParameterFeatureSource ( QStringLiteral ( " source" ) ) );
7547
7556
QVariantMap params;
7548
7557
params.insert ( QStringLiteral ( " source" ), QgsProcessingFeatureSourceDefinition ( layer->id (), false ) );
7549
7558
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
7550
- QCOMPARE ( out, layer-> source () );
7559
+ QCOMPARE ( out, testDataDir + " points.shp " );
7551
7560
7552
7561
// incompatible format, will be converted
7553
7562
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " tab" , QString ( " tab" ), &feedback );
@@ -7558,7 +7567,7 @@ void TestQgsProcessing::convertCompatible()
7558
7567
// layer as input
7559
7568
params.insert ( QStringLiteral ( " source" ), QVariant::fromValue ( layer ) );
7560
7569
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
7561
- QCOMPARE ( out, layer-> source () );
7570
+ QCOMPARE ( out, testDataDir + " points.shp " );
7562
7571
7563
7572
// incompatible format, will be converted
7564
7573
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " tab" , QString ( " tab" ), &feedback );
@@ -7577,12 +7586,12 @@ void TestQgsProcessing::convertCompatible()
7577
7586
def.reset ( new QgsProcessingParameterFeatureSource ( QStringLiteral ( " source" ), QString (), QList<int >(), QVariant::fromValue ( layer ) ) );
7578
7587
params.remove ( QStringLiteral ( " source" ) );
7579
7588
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
7580
- QCOMPARE ( out, layer-> source () );
7589
+ QCOMPARE ( out, testDataDir + " points.shp " );
7581
7590
7582
7591
// output layer as input - e.g. from a previous model child
7583
7592
params.insert ( QStringLiteral ( " source" ), QgsProcessingOutputLayerDefinition ( layer->id () ) );
7584
7593
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath ( def.get (), params, context, QStringList () << " shp" , QString ( " shp" ), &feedback );
7585
- QCOMPARE ( out, layer-> source () );
7594
+ QCOMPARE ( out, testDataDir + " points.shp " );
7586
7595
}
7587
7596
7588
7597
void TestQgsProcessing::create ()
0 commit comments