From 34748108f676dcdd472766cd337c18207988f574 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20Gr=C3=BCninger?= <gruenich@dune-project.org>
Date: Thu, 14 Jan 2016 09:35:22 +0100
Subject: [PATCH] [CMake] Build and mark skipped tests

This implmenets FS#1538 for dune/istl/test
---
 dune/istl/test/CMakeLists.txt            | 69 ++++++++++++------------
 dune/istl/test/overlappingschwarztest.cc |  8 ++-
 dune/istl/test/superlutest.cc            |  5 ++
 dune/istl/test/test_pardiso.cc           | 10 +++-
 dune/istl/test/umfpacktest.cc            |  5 ++
 5 files changed, 59 insertions(+), 38 deletions(-)

diff --git a/dune/istl/test/CMakeLists.txt b/dune/istl/test/CMakeLists.txt
index 4d67861a2..21e4493cf 100644
--- a/dune/istl/test/CMakeLists.txt
+++ b/dune/istl/test/CMakeLists.txt
@@ -39,52 +39,51 @@ dune_add_test(SOURCES inverseoperator2prectest.cc)
 
 dune_add_test(SOURCES scaledidmatrixtest.cc)
 
-if(HAVE_PARDISO)
-  dune_add_test(SOURCES test_pardiso.cc)
-endif(HAVE_PARDISO)
+# Pardiso tests
+dune_add_test(SOURCES test_pardiso.cc
+              SKIP_ON_77)
 
-if(SUPERLU_FOUND)
-  dune_add_test(NAME superlustest
-                SOURCES superlutest.cc
-                COMPILE_DEFINITIONS SUPERLU_NTYPE=0)
+# SuperLU tests
+dune_add_test(NAME superlustest
+              SOURCES superlutest.cc
+              COMPILE_DEFINITIONS SUPERLU_NTYPE=0
+              SKIP_ON_77)
 
-  dune_add_test(SOURCES superlutest.cc)
+dune_add_test(SOURCES superlutest.cc
+              SKIP_ON_77)
 
-  dune_add_test(NAME superluctest
-                SOURCES superlutest.cc
-                COMPILE_DEFINITIONS SUPERLU_NTYPE=2)
+dune_add_test(NAME superluctest
+              SOURCES superlutest.cc
+              COMPILE_DEFINITIONS SUPERLU_NTYPE=2
+              SKIP_ON_77)
 
-  dune_add_test(NAME superluztest
-                SOURCES superlutest.cc
-                COMPILE_DEFINITIONS SUPERLU_NTYPE=3)
+dune_add_test(NAME superluztest
+              SOURCES superlutest.cc
+              COMPILE_DEFINITIONS SUPERLU_NTYPE=3
+              SKIP_ON_77)
 
-  dune_add_test(SOURCES complexrhstest.cc
-                COMPILE_DEFINITIONS SUPERLU_NTYPE=3)
-endif()
+dune_add_test(SOURCES complexrhstest.cc
+              COMPILE_DEFINITIONS SUPERLU_NTYPE=3)
 
-if(SuiteSparse_UMFPACK_FOUND)
-  dune_add_test(SOURCES umfpacktest.cc)
-  set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "umfpack_decomp")
-endif()
+# SuiteSparse tests
+dune_add_test(SOURCES umfpacktest.cc
+              SKIP_ON_77)
+set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "umfpack_decomp")
 
-dune_add_test(
-  SOURCES ldltest.cc
-  SKIP_ON_77)
+dune_add_test(SOURCES ldltest.cc
+              SKIP_ON_77)
 
-dune_add_test(
-  SOURCES spqrtest.cc
-  SKIP_ON_77)
+dune_add_test(SOURCES spqrtest.cc
+              SKIP_ON_77)
 
-if ((SUPERLU_FOUND) OR (SuiteSparse_UMFPACK_FOUND))
-  dune_add_test(SOURCES overlappingschwarztest.cc)
-endif()
+dune_add_test(SOURCES overlappingschwarztest.cc
+              SKIP_ON_77)
 
-if(HAVE_MPI)
-  dune_add_test(SOURCES matrixredisttest.cc)
+# MPI tests
+dune_add_test(SOURCES matrixredisttest.cc)
 
-  dune_add_test(SOURCES vectorcommtest.cc)
+dune_add_test(SOURCES vectorcommtest.cc)
 
-  dune_add_test(SOURCES matrixmarkettest.cc)
-endif(HAVE_MPI)
+dune_add_test(SOURCES matrixmarkettest.cc)
 
 exclude_from_headercheck(complexdata.hh)
diff --git a/dune/istl/test/overlappingschwarztest.cc b/dune/istl/test/overlappingschwarztest.cc
index 7955b3f65..e9510b3d3 100644
--- a/dune/istl/test/overlappingschwarztest.cc
+++ b/dune/istl/test/overlappingschwarztest.cc
@@ -18,7 +18,7 @@
 
 int main(int argc, char** argv)
 {
-
+#if HAVE_SUPERLU || HAVE_SUITESPARSE_UMFPACK
   const int BS=1;
   int N=4;
 
@@ -235,4 +235,10 @@ int main(int argc, char** argv)
   Dune::SeqSOR<BCRSMat,BVector,BVector> sor(mat, 1,1);
   Dune::LoopSolver<BVector> solver4(fop, sor, 1e-2,100,2);
   solver4.apply(x,b, res);
+
+  return 0;
+#else // HAVE_SUPERLU || HAVE_SUITESPARSE_UMFPACK
+  std::cerr << "You need SuperLU or SuiteSparse's UMFPack to run this test." << std::endl;
+  return 77;
+#endif // HAVE_SUPERLU || HAVE_SUITESPARSE_UMFPACK
 }
diff --git a/dune/istl/test/superlutest.cc b/dune/istl/test/superlutest.cc
index f1e6e5902..1b1232381 100644
--- a/dune/istl/test/superlutest.cc
+++ b/dune/istl/test/superlutest.cc
@@ -37,6 +37,7 @@ typedef std::complex<double> FIELD_TYPE;
 int main(int argc, char** argv)
 try
 {
+#if HAVE_SUPERLU
   const int BS=1;
   std::size_t N=100;
 
@@ -84,6 +85,10 @@ try
   solver1.apply(reinterpret_cast<FIELD_TYPE*>(&x1[0]), reinterpret_cast<FIELD_TYPE*>(&b1[0]));
 
   return 0;
+#else // HAVE_SUPERLU
+  std::cerr << "You need SuperLU to run this test." << std::endl;
+  return 77;
+#endif // HAVE_SUPERLU
 }
 catch (std::exception &e)
 {
diff --git a/dune/istl/test/test_pardiso.cc b/dune/istl/test/test_pardiso.cc
index bc152163c..c4917cc57 100644
--- a/dune/istl/test/test_pardiso.cc
+++ b/dune/istl/test/test_pardiso.cc
@@ -13,6 +13,7 @@
 
 int main(int argc, char** argv)
 {
+#if HAVE_PARDISO
   try
   {
     /* Matrix data. */
@@ -186,10 +187,15 @@ int main(int argc, char** argv)
 
     return 0;
   }
-  catch (Dune::Exception &e) {
-    std::cerr << "Dune reported error: " << e << std::endl;
+  catch (std::exception &e)
+  {
+    throw;
   }
   catch (...) {
     std::cerr << "Unknown exception thrown!" << std::endl;
   }
+#else // HAVE_PARDISO
+  std::cerr << "You need Pardiso to run this test." << std::endl;
+  return 77;
+#endif // HAVE_PARDISO
 }
diff --git a/dune/istl/test/umfpacktest.cc b/dune/istl/test/umfpacktest.cc
index a3dadf626..726c847a4 100644
--- a/dune/istl/test/umfpacktest.cc
+++ b/dune/istl/test/umfpacktest.cc
@@ -17,6 +17,7 @@
 
 int main(int argc, char** argv)
 {
+#if HAVE_SUITESPARSE_UMFPACK
   try
   {
     typedef double FIELD_TYPE;
@@ -81,4 +82,8 @@ int main(int argc, char** argv)
     std::cerr << "Dune reported an unknown error." << std::endl;
     exit(1);
   }
+#else // HAVE_SUITESPARSE_UMFPACK
+  std::cerr << "You need SuiteSparse's UMFPack to run this test." << std::endl;
+  return 77;
+#endif // HAVE_SUITESPARSE_UMFPACK
 }
-- 
GitLab