From a6cc5bcae8307f7bafdae2bebed85a1e2ea524e0 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Mon, 11 Nov 2024 02:06:31 +0100
Subject: [PATCH] Add missing tests for OFStream (append mode)

---
 tests/test_OFStream.cpp | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/tests/test_OFStream.cpp b/tests/test_OFStream.cpp
index 2ea0615c8..ecbab1edc 100644
--- a/tests/test_OFStream.cpp
+++ b/tests/test_OFStream.cpp
@@ -42,10 +42,40 @@ TEST_CASE("OFStream", "[language]")
 
       std::string content = file_content;
       REQUIRE(content == "foo3 bar\n");
+    }
+
+    // Ensures that the file is closed after this line
+    std::make_shared<OFStream>(filename, true) << "new content\n";
 
-      std::filesystem::remove(filename);
+    if (parallel::rank() == 0) {
+      REQUIRE(std::filesystem::is_regular_file(filename));
+
+      std::ifstream is(filename);
+
+      char file_content[21];
+      int count = 0;
+      for (size_t i = 0; i < 21; ++i) {
+        char c = is.get();
+
+        file_content[i] = c;
+        if (c == '\n') {
+          count++;
+          if (count == 2) {
+            file_content[i + 1] = '\0';
+            REQUIRE(i == 20);
+
+            c = is.get();
+            REQUIRE(is.eof());
+            break;
+          }
+        }
+      }
+
+      std::string content = file_content;
+      REQUIRE(content == "foo3 bar\nnew content\n");
     }
 
+    std::filesystem::remove(filename);
     REQUIRE(not std::filesystem::exists(filename));
   }
 
-- 
GitLab