From 7be96739c574ee21a071d4872396485de6814974 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Sat, 13 Dec 2025 19:26:34 +0100 Subject: [PATCH] Enables loading preferences in regression tests Allows loading of global and test-specific preferences during regression tests. --- .../Tools/RiaRegressionTestRunner.cpp | 54 +++++++++++++++++-- .../Tools/RiaRegressionTestRunner.h | 3 +- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.cpp b/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.cpp index 7c0a8363bf..b6342dcea9 100644 --- a/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.cpp +++ b/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.cpp @@ -24,6 +24,7 @@ #include "RiaImageFileCompare.h" #include "RiaLogging.h" #include "RiaPlotWindowRedrawScheduler.h" +#include "RiaPreferences.h" #include "RiaProjectModifier.h" #include "RiaRegressionTest.h" #include "RiaTextFileCompare.h" @@ -53,16 +54,11 @@ #include "cafPdmUiTreeView.h" #include "cafUtils.h" -#include -#include #include #include #include -#include #include #include -#include -#include namespace RegTestNames { @@ -202,10 +198,28 @@ void RiaRegressionTestRunner::runRegressionTest() RiaApplication* app = RiaApplication::instance(); + // Load global preferences from main test folder if available + QString globalPrefsFile = testDir.filePath( "preferences.xml" ); + if ( QFile::exists( globalPrefsFile ) ) + { + RiaPreferences::current()->importPreferenceValuesFromFile( globalPrefsFile ); + RiaLogging::info( "Loaded global preferences from: " + globalPrefsFile ); + } + for ( const QFileInfo& folderFileInfo : folderList ) { QDir testCaseFolder( folderFileInfo.filePath() ); + // Save current preferences to string before loading test-specific preferences + QString savedPreferences; + QString testPrefsFile = findPreferencesConfigFile( testCaseFolder, testDir ); + if ( !testPrefsFile.isEmpty() ) + { + savedPreferences = RiaPreferences::current()->writeObjectToXmlString(); + RiaPreferences::current()->importPreferenceValuesFromFile( testPrefsFile ); + RiaLogging::info( "Loaded test-specific preferences from: " + testPrefsFile ); + } + bool anyCommandFilesExecuted = findAndExecuteCommandFiles( testCaseFolder, regressionTestConfig, htmlReportFileName ); if ( !anyCommandFilesExecuted ) @@ -302,6 +316,13 @@ void RiaRegressionTestRunner::runRegressionTest() } } + // Restore preferences if test-specific preferences were loaded + if ( !savedPreferences.isEmpty() ) + { + RiaPreferences::current()->readObjectFromXmlString( savedPreferences, caf::PdmDefaultObjectFactory::instance() ); + RiaLogging::info( "Restored preferences after test" ); + } + logInfoTextWithTimeInSeconds( timeStamp, "Completed test :" + testCaseFolder.absolutePath() ); } @@ -806,3 +827,26 @@ void RiaRegressionTestRunner::updateRegressionTest( const QString& testRootPath } } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RiaRegressionTestRunner::findPreferencesConfigFile( const QDir& testCaseFolder, const QDir& mainFolder ) +{ + // Check test case folder first (for test-specific overrides) + QString localConfig = testCaseFolder.filePath( "preferences.xml" ); + if ( QFile::exists( localConfig ) ) + { + return localConfig; + } + + // Check main regression test folder (for global defaults) + QString globalConfig = mainFolder.filePath( "preferences.xml" ); + if ( QFile::exists( globalConfig ) ) + { + return globalConfig; + } + + // No config file found + return QString(); +} diff --git a/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.h b/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.h index 67134939e0..a3632edd7c 100644 --- a/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.h +++ b/ApplicationLibCode/Application/Tools/RiaRegressionTestRunner.h @@ -68,7 +68,8 @@ private: static QString diff2htmlHeaderText( const QString& testRootPath ); QFileInfoList subDirectoriesForTestExecution( const QDir& directory ); - static void selectObjectsInProject(); + static void selectObjectsInProject(); + static QString findPreferencesConfigFile( const QDir& testCaseFolder, const QDir& mainFolder ); private: QString m_rootPath;