summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2020-03-11 09:37:32 +0000
committerSimon McVittie <smcv@debian.org>2020-03-11 09:38:17 +0000
commit03fe5483cb7527b3dd1036de991160fefe9b2790 (patch)
treea85b5357c795852463ee30808b2b483f0db4919b
parent3058a0ed3aaf0a54058a96f884b0a73b0cc578a8 (diff)
downloadlibsoup-wip/smcv/skip-apache.tar.gz
tests: Skip tests if unable to start Apachewip/smcv/skip-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. Mitigates: GNOME/libsoup#175
-rw-r--r--tests/pull-api-test.c10
-rw-r--r--tests/test-utils.c26
-rw-r--r--tests/test-utils.h12
-rw-r--r--tests/xmlrpc-old-test.c10
-rw-r--r--tests/xmlrpc-test.c10
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