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