From 7064b40e8d5dca5a1777f990aaad8d865ef18ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Fri, 4 Feb 2022 19:26:04 +0100 Subject: [PATCH] Replace REQUIRE by FAIL_CHECK to avoid random test crashes Since connect_socket_server is called by a thread, this may produce a race condition which gives variable test number results and eventually produce test crashes. One must not use REQUIRE* or CHECK* inside separate threads. --- tests/test_SocketModule.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_SocketModule.cpp b/tests/test_SocketModule.cpp index 879595965..8a3c3a3ed 100644 --- a/tests/test_SocketModule.cpp +++ b/tests/test_SocketModule.cpp @@ -48,7 +48,9 @@ TEST_CASE("SocketModule", "[language]") auto connect_socket_server = [&name_builtin_function](const std::string& hostname, int64_t port) { auto i_function = name_builtin_function.find("connectSocketServer:string*N"); - REQUIRE(i_function != name_builtin_function.end()); + if (i_function == name_builtin_function.end()) { + FAIL_CHECK("Cannot connect to server. This should NEVER happen"); + } DataVariant hostname_variant = hostname; DataVariant port_variant = port; @@ -56,8 +58,6 @@ TEST_CASE("SocketModule", "[language]") IBuiltinFunctionEmbedder& function_embedder = *i_function->second; DataVariant result_variant = function_embedder.apply({hostname_variant, port_variant}); - REQUIRE_NOTHROW(dynamic_cast<const DataHandler<const Socket>&>(std::get<EmbeddedData>(result_variant).get())); - return dynamic_cast<const DataHandler<const Socket>&>(std::get<EmbeddedData>(result_variant).get()).data_ptr(); }; -- GitLab