From 56c6ff08028fa93f301c7cc91f83ebacfd995119 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Thu, 7 Nov 2024 07:56:12 +0100
Subject: [PATCH] Compiles checkpoint and restore if HDF5 is detected only

---
 .../utils/CheckpointResumeRepository.cpp      |  4 ++++
 .../utils/CheckpointResumeRepository.hpp      |  5 +++++
 tests/CMakeLists.txt                          |  1 +
 tests/test_Exit.cpp                           | 19 +++++++++++++++++++
 4 files changed, 29 insertions(+)
 create mode 100644 tests/test_Exit.cpp

diff --git a/src/language/utils/CheckpointResumeRepository.cpp b/src/language/utils/CheckpointResumeRepository.cpp
index d93476823..59860cf3b 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 7aef97e79..386c586b7 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 0a6d69d39..4ccb5a927 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 000000000..c405b12e2
--- /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);
+}
-- 
GitLab