diff --git a/utils/nightly/gmsh.ctest b/utils/nightly/gmsh.ctest
index 8d40edc46ab128cd6b3ad8ef28747627a3262f88..4f84b036b7dd0c6894242939cfdf45e806d31ba6 100644
--- a/utils/nightly/gmsh.ctest
+++ b/utils/nightly/gmsh.ctest
@@ -8,15 +8,19 @@
 
 set(CTEST_SITE "ace36.montefiore")
 
-set(CTEST_SOURCE_DIRECTORY "$ENV{HOME}/src/gmsh")
-set(CTEST_BUILD_CONFIGURATION "RelWithDebInfo")
-
-set(CTEST_SVN_REPOS https://geuz.org/svn/gmsh/trunk)
-
 find_program(CTEST_SVN_COMMAND NAMES svn)
 find_program(CTEST_COVERAGE_COMMAND NAMES gcov)
 find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
 
+if(WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
+  set(CTEST_BUILD_CONFIGURATION "Debug")
+else(WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
+  set(CTEST_BUILD_CONFIGURATION "RelWithDebInfo")
+endif(NOT CTEST_BUILD_CONFIGURATION)
+
+set(CTEST_SOURCE_DIRECTORY "$ENV{HOME}/src/gmsh")
+set(CTEST_SVN_REPOS https://geuz.org/svn/gmsh/trunk)
+
 if(NOT EXISTS "${CTEST_SOURCE_DIRECTORY}")
   set(CTEST_CHECKOUT_COMMAND 
       "${CTEST_SVN_COMMAND} co ${CTEST_SVN_REPOS} ${CTEST_SOURCE_DIRECTORY}")
@@ -30,15 +34,21 @@ set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} ${CTEST_BUILD_OPTIONS}")
 if(CTEST_BUILD_OPTIONS_QUOTED)
   set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} \"${CTEST_BUILD_OPTIONS_QUOTED}\"")
 endif(CTEST_BUILD_OPTIONS_QUOTED)
+if(WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
+  set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} -DCMAKE_CXX_FLAGS:STRING=\"-g -O0 -fprofile-arcs -ftest-coverage\"")
+  set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} -DCMAKE_C_FLAGS:STRING=\"-g -O0 -fprofile-arcs -ftest-coverage\"")
+endif(WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
 set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} \"${CTEST_SOURCE_DIRECTORY}\"")
 
 # make sure everybody outputs messages in english
 set($ENV{LC_MESSAGES} "en_US")
 
 # select Experimental dashboard if none is selected
-if(NOT CDASH_MODEL)
+if(WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
+  set(CDASH_MODEL "Coverage")
+else if(NOT CDASH_MODEL)
   set(CDASH_MODEL "Experimental")
-endif(NOT CDASH_MODEL)
+endif(WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
 
 ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
 ctest_start(${CDASH_MODEL})
diff --git a/utils/nightly/gmsh_linux64_coverage.ctest b/utils/nightly/gmsh_linux64_coverage.ctest
new file mode 100644
index 0000000000000000000000000000000000000000..1c7d1fb7b835a81c70b9f36eedd4ed8d6655cb4f
--- /dev/null
+++ b/utils/nightly/gmsh_linux64_coverage.ctest
@@ -0,0 +1,25 @@
+# Gmsh - Copyright (C) 1997-2014 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# bugs and problems to the public mailing list <gmsh@geuz.org>.
+
+set(CTEST_CMAKE_COMMAND "/usr/bin/cmake")
+set(CTEST_BINARY_DIRECTORY "$ENV{HOME}/src/gmsh/bin")
+set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
+
+set(WEB_BIN "geuzaine@geuz.org:/home/www/geuz.org/gmsh/bin/Linux")
+
+set(WITH_TEST TRUE)      # run the tests?
+set(WITH_COVERAGE TRUE) # check code coverage?
+set(WITH_MEMCHECK FALSE) # check memory with valgrind?
+
+#################################################################################
+set(CTEST_BUILD_NAME "Linux64-Coverage")
+set(OPT "-DGMSH_EXTRA_VERSION=${EXTRA_VERSION}")
+set(OPT "${OPT} -DCMAKE_PREFIX_PATH:path=/usr/local/opencascade;/usr/local")
+set(OPT "${OPT} -DENABLE_NATIVE_FILE_CHOOSER:bool=FALSE")
+set(OPT "${OPT} -DPETSC_ARCH=linux_complex_mumps_seq")
+set(OPT "${OPT} -DPETSC_DIR=$ENV{HOME}/src/petsc-3.1-p8")
+set(OPT "${OPT} -DSLEPC_DIR=$ENV{HOME}/src/slepc-3.1-p4")
+set(CTEST_BUILD_OPTIONS ${OPT})
+include(gmsh.ctest)
diff --git a/utils/nightly/gmsh_linux64_nightly.cron b/utils/nightly/gmsh_linux64_nightly.cron
index 1f094f630273784f8dd93846e8ddcb7bb1122d3c..afc0a9c09c960737437dc073e4ce205104ae1685 100644
--- a/utils/nightly/gmsh_linux64_nightly.cron
+++ b/utils/nightly/gmsh_linux64_nightly.cron
@@ -3,3 +3,4 @@
 #
 1 1 * * * cd ${HOME}/src/gmsh/utils/nightly && /usr/bin/ctest -S gmsh_linux64_nightly.ctest -VV > ${HOME}/src/gmsh/nightly.log 2>&1
 1 2 * * * cd ${HOME}/src/gmsh/utils/nightly && /usr/bin/ctest -S gmsh_linux64_dynamic_nightly.ctest -VV > ${HOME}/src/gmsh/nightly_dynamic.log 2>&1
+1 3 * * * cd ${HOME}/src/gmsh/utils/nightly && /usr/bin/ctest -S gmsh_linux64_coverage.ctest -VV > ${HOME}/src/gmsh/nightly_coverage.log 2>&1