Files
ResInsight/ApplicationLibCode/UnitTests/CMakeLists.txt
T
Magne Sjaastad 7fa9d0c5bf #14741 Add command-feature test infrastructure
Add the ResInsight-featuretests executable: a headless GUI test harness (RiaFeatureTestModelBuilder, RiaFeatureTestTreeView), a runner that triggers Ric*Feature commands through their QAction (RicFeatureExecutionRunner), a generic execution sweep over every registered feature (RicFeatureSweep-Test, RicFeatureExecutionSweep-Test, RicFeatureSubprocessSweep-Test, RicFeatureSweepDenylist), and supporting CMake wiring. Adds RiaRegressionTestRunner::setRunningRegressionTests() so tests can suppress modal dialogs, and shares RimMockSummaryCase as a common test model under TestModels.
2026-09-15 08:15:59 -04:00

335 lines
15 KiB
CMake

# ResInsight unit tests
if(MSVC)
# TARGET_RUNTIME_DLLS requires 3.21
cmake_minimum_required(VERSION 3.21)
endif(MSVC)
set(SOURCE_UNITTEST_FILES
${CMAKE_CURRENT_LIST_DIR}/cvfGeometryTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/Ert-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigModelPaddingSettings-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigPadModel-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigSimulationInputTool-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigBoundingBoxIjk-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigContourMapGrid-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifcCommandCore-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaGrpcFieldSerialization-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifEclipseInputFileTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifEclipseOutputFileTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifOpmFlowDeckFile-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifReaderEclipseOutput-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifReaderOpmCommon-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifReaderEclipseSummary-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigActiveCellInfo-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEclipseCaseDataTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEclipseCrossPlotDataExtractor-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEclipseResultTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEnsembleFractureStatisticsCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigMobilePoreVolumeResultCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigSgasResultCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigPorvSoilSgasResultCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigReservoir-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigResdataGridConverter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigGridExportAdapter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigNonUniformRefinement-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigNestedHybridGridReconstructor-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigStatisticsMath-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigStimPlanModelTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigWellPathIntersectionTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimHistogramDataSource-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimPlotAxisTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimWellLogExtractionCurveImpl-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RivAnnotationTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RivPipeGeometryGenerator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RivIjkIntersectionGeometryGenerator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RivSingleCellPartGenerator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RivTernaryScalarMapper-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/ScalarMapper-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/WellPathAsciiFileReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/opm-flowdiagnostics-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigTofAccumulatedPhaseFractionsCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/HDF5FileReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/HDF5FileWriter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigCellGeometryTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigHexIntersectionTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/ObservedDataParser-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RicExpressionParser-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiuPlotUpdater-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiuQwtLinearScaleEngine-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiuSummaryVectorDescriptionMap-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/FixedWidthDataParser-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigTimeCurveHistoryMerger-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/ListKeywordsForObjectsAndFields-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaProjectFileTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifElementPropertyTableReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimRelocatePath-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigTransmissibilityCondenser-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaEclipseUnitTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaTextFileCompare-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifCaseRealizationParametersReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigWellLogExtractor-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigWellPath-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigWellPathGeometryTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifEclipseSummaryAddress-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaTimeHistoryCurveTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/SolveSpaceSolver-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaPolyArcLineSampler-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifTextDataTableFormatter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaWeightedMean-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaMedianCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaWeightedGeometricMeanCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaWeightedHarmonicMeanCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaCellDividingTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaFilePathTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/Intersect-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifPerforationIntervalReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimWellPathCompletions-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimWellPathFracture-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimWellPathValve-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimWellPathGeometryDef-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimWellRftPlot-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimDataFilterCollection-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimFilterInViewCollection-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimSummaryCaseCollection-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimSummaryCaseMainCollection-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimSummaryTimeAxisProperties-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimDeltaSummaryEnsemble-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimSummaryEnsemble-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimEnsembleCurveFilter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifActiveCellsReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifCsvDataTableFormatter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaSummaryAddressAnalyzer-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaStdStringTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaStringPool-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaInterpolationTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifWellMeasurementReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaDateStringParser-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaQDateTimeTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigHexGradientTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifSurfaceImporter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifFormationNamesReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifRoffReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifRoffWriter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifRoffFileTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifElasticPropertiesReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigStatisticsTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifStimPlanXmlReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifThermalFractureReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigWellPathGeometryExporter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifStimPlanModelDeviationFrkExporter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifSummaryDataReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigSlice2D-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigConvexHull-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigSurfaceResampler-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigSurfaceStatisticsCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/StructGridInterface-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/opm-summary-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifEclipseTextFileReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaSummaryStringTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaVariableMapper-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifPressureDepthTextFileReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifRevealCsvSectionSummaryReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifRevealCsvSummaryReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifStimPlanCsvSummaryReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaEnsembleNameTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigDeclineCurveCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifReaderFmuRft-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifRftSegment-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimSummaryRegressionAnalysisCurve-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimWellLogCalculatedCurve-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigWellLogCurveData-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaNumericalTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/opm-import-well-data-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifInpExportTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifGridCalculationIO-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifSummaryCalculationIO-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimEmReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimFormationNames-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifPolygonReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifParquetReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifOsduWellPathReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigVfpTables-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaResultName-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigPolygonTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimPolygonInViewCollection-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimSurfaceInViewCollection-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaNameUniquenessTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifVtkSurfaceImporter-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifVtkReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifVtkImportUtil-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaKeyValueStore-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaEnsembleImportTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifSurfio-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifRmsWellPathReader-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaAngleUtils-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaZScaleTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RicTransmissibilityCalculator-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigCompletionDataGridCell-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/cafVecIjk-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaSummaryAddressCollectionTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/../TestModels/RimMockSummaryCase.h
${CMAKE_CURRENT_LIST_DIR}/RimMockSummaryCase-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimSummaryCalculation-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RifMultipleSummaryReaders-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RimSummaryCalculationCollection-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaConnectorTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigWellTargetMappingTools-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RicWellPathExportMswGeometryPath-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RicMswBranchBuilder-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigMswTableData-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RigAllGridCellsResultAccessor-Test.cpp
)
if(RESINSIGHT_ENABLE_GRPC)
list(APPEND SOURCE_UNITTEST_FILES
${CMAKE_CURRENT_LIST_DIR}/RiaGrpcInterface-Test.cpp
${CMAKE_CURRENT_LIST_DIR}/RiaGrpcWellPathService-Test.cpp
)
endif(RESINSIGHT_ENABLE_GRPC)
# Obsolete test
if(RESINSIGHT_USE_ODB_API_OBSOLETE)
list(APPEND SOURCE_UNITTEST_FILES
${CMAKE_CURRENT_LIST_DIR}/RifOdbReader-Test.cpp
)
endif(RESINSIGHT_USE_ODB_API_OBSOLETE)
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.15.2
)
set(BUILD_GMOCK
OFF
CACHE BOOL "" FORCE
)
set(BUILD_GTEST
ON
CACHE BOOL "" FORCE
)
set(INSTALL_GTEST
OFF
CACHE BOOL "" FORCE
)
FetchContent_MakeAvailable(googletest)
# ##############################################################################
# Copy required Dll/.so to output folder
# ##############################################################################
# create an empty library target that will be used to copy files to the build
# folder
add_library(ResInsightDummyTestTarget EXCLUDE_FROM_ALL empty.cpp)
set_property(
TARGET ResInsightDummyTestTarget PROPERTY FOLDER "FileCopyTargetsTest"
)
# Keep the test executable out of the shared build root. The POST_BUILD step
# below copies the Qt runtime DLLs next to the executable, and the build root
# has ResInsight.exe running out of it during Python code generation with those
# same DLLs loaded. Overwriting a mapped DLL is a sharing violation on Windows,
# and nothing orders the two build edges relative to each other.
set(RESINSIGHT_TESTS_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
# create a custom target that copies the files to the test output folder
list(
APPEND
copyCommands
COMMAND
${CMAKE_COMMAND}
-E
make_directory
${RESINSIGHT_TESTS_OUTPUT_DIRECTORY}
)
foreach(riFileName ${RI_FILENAMES})
list(
APPEND
copyCommands
COMMAND
${CMAKE_COMMAND}
-E
copy_if_different
${riFileName}
${RESINSIGHT_TESTS_OUTPUT_DIRECTORY}
)
endforeach()
add_custom_target(PreBuildFileCopyTest ${copyCommands})
set_property(TARGET PreBuildFileCopyTest PROPERTY FOLDER "FileCopyTargetsTest")
qt_add_executable(ResInsight-tests ${SOURCE_UNITTEST_FILES} main.cpp)
# Make ResInsight-tests depend on the prebuild target.
add_dependencies(ResInsight-tests PreBuildFileCopyTest)
set_target_properties(
ResInsight-tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY
${RESINSIGHT_TESTS_OUTPUT_DIRECTORY}
)
configure_file(
${CMAKE_CURRENT_LIST_DIR}/RiaTestDataDirectory.h.cmake
${CMAKE_BINARY_DIR}/Generated/RiaTestDataDirectory.h
)
target_include_directories(
ResInsight-tests
PUBLIC ${CMAKE_BINARY_DIR}/Generated
"$<TARGET_PROPERTY:ApplicationLibCode,PUBLIC_INCLUDE_DIRECTORIES>"
${RI_PRIVATE_INCLUDES}
${PROJECT_SOURCE_DIR}/Commands
${PROJECT_SOURCE_DIR}/Commands/CompletionExportCommands
${CMAKE_CURRENT_LIST_DIR}/../TestModels
)
target_compile_features(ResInsight-tests PRIVATE cxx_std_20)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
list(APPEND THIRD_PARTY_LIBRARIES rt atomic)
endif()
set(LINK_LIBRARIES
${THIRD_PARTY_LIBRARIES}
${OPENGL_LIBRARIES}
${QT_LIBRARIES}
${OPM_LIBRARIES}
${APP_FWK_LIBRARIES}
${VIZ_FWK_LIBRARIES}
ApplicationLibCode
Commands
RigGeoMechDataModel
RifGeoMechFileInterface
)
if(RESINSIGHT_ENABLE_GRPC)
list(APPEND LINK_LIBRARIES GrpcInterface)
endif()
if(RESINSIGHT_USE_ODB_API)
list(APPEND LINK_LIBRARIES RifOdbReader)
endif()
target_link_libraries(ResInsight-tests PUBLIC ${LINK_LIBRARIES} GTest::gtest)
if(MSVC)
add_custom_command(
TARGET ResInsight-tests
POST_BUILD
COMMAND
${CMAKE_COMMAND} -E copy_if_different
$<TARGET_RUNTIME_DLLS:ResInsight-tests>
$<TARGET_FILE_DIR:ResInsight-tests>
COMMAND_EXPAND_LISTS
)
set_target_properties(ResInsight-tests PROPERTIES COMPILE_FLAGS "/wd4190")
endif(MSVC)
add_test(NAME ResInsight-tests COMMAND ResInsight-tests)