diff --git a/src/language/utils/CheckpointResumeRepository.cpp b/src/language/utils/CheckpointResumeRepository.cpp
index d93476823787114b078a73c681e7a07f6e457c61..59860cf3ba27adec4dbcc6fffde7b95f6e282939 100644
--- a/src/language/utils/CheckpointResumeRepository.cpp
+++ b/src/language/utils/CheckpointResumeRepository.cpp
@@ -2,6 +2,8 @@
 
 CheckpointResumeRepository* CheckpointResumeRepository::m_instance = nullptr;
 
+#ifdef PUGS_HAS_HDF5
+
 void
 CheckpointResumeRepository::checkpoint(const ASTNodeDataType& data_type,
                                        const std::string& symbol_name,
@@ -44,6 +46,8 @@ CheckpointResumeRepository::resume(const ASTNodeDataType& data_type,
   }
 }
 
+#endif   // PUGS_HAS_HDF5
+
 void
 CheckpointResumeRepository::create()
 {
diff --git a/src/language/utils/CheckpointResumeRepository.hpp b/src/language/utils/CheckpointResumeRepository.hpp
index 7aef97e796036b40af9ba216f108098d836bfa7d..386c586b7b34c3c7618526614106373aab069396 100644
--- a/src/language/utils/CheckpointResumeRepository.hpp
+++ b/src/language/utils/CheckpointResumeRepository.hpp
@@ -6,6 +6,7 @@
 #include <utils/HighFivePugsUtils.hpp>
 #include <utils/PugsAssert.hpp>
 #include <utils/PugsUtils.hpp>
+#include <utils/pugs_build_info.hpp>
 
 #include <string>
 #include <unordered_map>
@@ -37,10 +38,12 @@ class CheckpointResumeRepository
       const auto [i, inserted] =
         m_data_type_checkpointing.insert({data_type_name, std::forward<CheckpointFunction>(checkpoint_function)});
       if (not(inserted)) {
+        // LCOV_EXCL_START
         std::ostringstream error_msg;
         error_msg << "checkpointing for type '" << rang::fgB::yellow << data_type_name << rang::fg::reset
                   << "' has already be defined";
         throw UnexpectedError(error_msg.str());
+        // LCOV_EXCL_STOP
       }
     }
     {
@@ -50,6 +53,7 @@ class CheckpointResumeRepository
     }
   }
 
+#ifdef PUGS_HAS_HDF5
   void checkpoint(const ASTNodeDataType& data_type,
                   const std::string& symbol_name,
                   const EmbeddedData& embedded_data,
@@ -60,6 +64,7 @@ class CheckpointResumeRepository
   EmbeddedData resume(const ASTNodeDataType& data_type,
                       const std::string& symbol_name,
                       const HighFive::Group& symbol_table_group) const;
+#endif   // PUGS_HAS_HDF5
 
   static void create();
 
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 0a6d69d39ef0c2402a6773e8706531da9435e333..4ccb5a9275b1be3dd7247372f334d83e67d7eeae 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -94,6 +94,7 @@ add_executable (unit_tests
   test_EscapedString.cpp
   test_Exceptions.cpp
   test_ExecutionPolicy.cpp
+  test_Exit.cpp
   test_FaceIntegrator.cpp
   test_FakeProcessor.cpp
   test_ForProcessor.cpp
diff --git a/tests/test_Exit.cpp b/tests/test_Exit.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c405b12e234670aa28d9e631d1daa6af2c0b2005
--- /dev/null
+++ b/tests/test_Exit.cpp
@@ -0,0 +1,19 @@
+#include <catch2/catch_test_macros.hpp>
+#include <catch2/matchers/catch_matchers_all.hpp>
+
+#include <language/utils/Exit.hpp>
+
+// clazy:excludeall=non-pod-global-static
+
+TEST_CASE("Exit", "[language/utils]")
+{
+  language::Exit exit0 = language::Exit{0};
+
+  REQUIRE(exit0.code() == 0);
+
+  language::Exit exit1{1};
+  REQUIRE(exit1.code() == 1);
+
+  language::Exit exit_move = std::move(exit1);
+  REQUIRE(exit_move.code() == 1);
+}