From e8e9cfe7b6576875ee4e6a1baa5a102e6105a55e Mon Sep 17 00:00:00 2001
From: Recolic <git@me.recolic.net>
Date: Fri, 10 Nov 2023 16:54:21 -0800
Subject: [PATCH] add die_on_fail to make test easier

---
 string.hpp       |  1 +
 test.hpp         | 19 +++++++++++++++++++
 test/src/test.cc |  6 ++++++
 3 files changed, 26 insertions(+)
 create mode 100644 test.hpp
 create mode 100644 test/src/test.cc

diff --git a/string.hpp b/string.hpp
index 4a43206..cdb05ad 100644
--- a/string.hpp
+++ b/string.hpp
@@ -20,6 +20,7 @@
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
+#include <cstdint>
 #include <stdexcept>
 #include <sstream>
 #include <type_traits>
diff --git a/test.hpp b/test.hpp
new file mode 100644
index 0000000..620cf70
--- /dev/null
+++ b/test.hpp
@@ -0,0 +1,19 @@
+#include <rlib/macro.hpp>
+#include <rlib/string.hpp>
+#include <stdexcept>
+#include <cerrno>
+#include <string>
+
+namespace rlib::details {
+struct die_impl {
+    explicit die_impl(std::string hint_str) : msg(std::move(hint_str)) {}
+    auto operator=(const long &syscall_res) const {
+        if(syscall_res < 0)
+            throw std::runtime_error(rlib::string("Dead. {}. System call returns {}, errno={}, strerror={}").format(msg, syscall_res, errno,
+                                                                                                     strerror(errno)));
+    }
+    std::string msg;
+};
+}
+#define die_on_fail rlib::details::die_impl(std::string(__FILE__ ":" RLIB_MACRO_TO_CSTR(__LINE__))) =
+
diff --git a/test/src/test.cc b/test/src/test.cc
new file mode 100644
index 0000000..8a6db93
--- /dev/null
+++ b/test/src/test.cc
@@ -0,0 +1,6 @@
+#include <rlib/test.hpp>
+
+int main() {
+    die_on_fail 0;
+}
+
-- 
GitLab