[glibmm/glibmm-2-66] tests/glibmm_tls_client: Skip test, if socket can't be connected



commit 95cc4aaf99d96c5bbde93ffd546ce064c0e22ef6
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date:   Mon Jan 25 13:33:56 2021 +0100

    tests/glibmm_tls_client: Skip test, if socket can't be connected
    
    This test sometimes fails in CI runs, probably for a reason that's out
    of glibmm's control.
    
    Gio::Socket::create() can throw an exception. Put it in a try block.
    See #84

 tests/giomm_tls_client/main.cc | 29 ++++++++++++++++++++++-------
 1 file changed, 22 insertions(+), 7 deletions(-)
---
diff --git a/tests/giomm_tls_client/main.cc b/tests/giomm_tls_client/main.cc
index 5f133253..e87437fd 100644
--- a/tests/giomm_tls_client/main.cc
+++ b/tests/giomm_tls_client/main.cc
@@ -76,20 +76,35 @@ main(int, char**)
   std::cout << "First address of test host is " << first_inet_address->to_string() << "."
             << std::endl;
 
-  auto socket = Gio::Socket::create(
-    first_inet_address->get_family(), Gio::SOCKET_TYPE_STREAM, Gio::SOCKET_PROTOCOL_TCP);
-
-  auto address = Gio::InetSocketAddress::create(first_inet_address, 443);
+  Glib::RefPtr<Gio::Socket> socket;
+  try
+  {
+    socket = Gio::Socket::create(
+      first_inet_address->get_family(), Gio::SOCKET_TYPE_STREAM, Gio::SOCKET_PROTOCOL_TCP);
+  }
+  catch (const Gio::Error& ex)
+  {
+    std::cout << "Could not create socket. Exception: " << ex.what() << std::endl;
+    return EXIT_FAILURE;
+  }
 
+  Glib::RefPtr<Gio::InetSocketAddress> address;
   try
   {
+    address = Gio::InetSocketAddress::create(first_inet_address, 443);
     socket->connect(address);
   }
   catch (const Gio::Error& ex)
   {
-    std::cout << "Could not connect socket to " << address->get_address()->to_string() << ":"
-              << address->get_port() << ". Exception: " << ex.what() << std::endl;
-    return EXIT_FAILURE;
+    if (!address)
+      std::cout << "Could not create socket address. Exception: " << ex.what() << std::endl;
+    else
+      std::cout << "Could not connect socket to " << address->get_address()->to_string() << ":"
+                << address->get_port() << ". Exception: " << ex.what() << std::endl;
+
+    // When running CI (continuous integration), socket->connect(address)
+    // sometimes fails. Skip this test.
+    return 77;
   }
 
   if (!socket->is_connected())


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]