Fix build of dune-istl's tests Patch copied from upstream source repository: https://gitlab.dune-project.org/core/dune-istl/-/commit/9eee3462df5a64881c08574f9291e76db398de0a From 9eee3462df5a64881c08574f9291e76db398de0a Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Sat, 4 Apr 2020 15:27:09 +0200 Subject: [PATCH] make tests succeed when MPI is disabled When MPI is not available or explicitly disabled with the CMake build option -DCMAKE_IDSABLE_FIND_PACKAGE_MPI=TRUE, some tests were unable to build. The tests created from solverfactorytest.cc.in and part of scalarproductstest.cc use Dune::OwnerOverlapCopyCommunication which is defined behind `#if HAVE_MPI` and is thus not available in a non-MPI build. I've thus disabled those tests when MPI is unavailable. The matrixmarkettest did not work without MPI, as it contained some code using the wrong template parameters when HAVE_MPI was not set. Those template paramters have been fixed now. I've confirmed, that after my changes `make build_tests` succeeds to build all tests and that those tests run without failure. --- dune/istl/test/CMakeLists.txt | 3 ++- dune/istl/test/matrixmarkettest.cc | 2 +- dune/istl/test/scalarproductstest.cc | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dune/istl/test/CMakeLists.txt b/dune/istl/test/CMakeLists.txt index ffd87969..2c7b2387 100644 --- a/dune/istl/test/CMakeLists.txt +++ b/dune/istl/test/CMakeLists.txt @@ -77,7 +77,8 @@ set(DUNE_TEST_FACTORY_BLOCK_SIZES function(add_factory_test BLOCK) STRING(REGEX REPLACE "[^a-zA-Z0-9]" "" BLOCK_CLEAN ${BLOCK}) configure_file(solverfactorytest.cc.in solverfactorytest_${BLOCK_CLEAN}.cc) - dune_add_test(SOURCES ${CMAKE_CURRENT_BINARY_DIR}/solverfactorytest_${BLOCK_CLEAN}.cc) + dune_add_test(SOURCES ${CMAKE_CURRENT_BINARY_DIR}/solverfactorytest_${BLOCK_CLEAN}.cc + CMAKE_GUARD HAVE_MPI) endfunction(add_factory_test) foreach(FIELD_TYPE ${DUNE_TEST_FACTORY_FIELD_TYPES}) diff --git a/dune/istl/test/matrixmarkettest.cc b/dune/istl/test/matrixmarkettest.cc index b335afe6..ce30e8ae 100644 --- a/dune/istl/test/matrixmarkettest.cc +++ b/dune/istl/test/matrixmarkettest.cc @@ -52,7 +52,7 @@ int testMatrixMarket(int N) storeMatrixMarket(mat, std::string("testmat"), comm); storeMatrixMarket(bv, std::string("testvec"), comm, false); #else - typedef Dune::MatrixAdapter Operator; + typedef Dune::MatrixAdapter Operator; Operator op(mat); op.apply(bv, cv); diff --git a/dune/istl/test/scalarproductstest.cc b/dune/istl/test/scalarproductstest.cc index 452b1d89..f46ce2a9 100644 --- a/dune/istl/test/scalarproductstest.cc +++ b/dune/istl/test/scalarproductstest.cc @@ -115,6 +115,7 @@ int main(int argc, char** argv) scalarProductTest(scalarProduct,numBlocks); } +#if HAVE_MPI // Test the ParallelScalarProduct class { using Vector = BlockVector >; @@ -139,6 +140,7 @@ int main(int argc, char** argv) ScalarProduct scalarProduct(communicator,SolverCategory::nonoverlapping); scalarProductTest(scalarProduct,numBlocks); } +#endif return t.exit(); } -- 2.25.1