Blob Blame History Raw
From 4236fc87c4a49924738431b316bc4e2b34f2ea28 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Thu, 24 Jan 2019 00:49:02 -0500
Subject: [PATCH 2/2] Use external Catch2.

Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
 tests/CMakeLists.txt      | 20 ++++++++++++++++----
 tests/active_poller.cpp   | 12 ++++++------
 tests/buffer.cpp          |  2 +-
 tests/codec_multipart.cpp |  6 +++---
 tests/context.cpp         |  6 +++---
 tests/message.cpp         |  2 +-
 tests/multipart.cpp       |  2 +-
 tests/poller.cpp          | 22 +++++++++++-----------
 tests/recv_multipart.cpp  | 10 +++++-----
 tests/send_multipart.cpp  |  4 ++--
 tests/socket.cpp          | 12 ++++++------
 tests/socket_ref.cpp      |  8 ++++----
 tests/testutil.hpp        |  4 ++++
 tests/utilities.cpp       |  2 +-
 14 files changed, 64 insertions(+), 48 deletions(-)

diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 0ae37d7..bd64d8c 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -10,8 +10,15 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
 
 include(CTest)
-include(cmake/catch.cmake)
-include(${CATCH_MODULE_PATH}/Catch.cmake)
+find_package(Catch2)
+if (Catch2_FOUND)
+    set(CATCH_TYPE "catch2")
+    include(Catch)
+else()
+    include(cmake/catch.cmake)
+    include(${CATCH_MODULE_PATH}/Catch.cmake)
+    set(CATCH_TYPE "internal")
+endif()
 
 find_package(Threads)
 
@@ -32,9 +39,14 @@ add_executable(
     utilities.cpp
 )
 
-add_dependencies(unit_tests catch)
+if (CATCH_TYPE STREQUAL "catch2")
+    target_link_libraries(unit_tests PRIVATE Catch2::Catch2)
+    target_compile_definitions(unit_tests PRIVATE -DUSE_EXTERNAL_CATCH2)
+else()
+    add_dependencies(unit_tests catch)
+    target_include_directories(unit_tests PUBLIC ${CATCH_MODULE_PATH})
+endif()
 
-target_include_directories(unit_tests PUBLIC ${CATCH_MODULE_PATH})
 target_link_libraries(
     unit_tests
     PRIVATE cppzmq
diff --git a/tests/active_poller.cpp b/tests/active_poller.cpp
index 815a5b6..ee52fd1 100644
--- a/tests/active_poller.cpp
+++ b/tests/active_poller.cpp
@@ -107,7 +107,7 @@ TEST_CASE("add handler invalid events type", "[active_poller]")
     CHECK_THROWS_AS(
       active_poller.add(socket, static_cast<zmq::event_flags>(invalid_events_type),
                         no_op_handler),
-      const zmq::error_t &);
+      zmq::error_t);
     CHECK(active_poller.empty());
     CHECK(0u == active_poller.size());
 }
@@ -243,7 +243,7 @@ TEST_CASE("add invalid socket throws", "[active_poller]")
     zmq::socket_t a{context, zmq::socket_type::router};
     zmq::socket_t b{std::move(a)};
     CHECK_THROWS_AS(active_poller.add(a, zmq::event_flags::pollin, no_op_handler),
-                    const zmq::error_t &);
+                    zmq::error_t);
 }
 
 TEST_CASE("remove invalid socket throws", "[active_poller]")
@@ -256,7 +256,7 @@ TEST_CASE("remove invalid socket throws", "[active_poller]")
     CHECK(1u == active_poller.size());
     std::vector<zmq::socket_t> sockets;
     sockets.emplace_back(std::move(socket));
-    CHECK_THROWS_AS(active_poller.remove(socket), const zmq::error_t &);
+    CHECK_THROWS_AS(active_poller.remove(socket), zmq::error_t);
     CHECK(1u == active_poller.size());
 }
 
@@ -276,7 +276,7 @@ TEST_CASE("modify empty throws", "[active_poller]")
     zmq::socket_t socket{context, zmq::socket_type::push};
     zmq::active_poller_t active_poller;
     CHECK_THROWS_AS(active_poller.modify(socket, zmq::event_flags::pollin),
-                    const zmq::error_t &);
+                    zmq::error_t);
 }
 
 TEST_CASE("modify invalid socket throws", "[active_poller]")
@@ -286,7 +286,7 @@ TEST_CASE("modify invalid socket throws", "[active_poller]")
     zmq::socket_t b{std::move(a)};
     zmq::active_poller_t active_poller;
     CHECK_THROWS_AS(active_poller.modify(a, zmq::event_flags::pollin),
-                    const zmq::error_t &);
+                    zmq::error_t);
 }
 
 TEST_CASE("modify not added throws", "[active_poller]")
@@ -297,7 +297,7 @@ TEST_CASE("modify not added throws", "[active_poller]")
     zmq::active_poller_t active_poller;
     CHECK_NOTHROW(active_poller.add(a, zmq::event_flags::pollin, no_op_handler));
     CHECK_THROWS_AS(active_poller.modify(b, zmq::event_flags::pollin),
-                    const zmq::error_t &);
+                    zmq::error_t);
 }
 
 TEST_CASE("modify simple", "[active_poller]")
diff --git a/tests/buffer.cpp b/tests/buffer.cpp
index da8eadd..4995857 100644
--- a/tests/buffer.cpp
+++ b/tests/buffer.cpp
@@ -1,4 +1,4 @@
-#include <catch.hpp>
+#include "testutil.hpp"
 #include <zmq.hpp>
 
 #ifdef ZMQ_CPP17
diff --git a/tests/codec_multipart.cpp b/tests/codec_multipart.cpp
index 43d444d..dc833d6 100644
--- a/tests/codec_multipart.cpp
+++ b/tests/codec_multipart.cpp
@@ -1,4 +1,4 @@
-#include <catch.hpp>
+#include "testutil.hpp"
 #include <zmq_addon.hpp>
 
 #ifdef ZMQ_CPP11
@@ -69,7 +69,7 @@ TEST_CASE("multipart codec decode bad data overflow", "[codec_multipart]")
     
     CHECK_THROWS_AS(
         multipart_t::decode(wrong_size),
-        const std::out_of_range&);
+        std::out_of_range);
 }
 
 TEST_CASE("multipart codec decode bad data extra data", "[codec_multipart]")
@@ -83,7 +83,7 @@ TEST_CASE("multipart codec decode bad data extra data", "[codec_multipart]")
     
     CHECK_THROWS_AS(
         multipart_t::decode(wrong_size),
-        const std::out_of_range&);
+        std::out_of_range);
 }
 
 
diff --git a/tests/context.cpp b/tests/context.cpp
index d723397..11cc55c 100644
--- a/tests/context.cpp
+++ b/tests/context.cpp
@@ -1,4 +1,4 @@
-#include <catch.hpp>
+#include "testutil.hpp"
 #include <zmq.hpp>
 
 #if (__cplusplus >= 201703L)
@@ -75,10 +75,10 @@ TEST_CASE("context set/get options", "[context]")
 
     CHECK_THROWS_AS(
         context.set(static_cast<zmq::ctxopt>(-42), 5),
-        const zmq::error_t &);
+        zmq::error_t);
 
     CHECK_THROWS_AS(
         context.get(static_cast<zmq::ctxopt>(-42)),
-        const zmq::error_t &);
+        zmq::error_t);
 }
 #endif
diff --git a/tests/message.cpp b/tests/message.cpp
index 17fb088..c539f24 100644
--- a/tests/message.cpp
+++ b/tests/message.cpp
@@ -1,5 +1,5 @@
 #define CATCH_CONFIG_MAIN
-#include <catch.hpp>
+#include "testutil.hpp"
 #include <zmq.hpp>
 
 #if defined(ZMQ_CPP11)
diff --git a/tests/multipart.cpp b/tests/multipart.cpp
index a8e84be..cb44482 100644
--- a/tests/multipart.cpp
+++ b/tests/multipart.cpp
@@ -1,4 +1,4 @@
-#include <catch.hpp>
+#include "testutil.hpp"
 #include <zmq_addon.hpp>
 
 #ifdef ZMQ_HAS_RVALUE_REFS
diff --git a/tests/poller.cpp b/tests/poller.cpp
index 7244357..9d652a6 100644
--- a/tests/poller.cpp
+++ b/tests/poller.cpp
@@ -109,7 +109,7 @@ TEST_CASE("poller add handler invalid events type", "[poller]")
     short invalid_events_type = 2 << 10;
     CHECK_THROWS_AS(
         poller.add(socket, static_cast<zmq::event_flags>(invalid_events_type)),
-        const zmq::error_t&);
+        zmq::error_t);
 }
 #endif
 
@@ -121,7 +121,7 @@ TEST_CASE("poller add handler twice throws", "[poller]")
     poller.add(socket, zmq::event_flags::pollin);
     /// \todo the actual error code should be checked
     CHECK_THROWS_AS(poller.add(socket, zmq::event_flags::pollin),
-                    const zmq::error_t&);
+                    zmq::error_t);
 }
 
 TEST_CASE("poller wait with no handlers throws", "[poller]")
@@ -130,7 +130,7 @@ TEST_CASE("poller wait with no handlers throws", "[poller]")
     std::vector<zmq::poller_event<>> events;
     /// \todo the actual error code should be checked
     CHECK_THROWS_AS(poller.wait_all(events, std::chrono::milliseconds{10}),
-                    const zmq::error_t&);
+                    zmq::error_t);
 }
 
 TEST_CASE("poller remove unregistered throws", "[poller]")
@@ -139,7 +139,7 @@ TEST_CASE("poller remove unregistered throws", "[poller]")
     zmq::socket_t socket{context, zmq::socket_type::router};
     zmq::poller_t<> poller;
     /// \todo the actual error code should be checked
-    CHECK_THROWS_AS(poller.remove(socket), const zmq::error_t&);
+    CHECK_THROWS_AS(poller.remove(socket), zmq::error_t);
 }
 
 TEST_CASE("poller remove registered empty", "[poller]")
@@ -184,7 +184,7 @@ TEST_CASE("poller add invalid socket throws", "[poller]")
     zmq::poller_t<> poller;
     zmq::socket_t a{context, zmq::socket_type::router};
     zmq::socket_t b{std::move(a)};
-    CHECK_THROWS_AS(poller.add(a, zmq::event_flags::pollin), const zmq::error_t&);
+    CHECK_THROWS_AS(poller.add(a, zmq::event_flags::pollin), zmq::error_t);
 }
 
 TEST_CASE("poller remove invalid socket throws", "[poller]")
@@ -195,7 +195,7 @@ TEST_CASE("poller remove invalid socket throws", "[poller]")
     CHECK_NOTHROW(poller.add(socket, zmq::event_flags::pollin));
     std::vector<zmq::socket_t> sockets;
     sockets.emplace_back(std::move(socket));
-    CHECK_THROWS_AS(poller.remove(socket), const zmq::error_t&);
+    CHECK_THROWS_AS(poller.remove(socket), zmq::error_t);
     CHECK_NOTHROW(poller.remove(sockets[0]));
 }
 
@@ -205,7 +205,7 @@ TEST_CASE("poller modify empty throws", "[poller]")
     zmq::socket_t socket{context, zmq::socket_type::push};
     zmq::poller_t<> poller;
     CHECK_THROWS_AS(poller.modify(socket, zmq::event_flags::pollin),
-                    const zmq::error_t&);
+                    zmq::error_t);
 }
 
 TEST_CASE("poller modify invalid socket throws", "[poller]")
@@ -214,7 +214,7 @@ TEST_CASE("poller modify invalid socket throws", "[poller]")
     zmq::socket_t a{context, zmq::socket_type::push};
     zmq::socket_t b{std::move(a)};
     zmq::poller_t<> poller;
-    CHECK_THROWS_AS(poller.modify(a, zmq::event_flags::pollin), const zmq::error_t&);
+    CHECK_THROWS_AS(poller.modify(a, zmq::event_flags::pollin), zmq::error_t);
 }
 
 TEST_CASE("poller modify not added throws", "[poller]")
@@ -224,7 +224,7 @@ TEST_CASE("poller modify not added throws", "[poller]")
     zmq::socket_t b{context, zmq::socket_type::push};
     zmq::poller_t<> poller;
     CHECK_NOTHROW(poller.add(a, zmq::event_flags::pollin));
-    CHECK_THROWS_AS(poller.modify(b, zmq::event_flags::pollin), const zmq::error_t&);
+    CHECK_THROWS_AS(poller.modify(b, zmq::event_flags::pollin), zmq::error_t);
 }
 
 TEST_CASE("poller modify simple", "[poller]")
@@ -290,7 +290,7 @@ TEST_CASE("poller wait on move constructed", "[poller]")
     std::vector<zmq::poller_event<>> events(1);
     /// \todo the actual error code should be checked
     CHECK_THROWS_AS(a.wait_all(events, std::chrono::milliseconds{10}),
-                    const zmq::error_t&);
+                    zmq::error_t);
     CHECK(1 == b.wait_all(events, std::chrono::milliseconds{-1}));
 }
 
@@ -305,7 +305,7 @@ TEST_CASE("poller wait on move assigned", "[poller]")
     /// \todo the TEST_CASE error code should be checked
     std::vector<zmq::poller_event<>> events(1);
     CHECK_THROWS_AS(a.wait_all(events, std::chrono::milliseconds{10}),
-                    const zmq::error_t&);
+                    zmq::error_t);
     CHECK(1 == b.wait_all(events, std::chrono::milliseconds{-1}));
 }
 
diff --git a/tests/recv_multipart.cpp b/tests/recv_multipart.cpp
index 85bdcbf..de35805 100644
--- a/tests/recv_multipart.cpp
+++ b/tests/recv_multipart.cpp
@@ -1,4 +1,4 @@
-#include <catch.hpp>
+#include "testutil.hpp"
 #include <zmq_addon.hpp>
 #ifdef ZMQ_CPP11
 
@@ -52,7 +52,7 @@ TEST_CASE("recv_multipart test", "[recv_multipart]")
         std::vector<zmq::message_t> msgs;
         CHECK_THROWS_AS(
             zmq::recv_multipart(zmq::socket_ref(), std::back_inserter(msgs)),
-            const zmq::error_t &);
+            zmq::error_t);
     }
 }
 
@@ -90,7 +90,7 @@ TEST_CASE("recv_multipart_n test", "[recv_multipart]")
         std::array<zmq::message_t, 1> msgs;
         CHECK_THROWS_AS(
             zmq::recv_multipart_n(output, msgs.data(), msgs.size()),
-            const std::runtime_error&);
+            std::runtime_error);
     }
     SECTION("recv 0") {
         input.send(zmq::str_buffer("hello"), zmq::send_flags::sndmore);
@@ -99,7 +99,7 @@ TEST_CASE("recv_multipart_n test", "[recv_multipart]")
         std::array<zmq::message_t, 1> msgs;
         CHECK_THROWS_AS(
             zmq::recv_multipart_n(output, msgs.data(), 0),
-            const std::runtime_error&);
+            std::runtime_error);
     }
     SECTION("send 2 messages") {
         input.send(zmq::str_buffer("hello"), zmq::send_flags::sndmore);
@@ -132,7 +132,7 @@ TEST_CASE("recv_multipart_n test", "[recv_multipart]")
         std::array<zmq::message_t, 1> msgs;
         CHECK_THROWS_AS(
             zmq::recv_multipart_n(zmq::socket_ref(), msgs.data(), msgs.size()),
-            const zmq::error_t &);
+            zmq::error_t);
     }
 }
 
diff --git a/tests/send_multipart.cpp b/tests/send_multipart.cpp
index 7ea83b3..21f82b0 100644
--- a/tests/send_multipart.cpp
+++ b/tests/send_multipart.cpp
@@ -1,4 +1,4 @@
-#include <catch.hpp>
+#include "testutil.hpp"
 #include <zmq_addon.hpp>
 #ifdef ZMQ_CPP11
 
@@ -115,7 +115,7 @@ TEST_CASE("send_multipart test", "[send_multipart]")
     SECTION("send with invalid socket") {
         std::vector<zmq::message_t> msgs(1);
         CHECK_THROWS_AS(zmq::send_multipart(zmq::socket_ref(), msgs),
-                        const zmq::error_t &);
+                        zmq::error_t);
     }
 }
 #endif
diff --git a/tests/socket.cpp b/tests/socket.cpp
index ec40536..bb31301 100644
--- a/tests/socket.cpp
+++ b/tests/socket.cpp
@@ -1,4 +1,4 @@
-#include <catch.hpp>
+#include "testutil.hpp"
 #include <zmq.hpp>
 #ifdef ZMQ_CPP11
 #include <future>
@@ -58,7 +58,7 @@ TEST_CASE("socket options", "[socket]")
     socket.set(zmq::sockopt::immediate, false);
     CHECK(socket.get(zmq::sockopt::immediate) == false);
     // unit out of range
-    CHECK_THROWS_AS(socket.set(zmq::sockopt::immediate, 80), const zmq::error_t &);
+    CHECK_THROWS_AS(socket.set(zmq::sockopt::immediate, 80), zmq::error_t);
 #endif
 #ifdef ZMQ_LINGER
     socket.set(zmq::sockopt::linger, 55);
@@ -83,7 +83,7 @@ TEST_CASE("socket options", "[socket]")
     std::string id_ret_small(3, ' ');
     // truncated
     CHECK_THROWS_AS(socket.get(zmq::sockopt::routing_id, zmq::buffer(id_ret_small)),
-                    const zmq::error_t &);
+                    zmq::error_t);
 #endif
 }
 
@@ -544,7 +544,7 @@ TEST_CASE("socket send exception", "[socket]")
     s.bind("inproc://test");
 
     std::vector<char> buf(4);
-    CHECK_THROWS_AS(s.send(zmq::buffer(buf)), const zmq::error_t &);
+    CHECK_THROWS_AS(s.send(zmq::buffer(buf)), zmq::error_t);
 }
 
 TEST_CASE("socket recv none", "[socket]")
@@ -632,7 +632,7 @@ TEST_CASE("socket recv dontwait", "[socket]")
     zmq::message_t msg;
     auto resm = s.recv(msg, flags);
     CHECK(!resm);
-    CHECK_THROWS_AS(resm.value(), const std::exception &);
+    CHECK_THROWS_AS(resm.value(), std::exception);
     CHECK(msg.size() == 0);
 }
 
@@ -643,7 +643,7 @@ TEST_CASE("socket recv exception", "[socket]")
     s.bind("inproc://test");
 
     std::vector<char> buf(4);
-    CHECK_THROWS_AS(s.recv(zmq::buffer(buf)), const zmq::error_t &);
+    CHECK_THROWS_AS(s.recv(zmq::buffer(buf)), zmq::error_t);
 }
 
 TEST_CASE("socket proxy", "[socket]")
diff --git a/tests/socket_ref.cpp b/tests/socket_ref.cpp
index 1730abf..f54f0a9 100644
--- a/tests/socket_ref.cpp
+++ b/tests/socket_ref.cpp
@@ -1,4 +1,4 @@
-#include <catch.hpp>
+#include "testutil.hpp"
 #include <zmq.hpp>
 #ifdef ZMQ_CPP11
 
@@ -51,8 +51,8 @@ TEST_CASE("socket_ref compare from socket_t", "[socket_ref]")
     zmq::socket_ref sr2 = s2;
     CHECK(sr1);
     CHECK(sr2);
-    CHECK(sr1 == s1);
-    CHECK(sr2 == s2);
+    CHECK((sr1 == s1));
+    CHECK((sr2 == s2));
     CHECK(sr1.handle() == s1.handle());
     CHECK(sr1 != sr2);
     CHECK(sr1.handle() != sr2.handle());
@@ -112,7 +112,7 @@ TEST_CASE("socket_ref type punning", "[socket_ref]")
     svp.p = socket.handle();
     // static_cast to silence incorrect warning
     std::memcpy(static_cast<void *>(&ssr), &svp, sizeof(ssr));
-    CHECK(ssr.sr == socket);
+    CHECK((ssr.sr == socket));
 }
 
 #endif
diff --git a/tests/testutil.hpp b/tests/testutil.hpp
index f633ff4..0de9782 100644
--- a/tests/testutil.hpp
+++ b/tests/testutil.hpp
@@ -1,6 +1,10 @@
 #pragma once
 
+#ifdef USE_EXTERNAL_CATCH2
+#include <catch2/catch.hpp>
+#else
 #include <catch.hpp>
+#endif
 #include <zmq.hpp>
 
 #if defined(ZMQ_CPP11)
diff --git a/tests/utilities.cpp b/tests/utilities.cpp
index 87211c9..a0ea7b9 100644
--- a/tests/utilities.cpp
+++ b/tests/utilities.cpp
@@ -1,4 +1,4 @@
-#include <catch.hpp>
+#include "testutil.hpp"
 #include <zmq.hpp>
 
 #if defined(ZMQ_CPP11) && !defined(ZMQ_CPP11_PARTIAL)
-- 
2.26.2