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