Skip to content

Commit 5bc50ff

Browse files
committedJun 12, 2019
[processing] Fix iterating mode when output is a temporary layer
Credit to @volaya for this fix! Fixes #29340
1 parent 0224b8e commit 5bc50ff

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed
 

‎src/core/processing/qgsprocessingutils.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,12 @@ QVariant QgsProcessingUtils::generateIteratingDestination( const QVariant &input
686686
else
687687
{
688688
QString res = input.toString();
689-
if ( res.startsWith( QLatin1String( "memory:" ) ) )
689+
if ( res == QgsProcessing::TEMPORARY_OUTPUT )
690+
{
691+
// temporary outputs map to temporary outputs!
692+
return QgsProcessing::TEMPORARY_OUTPUT;
693+
}
694+
else if ( res.startsWith( QLatin1String( "memory:" ) ) )
690695
{
691696
return res + '_' + id.toString();
692697
}

‎tests/src/analysis/testqgsprocessing.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6535,6 +6535,8 @@ void TestQgsProcessing::generateIteratingDestination()
65356535
QCOMPARE( QgsProcessingUtils::generateIteratingDestination( "ape.shp", 1, context ).toString(), QStringLiteral( "ape_1.shp" ) );
65366536
QCOMPARE( QgsProcessingUtils::generateIteratingDestination( "ape.shp", 2, context ).toString(), QStringLiteral( "ape_2.shp" ) );
65376537
QCOMPARE( QgsProcessingUtils::generateIteratingDestination( "/home/bif.o/ape.shp", 2, context ).toString(), QStringLiteral( "/home/bif.o/ape_2.shp" ) );
6538+
QCOMPARE( QgsProcessingUtils::generateIteratingDestination( QgsProcessing::TEMPORARY_OUTPUT, 2, context ).toString(), QgsProcessing::TEMPORARY_OUTPUT );
6539+
QCOMPARE( QgsProcessingUtils::generateIteratingDestination( QgsProperty::fromValue( QgsProcessing::TEMPORARY_OUTPUT ), 2, context ).toString(), QgsProcessing::TEMPORARY_OUTPUT );
65386540

65396541
QgsProject p;
65406542
QgsProcessingOutputLayerDefinition def;
@@ -6552,6 +6554,15 @@ void TestQgsProcessing::generateIteratingDestination()
65526554
fromVar = qvariant_cast<QgsProcessingOutputLayerDefinition>( res );
65536555
QCOMPARE( fromVar.sink.staticValue().toString(), QStringLiteral( "ape_2.shp" ) );
65546556
QCOMPARE( fromVar.destinationProject, &p );
6557+
6558+
QgsProcessingOutputLayerDefinition def2;
6559+
def2.sink = QgsProperty::fromValue( QgsProcessing::TEMPORARY_OUTPUT );
6560+
def2.destinationProject = &p;
6561+
res = QgsProcessingUtils::generateIteratingDestination( def2, 2, context );
6562+
QVERIFY( res.canConvert<QgsProcessingOutputLayerDefinition>() );
6563+
fromVar = qvariant_cast<QgsProcessingOutputLayerDefinition>( res );
6564+
QCOMPARE( fromVar.sink.staticValue().toString(), QgsProcessing::TEMPORARY_OUTPUT );
6565+
QCOMPARE( fromVar.destinationProject, &p );
65556566
}
65566567

65576568
void TestQgsProcessing::asPythonCommand()

0 commit comments

Comments
 (0)
Please sign in to comment.