From 2e85f6fa29da4e7f94a95656b470fa28b760dcab Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Tue, 28 May 2024 23:20:58 +0200 Subject: [PATCH 1/3] Use a centralized directory for files created by ctest Defines a QGIS_TEST_TMP_DIR variable in top-level CMakeLists.txt and then defines QGIS_CUSTOM_CONFIG_PATH and TMPDIR to be under that directory for individual tests. Closes GH-50587 Closes GH-48884 --- CMakeLists.txt | 5 +++++ cmake/UsePythonTest.cmake | 5 ++++- tests/src/CMakeLists.txt | 6 +++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c0c02a97f25..adce77c2611 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,11 @@ endif() # don't relink it only the shared object changes set(CMAKE_LINK_DEPENDS_NO_SHARED ON) +# This needs to be set before any add_directory in order to be visible +# by the subdirectories +set(QGIS_TEST_TMP_DIR "${CMAKE_BINARY_DIR}/tmp") +message (STATUS "Ctest Temp Directory set to: ${QGIS_TEST_TMP_DIR}") + ############################################################# # Project and version set(CPACK_PACKAGE_VERSION_MAJOR "3") diff --git a/cmake/UsePythonTest.cmake b/cmake/UsePythonTest.cmake index 874d22c3a64..18593162ca9 100644 --- a/cmake/UsePythonTest.cmake +++ b/cmake/UsePythonTest.cmake @@ -77,6 +77,9 @@ macro(ADD_PYTHON_TEST TESTNAME FILENAME) set_tests_properties(${TESTNAME} PROPERTIES TIMEOUT ${TEST_TIMEOUT}) endif() - set_tests_properties(${TESTNAME} PROPERTIES FIXTURES_REQUIRED SOURCETREE) + set_tests_properties(${TESTNAME} PROPERTIES + FIXTURES_REQUIRED SOURCETREE + ENVIRONMENT "TMPDIR=${QGIS_TEST_TMP_DIR};QGIS_CUSTOM_CONFIG_PATH=${QGIS_TEST_TMP_DIR}/config" + ) endmacro(ADD_PYTHON_TEST) diff --git a/tests/src/CMakeLists.txt b/tests/src/CMakeLists.txt index a653575ad4d..92f88aec1eb 100644 --- a/tests/src/CMakeLists.txt +++ b/tests/src/CMakeLists.txt @@ -26,7 +26,11 @@ if (ENABLE_TESTS) set_tests_properties(${TESTNAME} PROPERTIES LABELS ${ARG_QGIS_TEST_LABELS}) endif() - set_tests_properties(${TESTNAME} PROPERTIES FIXTURES_REQUIRED SOURCETREE) + set_tests_properties(${TESTNAME} PROPERTIES + FIXTURES_REQUIRED SOURCETREE + ENVIRONMENT "TMPDIR=${QGIS_TEST_TMP_DIR};QGIS_CUSTOM_CONFIG_PATH=${QGIS_TEST_TMP_DIR}/config" + ) + target_compile_definitions(${TESTNAME} PRIVATE "CMAKE_SOURCE_DIR=\"${CMAKE_SOURCE_DIR}\"") endmacro() From da11a8aab11ed41205ada3ed6d0bf8c0f55d81a0 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Wed, 29 May 2024 14:13:12 +0200 Subject: [PATCH 2/3] Drop hard-coded /tmp/ dir, use system temporary dir instead --- tests/src/3d/testqgs3drendering.cpp | 2 +- tests/src/core/testqgslabelingengine.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/src/3d/testqgs3drendering.cpp b/tests/src/3d/testqgs3drendering.cpp index 76caea4fbe3..867bf6c3610 100644 --- a/tests/src/3d/testqgs3drendering.cpp +++ b/tests/src/3d/testqgs3drendering.cpp @@ -1752,7 +1752,7 @@ void TestQgs3DRendering::do3DSceneExport( int zoomLevelsCount, int expectedObjec exporter.setScale( 1.0 ); QVERIFY( exporter.parseVectorLayerEntity( scene->layerEntity( layerPoly ), layerPoly ) ); - exporter.save( QString( "test3DSceneExporter-%1" ).arg( zoomLevelsCount ), "/tmp/" ); + exporter.save( QString( "test3DSceneExporter-%1" ).arg( zoomLevelsCount ), QDir::tempPath() ); int sum = 0; for ( auto o : exporter.mObjects ) diff --git a/tests/src/core/testqgslabelingengine.cpp b/tests/src/core/testqgslabelingengine.cpp index 807b5ce1691..b901bcb943c 100644 --- a/tests/src/core/testqgslabelingengine.cpp +++ b/tests/src/core/testqgslabelingengine.cpp @@ -4182,7 +4182,7 @@ void TestQgsLabelingEngine::labelingResultsWithCallouts() job.start(); job.waitForFinished(); - job.renderedImage().save( QStringLiteral( "/tmp/renderer.png" ) ); + job.renderedImage().save( QString( "%s/renderer.png" ).arg( QDir::tempPath() ) ); std::unique_ptr< QgsLabelingResults > results( job.takeLabelingResults() ); QVERIFY( results ); From 605cafc8248aba81999abe4ce59899513b8dd279 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Wed, 29 May 2024 16:57:48 +0200 Subject: [PATCH 3/3] Allow runnig test_core_project with custom TMPDIR Closes GH-57610 --- tests/src/core/testqgsproject.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/src/core/testqgsproject.cpp b/tests/src/core/testqgsproject.cpp index bda528eb36b..7437ced09d3 100644 --- a/tests/src/core/testqgsproject.cpp +++ b/tests/src/core/testqgsproject.cpp @@ -1083,6 +1083,7 @@ void TestQgsProject::testAsynchronousLayerLoading() int layersCount = layers.count(); project->addMapLayers( layers ); + project->writeEntry( QStringLiteral( "Paths" ), QStringLiteral( "Absolute" ), true ); QCOMPARE( project->mapLayers( true ).count(), layersCount - 2 ); QCOMPARE( project->mapLayers( false ).count(), layersCount );