diff --git a/dune/istl/eigenvalue/test/CMakeLists.txt b/dune/istl/eigenvalue/test/CMakeLists.txt
index 05421b0c5b6d5f2ccd54d9bbe6ce8e59a4498202..5a40d2d7350d456e4f0307f7be85ca73bce8d76c 100644
--- a/dune/istl/eigenvalue/test/CMakeLists.txt
+++ b/dune/istl/eigenvalue/test/CMakeLists.txt
@@ -7,14 +7,14 @@ if(SUPERLU_FOUND)
   add_dune_superlu_flags(poweriterationsuperlutest)
   dune_add_test(TARGET poweriterationsuperlutest)
   target_link_libraries(poweriterationsuperlutest dunecommon)
-endif(SUPERLU_FOUND)
+endif()
 
 if(ARPACKPP_FOUND)
   add_executable(arpackpptest cond2test.cc)
   add_dune_arpackpp_flags(arpackpptest)
   target_link_libraries(arpackpptest dunecommon)
   dune_add_test(TARGET arpackpptest)
-endif(ARPACKPP_FOUND)
+endif()
 
 if(ARPACKPP_FOUND AND SUPERLU_FOUND)
   dune_add_test(NAME arpackppsuperlutest
diff --git a/dune/istl/eigenvalue/test/cond2test.cc b/dune/istl/eigenvalue/test/cond2test.cc
index 3ba7a5a50c7fb629a1f00c210df79dfb3139e880..3f6d2b85dc389f3fea478bfb2368afac012d16a0 100644
--- a/dune/istl/eigenvalue/test/cond2test.cc
+++ b/dune/istl/eigenvalue/test/cond2test.cc
@@ -1,4 +1,4 @@
-#include "config.h"
+#include <config.h>
 
 #include <iostream>
 
@@ -52,15 +52,9 @@ int main (int argc, char** argv)
 
     return 0;
   }
-  catch (Dune::Exception& e)
-  {
-    std::cerr << "Dune reported error: " << e << std::endl;
-    return 1;
-  }
   catch (std::exception& e)
   {
-    std::cerr << "Standard library reported error: " << e.what() << std::endl;
-    return 1;
+    throw;
   }
   catch (...)
   {
diff --git a/dune/istl/paamg/test/CMakeLists.txt b/dune/istl/paamg/test/CMakeLists.txt
index d11e26cd4b91b1d7e7f066c39ccd7c98527a3642..01c56f8f1ba8167d1dfe3077ba02de8bf80719d4 100644
--- a/dune/istl/paamg/test/CMakeLists.txt
+++ b/dune/istl/paamg/test/CMakeLists.txt
@@ -51,7 +51,7 @@ if(SUPERLU_FOUND)
   add_dune_superlu_flags(superlufastamgtest)
   target_link_libraries(superlufastamgtest ${DUNE_LIBS})
   dune_add_test(TARGET superlufastamgtest)
-endif(SUPERLU_FOUND)
+endif()
 
 if(SuiteSparse_UMFPACK_FOUND)
   dune_add_test(NAME umfpackamgtest
diff --git a/dune/istl/pardiso.hh b/dune/istl/pardiso.hh
index e5bbb7d55fb54a2e558b41b8654153eef4b822a1..5c478157cb29655d1899fa32ebc8ab3603c2a976 100644
--- a/dune/istl/pardiso.hh
+++ b/dune/istl/pardiso.hh
@@ -6,7 +6,7 @@
 #include <dune/istl/preconditioners.hh>
 #include <dune/istl/solvertype.hh>
 
-#ifdef HAVE_PARDISO
+#if HAVE_PARDISO
 // PARDISO prototypes
 extern "C" void pardisoinit(void *, int *, int *, int *, double *, int *);
 
diff --git a/dune/istl/test/CMakeLists.txt b/dune/istl/test/CMakeLists.txt
index 4d67861a2ad2fe93c312807c757d2fa2ddac8b75..21e4493cf7fa23e81886f42113ac73a3bdd99031 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/complexrhstest.cc b/dune/istl/test/complexrhstest.cc
index c21681f6cc674762a832e84150581e3b5dd86e42..1f158227cd8701d6201f17a023c3b471ad7660c8 100644
--- a/dune/istl/test/complexrhstest.cc
+++ b/dune/istl/test/complexrhstest.cc
@@ -7,10 +7,8 @@
  *        \f$A*x = b\f$ with \f$A\f$ being a \f$N^2 \times N^2\f$
  *        Laplacian and \f$b\f$ a complex valued rhs.
  */
+#include <config.h>
 
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
 #include <complex>
 
 #include <dune/istl/bvector.hh>
@@ -188,6 +186,8 @@ int main(int argc, char** argv)
 #if HAVE_SUPERLU
   Dune::SuperLU<BCRSMat> solverSuperLU(mat, true);
   std::cout << "SuperLU converged:  "<< solverTest(solverSuperLU) << std::endl <<  std::endl;
+#else
+  std::cout << "SuperLU skipped because not found." << std::endl <<  std::endl;
 #endif
 
   typedef  Dune::GradientSolver<Vector> GradientSolver;
diff --git a/dune/istl/test/overlappingschwarztest.cc b/dune/istl/test/overlappingschwarztest.cc
index 7955b3f65b1f359fa040968c1d4728826e81d1f8..f406d91e7511c78546e467bc346cf12e88bdb8a8 100644
--- a/dune/istl/test/overlappingschwarztest.cc
+++ b/dune/istl/test/overlappingschwarztest.cc
@@ -1,6 +1,7 @@
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
-#include "config.h"
+#include <config.h>
+
 #include <dune/istl/io.hh>
 #include <dune/istl/bvector.hh>
 #include <dune/istl/operators.hh>
@@ -18,7 +19,7 @@
 
 int main(int argc, char** argv)
 {
-
+#if HAVE_SUPERLU || HAVE_SUITESPARSE_UMFPACK
   const int BS=1;
   int N=4;
 
@@ -235,4 +236,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 f1e6e590223deaf1f31caf0aaaf99f1b47bcc089..d71b551ea68c731e7602fab34e673ff58af50d5e 100644
--- a/dune/istl/test/superlutest.cc
+++ b/dune/istl/test/superlutest.cc
@@ -1,6 +1,6 @@
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
-#include "config.h"
+#include <config.h>
 
 #include <complex>
 
@@ -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 bc152163c0b223db7121a958c57ca4ce1dfefba9..15ba897a693efca316db4517dcbeaa559f2265d7 100644
--- a/dune/istl/test/test_pardiso.cc
+++ b/dune/istl/test/test_pardiso.cc
@@ -1,10 +1,11 @@
 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 // vi: set et ts=4 sw=2 sts=2:
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
+#include <config.h>
+
+#include <cstdio>
+#include <cstdlib>
+#include <cmath>
 
-#include "config.h"
 #include <dune/istl/bcrsmatrix.hh>
 #include <dune/istl/io.hh>
 #include <dune/istl/operators.hh>
@@ -13,6 +14,7 @@
 
 int main(int argc, char** argv)
 {
+#if HAVE_PARDISO
   try
   {
     /* Matrix data. */
@@ -186,10 +188,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 a3dadf626729cb02506cb6798fbbde299ebc4475..92bdf29d6ebde602220e22c86e6c7d4d4cb31799 100644
--- a/dune/istl/test/umfpacktest.cc
+++ b/dune/istl/test/umfpacktest.cc
@@ -1,7 +1,7 @@
-#include "config.h"
+#include <config.h>
 
 #include <complex>
-#include<iostream>
+#include <iostream>
 
 #include <dune/common/fmatrix.hh>
 #include <dune/common/fvector.hh>
@@ -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
 }