[libsoup/wip/smcv/skip-apache] tests: Skip tests if unable to start Apache



commit a48bc60664bab125d3fead9184c3df0dfc4a34d5
Author: Simon McVittie <smcv debian org>
Date:   Wed Mar 11 09:37:32 2020 +0000

    tests: Skip tests if unable to start Apache
    
    This is a workaround for Apache not always being able to bind to its
    hard-coded ports, which happens often enough to be a problem for Debian
    QA infrastructure, but not often enough to be able to debug it.

 tests/pull-api-test.c   | 10 +++++++---
 tests/test-utils.c      | 26 ++++++++++++++++++++++----
 tests/test-utils.h      | 12 +++++++++---
 tests/xmlrpc-old-test.c | 10 +++++++++-
 tests/xmlrpc-test.c     | 10 +++++++++-
 5 files changed, 56 insertions(+), 12 deletions(-)
---
diff --git a/tests/pull-api-test.c b/tests/pull-api-test.c
index 55503786..a4fb904c 100644
--- a/tests/pull-api-test.c
+++ b/tests/pull-api-test.c
@@ -511,11 +511,13 @@ main (int argc, char **argv)
        int ret;
 
        test_init (argc, argv, NULL);
-       apache_init ();
 
        base_uri = "http://127.0.0.1:47524/";;
+
 #ifdef HAVE_APACHE
-       get_correct_response (base_uri);
+       if (apache_init ()) {
+               get_correct_response (base_uri);
+       }
 #endif
 
        g_test_add_data_func ("/pull-api/async/fast", base_uri, do_fast_async_test);
@@ -525,7 +527,9 @@ main (int argc, char **argv)
        ret = g_test_run ();
 
 #ifdef HAVE_APACHE
-       soup_buffer_free (correct_response);
+       if (correct_response != NULL) {
+               soup_buffer_free (correct_response);
+       }
 #endif
 
        test_cleanup ();
diff --git a/tests/test-utils.c b/tests/test-utils.c
index 8b59a3dd..29154a29 100644
--- a/tests/test-utils.c
+++ b/tests/test-utils.c
@@ -133,6 +133,20 @@ debug_printf (int level, const char *format, ...)
 
 #ifdef HAVE_APACHE
 
+gboolean
+check_apache (void)
+{
+       if (g_getenv ("SOUP_TESTS_ALREADY_RUNNING_APACHE"))
+               return TRUE;
+
+       if (!apache_running) {
+               g_test_skip ("Failed to start apache");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
 static gboolean
 apache_cmd (const char *cmd)
 {
@@ -186,19 +200,23 @@ apache_cmd (const char *cmd)
        return ok;
 }
 
-void
+gboolean
 apache_init (void)
 {
        /* Set this environment variable if you are already running a
         * suitably-configured Apache server */
        if (g_getenv ("SOUP_TESTS_ALREADY_RUNNING_APACHE"))
-               return;
+               return TRUE;
 
        if (!apache_cmd ("start")) {
                g_printerr ("Could not start apache\n");
-               exit (1);
+               apache_running = FALSE;
+       }
+       else {
+               apache_running = TRUE;
        }
-       apache_running = TRUE;
+
+       return apache_running;
 }
 
 void
diff --git a/tests/test-utils.h b/tests/test-utils.h
index 0bc065fc..f26ec49b 100644
--- a/tests/test-utils.h
+++ b/tests/test-utils.h
@@ -29,11 +29,17 @@ void debug_printf (int level, const char *format, ...) G_GNUC_PRINTF (2, 3);
        } G_STMT_END
 
 #ifdef HAVE_APACHE
-void apache_init    (void);
+gboolean apache_init (void);
 void apache_cleanup (void);
-#define SOUP_TEST_SKIP_IF_NO_APACHE
+gboolean check_apache (void);
+#define SOUP_TEST_SKIP_IF_NO_APACHE                            \
+       G_STMT_START {                                          \
+               if (!check_apache ()) {                         \
+                       return;                                 \
+               }                                               \
+       } G_STMT_END
 #else
-#define apache_init()
+#define apache_init() FALSE
 #define apache_cleanup()
 #define SOUP_TEST_SKIP_IF_NO_APACHE                            \
        G_STMT_START {                                          \
diff --git a/tests/xmlrpc-old-test.c b/tests/xmlrpc-old-test.c
index ab7b34d3..28a744d4 100644
--- a/tests/xmlrpc-old-test.c
+++ b/tests/xmlrpc-old-test.c
@@ -15,7 +15,12 @@ static const char *uri = NULL;
 static gboolean server_test = FALSE;
 
 #ifdef HAVE_PHP_XMLRPC
-#define SOUP_TEST_SKIP_IF_NO_XMLRPC_SERVER
+#define SOUP_TEST_SKIP_IF_NO_XMLRPC_SERVER                             \
+       G_STMT_START {                                                  \
+               if (uri == default_uri) {                               \
+                       SOUP_TEST_SKIP_IF_NO_APACHE;                    \
+               }                                                       \
+       } G_STMT_END
 #else
 #define SOUP_TEST_SKIP_IF_NO_XMLRPC_SERVER                             \
        G_STMT_START {                                                  \
@@ -23,6 +28,9 @@ static gboolean server_test = FALSE;
                        g_test_skip ("php-xmlrpc is not available");    \
                        return;                                         \
                }                                                       \
+               if (uri == default_uri) {                               \
+                       SOUP_TEST_SKIP_IF_NO_APACHE;                    \
+               }                                                       \
        } G_STMT_END
 #endif
 
diff --git a/tests/xmlrpc-test.c b/tests/xmlrpc-test.c
index 8b1f9dab..839f54bc 100644
--- a/tests/xmlrpc-test.c
+++ b/tests/xmlrpc-test.c
@@ -12,7 +12,12 @@ static const char *uri = NULL;
 static gboolean server_test = FALSE;
 
 #ifdef HAVE_PHP_XMLRPC
-#define SOUP_TEST_SKIP_IF_NO_XMLRPC_SERVER
+#define SOUP_TEST_SKIP_IF_NO_XMLRPC_SERVER                             \
+       G_STMT_START {                                                  \
+               if (uri == default_uri) {                               \
+                       SOUP_TEST_SKIP_IF_NO_APACHE;                    \
+               }                                                       \
+       } G_STMT_END
 #else
 #define SOUP_TEST_SKIP_IF_NO_XMLRPC_SERVER                             \
        G_STMT_START {                                                  \
@@ -20,6 +25,9 @@ static gboolean server_test = FALSE;
                        g_test_skip ("php-xmlrpc is not available");    \
                        return;                                         \
                }                                                       \
+               if (uri == default_uri) {                               \
+                       SOUP_TEST_SKIP_IF_NO_APACHE;                    \
+               }                                                       \
        } G_STMT_END
 #endif
 


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