Make these less verbose by default (to make it easier to see what failed
authorDan Winship <danw@src.gnome.org>
Sun, 28 Oct 2007 15:57:55 +0000 (15:57 +0000)
committerDan Winship <danw@src.gnome.org>
Sun, 28 Oct 2007 15:57:55 +0000 (15:57 +0000)
* tests/auth-test.c:
* tests/date.c:
* tests/header-parsing.c:
* tests/ntlm-test.c:
* tests/proxy-test.c:
* tests/uri-parsing.c:
* tests/xmlrpc-test.c: Make these less verbose by default (to make
it easier to see what failed when a "make check" fails).

svn path=/trunk/; revision=945

ChangeLog
tests/auth-test.c
tests/date.c
tests/header-parsing.c
tests/ntlm-test.c
tests/proxy-test.c
tests/uri-parsing.c
tests/xmlrpc-test.c

index 1aeffa1..2110d16 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2007-10-28  Dan Winship  <danw@gnome.org>
+
+       * tests/auth-test.c:
+       * tests/date.c:
+       * tests/header-parsing.c:
+       * tests/ntlm-test.c:
+       * tests/proxy-test.c:
+       * tests/uri-parsing.c:
+       * tests/xmlrpc-test.c: Make these less verbose by default (to make
+       it easier to see what failed when a "make check" fails).
+
 2007-10-15  Dan Winship  <danw@gnome.org>
 
        * configure.in: 2.2.102
index 40aa6b6..c977111 100644 (file)
@@ -2,20 +2,34 @@
 #include "config.h"
 #endif
 
+#include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 
 #include "libsoup/soup.h"
 #include "libsoup/soup-auth.h"
 #include "libsoup/soup-session.h"
 
-#ifdef HAVE_APACHE
 #include "apache-wrapper.h"
-#endif
 
 GMainLoop *loop;
 int errors = 0;
+gboolean debug = FALSE;
+
+static void
+dprintf (const char *format, ...)
+{
+       va_list args;
+
+       if (!debug)
+               return;
+
+       va_start (args, format);
+       vprintf (format, args);
+       va_end (args);
+}
 
 typedef struct {
        /* Explanation of what you should see */
@@ -202,18 +216,18 @@ handler (SoupMessage *msg, gpointer data)
 
        auth = identify_auth (msg);
 
-       printf ("  %d %s (using %s)\n", msg->status_code, msg->reason_phrase,
-               auths[auth]);
+       dprintf ("  %d %s (using %s)\n", msg->status_code, msg->reason_phrase,
+                auths[auth]);
 
        if (*expected) {
                exp = *expected - '0';
                if (auth != exp) {
-                       printf ("    expected %s!\n", auths[exp]);
+                       dprintf ("    expected %s!\n", auths[exp]);
                        errors++;
                }
                memmove (expected, expected + 1, strlen (expected));
        } else {
-               printf ("    expected to be finished\n");
+               dprintf ("    expected to be finished\n");
                errors++;
        }
 }
@@ -252,10 +266,10 @@ bug271540_sent (SoupMessage *msg, gpointer data)
        int auth = identify_auth (msg);
 
        if (!*authenticated && auth) {
-               printf ("    using auth on message %d before authenticating!!??\n", n);
+               dprintf ("    using auth on message %d before authenticating!!??\n", n);
                errors++;
        } else if (*authenticated && !auth) {
-               printf ("    sent unauthenticated message %d after authenticating!\n", n);
+               dprintf ("    sent unauthenticated message %d after authenticating!\n", n);
                errors++;
        }
 }
@@ -273,12 +287,12 @@ bug271540_authenticate (SoupSession *session, SoupMessage *msg,
                return;
 
        if (!*authenticated) {
-               printf ("    authenticating message %d\n", n);
+               dprintf ("    authenticating message %d\n", n);
                *username = g_strdup ("user1");
                *password = g_strdup ("realm1");
                *authenticated = TRUE;
        } else {
-               printf ("    asked to authenticate message %d after authenticating!\n", n);
+               dprintf ("    asked to authenticate message %d after authenticating!\n", n);
                errors++;
        }
 }
@@ -290,7 +304,7 @@ bug271540_finished (SoupMessage *msg, gpointer data)
        int n = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (msg), "#"));
 
        if (!SOUP_STATUS_IS_SUCCESSFUL (msg->status_code)) {
-               printf ("      got status '%d %s' on message %d!\n",
+               dprintf ("      got status '%d %s' on message %d!\n",
                        msg->status_code, msg->reason_phrase, n);
                errors++;
        }
@@ -307,34 +321,27 @@ main (int argc, char **argv)
        SoupMessage *msg;
        char *base_uri, *uri, *expected;
        gboolean authenticated;
-#ifdef HAVE_APACHE
-       gboolean using_apache = FALSE;
-#endif
-       int i;
+       int i, opt;
 
        g_type_init ();
        g_thread_init (NULL);
 
-       if (argc != 1) {
-               char *p;
-
-               base_uri = argv[0];
-               p = strrchr (base_uri, '/');
-               if (!p || p[1])
-                       base_uri = g_strdup_printf ("%s/", base_uri);
-       } else {
-#ifdef HAVE_APACHE
-               if (!apache_init ()) {
-                       fprintf (stderr, "Could not start apache\n");
+       while ((opt = getopt (argc, argv, "d")) != -1) {
+               switch (opt) {
+               case 'd':
+                       debug = TRUE;
+                       break;
+               default:
+                       fprintf (stderr, "Usage: %s [-d]\n", argv[0]);
                        return 1;
                }
-               base_uri = "http://localhost:47524/";
-               using_apache = TRUE;
-#else
-               fprintf (stderr, "Must specify base_uri for tests if configured --without-apache\n");
+       }
+
+       if (!apache_init ()) {
+               fprintf (stderr, "Could not start apache\n");
                return 1;
-#endif
        }
+       base_uri = "http://localhost:47524/";
 
        session = soup_session_async_new ();
        g_signal_connect (session, "authenticate",
@@ -343,10 +350,10 @@ main (int argc, char **argv)
                          G_CALLBACK (reauthenticate), &i);
 
        for (i = 0; i < ntests; i++) {
-               printf ("Test %d: %s\n", i + 1, tests[i].explanation);
+               dprintf ("Test %d: %s\n", i + 1, tests[i].explanation);
 
                uri = g_strconcat (base_uri, tests[i].url, NULL);
-               printf ("  GET %s\n", uri);
+               dprintf ("  GET %s\n", uri);
 
                msg = soup_message_new (SOUP_METHOD_GET, uri);
                g_free (uri);
@@ -365,21 +372,21 @@ main (int argc, char **argv)
                soup_session_send_message (session, msg);
                if (msg->status_code != SOUP_STATUS_UNAUTHORIZED &&
                    msg->status_code != SOUP_STATUS_OK) {
-                       printf ("  %d %s !\n", msg->status_code,
+                       dprintf ("  %d %s !\n", msg->status_code,
                                msg->reason_phrase);
                        errors++;
                }
                if (*expected) {
-                       printf ("  expected %d more round(s)\n",
+                       dprintf ("  expected %d more round(s)\n",
                                (int)strlen (expected));
                        errors++;
                }
                g_free (expected);
 
                if (msg->status_code != tests[i].final_status)
-                       printf ("  expected %d\n", tests[i].final_status);
+                       dprintf ("  expected %d\n", tests[i].final_status);
 
-               printf ("\n");
+               dprintf ("\n");
 
                g_object_unref (msg);
        }
@@ -387,7 +394,7 @@ main (int argc, char **argv)
 
        /* And now for a regression test */
 
-       printf ("Regression test for bug 271540:\n");
+       dprintf ("Regression test for bug 271540:\n");
        session = soup_session_async_new ();
 
        authenticated = FALSE;
@@ -410,11 +417,13 @@ main (int argc, char **argv)
 
        g_object_unref (session);
 
-#ifdef HAVE_APACHE
-       if (using_apache)
-               apache_cleanup ();
-#endif
+       apache_cleanup ();
 
-       printf ("\nauth-test: %d errors\n", errors);
+       dprintf ("\n");
+       if (errors) {
+               printf ("auth-test: %d error(s). Run with '-d' for details\n",
+                       errors);
+       } else
+               printf ("auth-test: OK\n");
        return errors;
 }
index a5d26dc..87cf69a 100644 (file)
@@ -54,8 +54,8 @@ main (int argc, char **argv)
        }
 
        if (errors == 0)
-               printf ("OK\n");
+               printf ("date: OK\n");
        else
-               fprintf (stderr, "%d errors\n", errors);
+               fprintf (stderr, "date: %d errors\n", errors);
        return errors;
 }
index af4a1ec..6a11e33 100644 (file)
@@ -2,10 +2,26 @@
 
 #include <stdio.h>
 #include <string.h>
+#include <unistd.h>
 
 #include "libsoup/soup-message.h"
 #include "libsoup/soup-headers.h"
 
+gboolean debug = FALSE;
+
+static void
+dprintf (const char *format, ...)
+{
+       va_list args;
+
+       if (!debug)
+               return;
+
+       va_start (args, format);
+       vprintf (format, args);
+       va_end (args);
+}
+
 struct RequestTest {
        char *description;
        char *request;
@@ -439,8 +455,8 @@ static void
 print_header (gpointer key, gpointer value, gpointer data)
 {
        GSList *values = value;
-       printf ("              '%s': '%s'\n",
-               (char *)key, (char*)values->data);
+       dprintf ("              '%s': '%s'\n",
+                (char *)key, (char*)values->data);
 }
 
 static void
@@ -464,12 +480,12 @@ do_request_tests (void)
        SoupHttpVersion version;
        GHashTable *headers;
 
-       printf ("Request tests\n");
+       dprintf ("Request tests\n");
        for (i = 0; i < num_reqtests; i++) {
                gboolean ok = TRUE;
 
-               printf ("%2d. %s (%s): ", i + 1, reqtests[i].description,
-                       reqtests[i].method ? "should parse" : "should NOT parse");
+               dprintf ("%2d. %s (%s): ", i + 1, reqtests[i].description,
+                        reqtests[i].method ? "should parse" : "should NOT parse");
 
                headers = g_hash_table_new_full (g_str_hash, g_str_equal,
                                                 g_free, free_headers);
@@ -503,34 +519,34 @@ do_request_tests (void)
                }
 
                if (ok)
-                       printf ("OK!\n");
+                       dprintf ("OK!\n");
                else {
-                       printf ("BAD!\n");
+                       dprintf ("BAD!\n");
                        errors++;
                        if (reqtests[i].method) {
-                               printf ("    expected: '%s' '%s' 'HTTP/1.%d'\n",
-                                       reqtests[i].method, reqtests[i].path,
-                                       reqtests[i].version);
+                               dprintf ("    expected: '%s' '%s' 'HTTP/1.%d'\n",
+                                        reqtests[i].method, reqtests[i].path,
+                                        reqtests[i].version);
                                for (h = 0; reqtests[i].headers[h].name; h++) {
-                                       printf ("              '%s': '%s'\n",
-                                               reqtests[i].headers[h].name,
-                                               reqtests[i].headers[h].value);
+                                       dprintf ("              '%s': '%s'\n",
+                                                reqtests[i].headers[h].name,
+                                                reqtests[i].headers[h].value);
                                }
                        } else
-                               printf ("    expected: parse error\n");
+                               dprintf ("    expected: parse error\n");
                        if (method) {
-                               printf ("         got: '%s' '%s' 'HTTP/1.%d'\n",
+                               dprintf ("         got: '%s' '%s' 'HTTP/1.%d'\n",
                                        method, path, version);
                                g_hash_table_foreach (headers, print_header, NULL);
                        } else
-                               printf ("         got: parse error\n");
+                               dprintf ("         got: parse error\n");
                }
 
                g_free (method);
                g_free (path);
                g_hash_table_destroy (headers);
        }
-       printf ("\n");
+       dprintf ("\n");
 
        return errors;
 }
@@ -545,12 +561,12 @@ do_response_tests (void)
        SoupHttpVersion version;
        GHashTable *headers;
 
-       printf ("Response tests\n");
+       dprintf ("Response tests\n");
        for (i = 0; i < num_resptests; i++) {
                gboolean ok = TRUE;
 
-               printf ("%2d. %s (%s): ", i + 1, resptests[i].description,
-                       resptests[i].reason_phrase ? "should parse" : "should NOT parse");
+               dprintf ("%2d. %s (%s): ", i + 1, resptests[i].description,
+                        resptests[i].reason_phrase ? "should parse" : "should NOT parse");
 
                headers = g_hash_table_new_full (g_str_hash, g_str_equal,
                                                 g_free, free_headers);
@@ -584,34 +600,34 @@ do_response_tests (void)
                }
 
                if (ok)
-                       printf ("OK!\n");
+                       dprintf ("OK!\n");
                else {
-                       printf ("BAD!\n");
+                       dprintf ("BAD!\n");
                        errors++;
                        if (resptests[i].reason_phrase) {
-                               printf ("    expected: 'HTTP/1.%d' '%03d' '%s'\n",
-                                       resptests[i].version,
-                                       resptests[i].status_code,
-                                       resptests[i].reason_phrase);
+                               dprintf ("    expected: 'HTTP/1.%d' '%03d' '%s'\n",
+                                        resptests[i].version,
+                                        resptests[i].status_code,
+                                        resptests[i].reason_phrase);
                                for (h = 0; resptests[i].headers[h].name; h++) {
-                                       printf ("              '%s': '%s'\n",
-                                               resptests[i].headers[h].name,
-                                               resptests[i].headers[h].value);
+                                       dprintf ("              '%s': '%s'\n",
+                                                resptests[i].headers[h].name,
+                                                resptests[i].headers[h].value);
                                }
                        } else
-                               printf ("    expected: parse error\n");
+                               dprintf ("    expected: parse error\n");
                        if (reason_phrase) {
-                               printf ("         got: 'HTTP/1.%d' '%03d' '%s'\n",
-                                       version, status_code, reason_phrase);
+                               dprintf ("         got: 'HTTP/1.%d' '%03d' '%s'\n",
+                                        version, status_code, reason_phrase);
                                g_hash_table_foreach (headers, print_header, NULL);
                        } else
-                               printf ("         got: parse error\n");
+                               dprintf ("         got: parse error\n");
                }
 
                g_free (reason_phrase);
                g_hash_table_destroy (headers);
        }
-       printf ("\n");
+       dprintf ("\n");
 
        return errors;
 }
@@ -619,11 +635,27 @@ do_response_tests (void)
 int
 main (int argc, char **argv)
 {
-       int errors;
+       int opt, errors;
+
+       while ((opt = getopt (argc, argv, "d")) != -1) {
+               switch (opt) {
+               case 'd':
+                       debug = TRUE;
+                       break;
+               default:
+                       fprintf (stderr, "Usage: %s [-d]\n", argv[0]);
+                       return 1;
+               }
+       }
 
        errors = do_request_tests ();
        errors += do_response_tests ();
 
-       printf ("%d errors\n", errors);
+       dprintf ("\n");
+       if (errors) {
+               printf ("header-parsing: %d error(s). Run with '-d' for details\n",
+                       errors);
+       } else
+               printf ("header-parsing: OK\n");
        return errors;
 }
index 09e7a1f..57372af 100644 (file)
 #include <libsoup/soup-server-message.h>
 #include <libsoup/soup-session-async.h>
 
+gboolean debug = FALSE;
+
+static void
+dprintf (const char *format, ...)
+{
+       va_list args;
+
+       if (!debug)
+               return;
+
+       va_start (args, format);
+       vprintf (format, args);
+       va_end (args);
+}
+
 typedef enum {
        NTLM_UNAUTHENTICATED,
        NTLM_RECEIVED_REQUEST,
@@ -204,58 +219,58 @@ do_message (SoupSession *session, SoupUri *base_uri, const char *path,
                          G_CALLBACK (ntlm_response_check), &state);
 
        soup_session_send_message (session, msg);
-       printf ("  %-10s -> ", path);
+       dprintf ("  %-10s -> ", path);
 
        if (state.got_prompt) {
-               printf (" PROMPT");
+               dprintf (" PROMPT");
                if (!get_prompt) {
-                       printf ("???");
+                       dprintf ("???");
                        errors++;
                }
        } else if (get_prompt) {
-               printf (" no-prompt???");
+               dprintf (" no-prompt???");
                errors++;
        }
 
        if (state.sent_request) {
-               printf (" REQUEST");
+               dprintf (" REQUEST");
                if (!do_ntlm) {
-                       printf ("???");
+                       dprintf ("???");
                        errors++;
                }
        } else if (do_ntlm) {
-               printf (" no-request???");
+               dprintf (" no-request???");
                errors++;
        }
 
        if (state.got_challenge) {
-               printf (" CHALLENGE");
+               dprintf (" CHALLENGE");
                if (!do_ntlm) {
-                       printf ("???");
+                       dprintf ("???");
                        errors++;
                }
        } else if (do_ntlm) {
-               printf (" no-challenge???");
+               dprintf (" no-challenge???");
                errors++;
        }
 
        if (state.sent_response) {
-               printf (" RESPONSE");
+               dprintf (" RESPONSE");
                if (!do_ntlm) {
-                       printf ("???");
+                       dprintf ("???");
                        errors++;
                }
        } else if (do_ntlm) {
-               printf (" no-response???");
+               dprintf (" no-response???");
                errors++;
        }
 
-       printf (" -> %s", msg->reason_phrase);
+       dprintf (" -> %s", msg->reason_phrase);
        if (msg->status_code != status_code) {
-               printf ("???");
+               dprintf ("???");
                errors++;
        }
-       printf ("\n");
+       dprintf ("\n");
 
        return errors;
 }
@@ -311,11 +326,11 @@ do_ntlm_tests (SoupUri *base_uri)
 {
        int errors = 0;
 
-       printf ("Round 1: Non-NTLM Connection\n");
+       dprintf ("Round 1: Non-NTLM Connection\n");
        errors += do_ntlm_round (base_uri, NULL);
-       printf ("Round 2: NTLM Connection, user=alice\n");
+       dprintf ("Round 2: NTLM Connection, user=alice\n");
        errors += do_ntlm_round (base_uri, "alice");
-       printf ("Round 3: NTLM Connection, user=bob\n");
+       dprintf ("Round 3: NTLM Connection, user=bob\n");
        errors += do_ntlm_round (base_uri, "bob");
 
        return errors;
@@ -334,7 +349,6 @@ main (int argc, char **argv)
        GMainLoop *loop;
        SoupServer *server;
        int opt;
-       int port = SOUP_ADDRESS_ANY_PORT;
        GHashTable *connections;
        SoupUri *uri;
        int errors;
@@ -343,13 +357,13 @@ main (int argc, char **argv)
        g_thread_init (NULL);
        signal (SIGINT, quit);
 
-       while ((opt = getopt (argc, argv, "p:")) != -1) {
+       while ((opt = getopt (argc, argv, "d")) != -1) {
                switch (opt) {
-               case 'p':
-                       port = atoi (optarg);
+               case 'd':
+                       debug = TRUE;
                        break;
                default:
-                       fprintf (stderr, "Usage: %s [-p port]\n",
+                       fprintf (stderr, "Usage: %s [-d]\n",
                                 argv[0]);
                        exit (1);
                }
@@ -357,10 +371,10 @@ main (int argc, char **argv)
 
        connections = g_hash_table_new (NULL, NULL);
 
-       server = soup_server_new (SOUP_SERVER_PORT, port,
+       server = soup_server_new (SOUP_SERVER_PORT, 0,
                                  NULL);
        if (!server) {
-               fprintf (stderr, "Unable to bind to server port %d\n", port);
+               fprintf (stderr, "Unable to bind server\n");
                exit (1);
        }
        soup_server_add_handler (server, NULL, NULL,
@@ -375,6 +389,11 @@ main (int argc, char **argv)
        uri->port = soup_server_get_port (server);
        errors = do_ntlm_tests (uri);
 
-       printf ("\n%d errors\n", errors);
+       dprintf ("\n");
+       if (errors) {
+               printf ("ntlm-test: %d error(s). Run with '-d' for details\n",
+                       errors);
+       } else
+               printf ("ntlm-test: OK\n");
        return errors != 0;
 }
index 1478797..b8b3e23 100644 (file)
@@ -5,11 +5,26 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 
 #include "libsoup/soup.h"
 #include "apache-wrapper.h"
 
 int errors = 0;
+gboolean debug = FALSE;
+
+static void
+dprintf (const char *format, ...)
+{
+       va_list args;
+
+       if (!debug)
+               return;
+
+       va_start (args, format);
+       vprintf (format, args);
+       va_end (args);
+}
 
 typedef struct {
        const char *explanation;
@@ -61,7 +76,7 @@ test_url (const char *url, int proxy, guint expected, gboolean sync)
        SoupUri *proxy_uri;
        SoupMessage *msg;
 
-       printf ("  GET %s via %s\n", url, proxy_names[proxy]);
+       dprintf ("  GET %s via %s\n", url, proxy_names[proxy]);
        if (proxy == UNAUTH_PROXY && expected != SOUP_STATUS_FORBIDDEN)
                expected = SOUP_STATUS_PROXY_UNAUTHORIZED;
 
@@ -84,9 +99,9 @@ test_url (const char *url, int proxy, guint expected, gboolean sync)
 
        soup_session_send_message (session, msg);
 
-       printf ("  %d %s\n", msg->status_code, msg->reason_phrase);
+       dprintf ("  %d %s\n", msg->status_code, msg->reason_phrase);
        if (msg->status_code != expected) {
-               printf ("  EXPECTED %d!\n", expected);
+               dprintf ("  EXPECTED %d!\n", expected);
                errors++;
        }
 
@@ -100,8 +115,8 @@ run_test (int i, gboolean sync)
 {
        char *http_url, *https_url;
 
-       printf ("Test %d: %s (%s)\n", i + 1, tests[i].explanation,
-               sync ? "sync" : "async");
+       dprintf ("Test %d: %s (%s)\n", i + 1, tests[i].explanation,
+                sync ? "sync" : "async");
 
        if (!strncmp (tests[i].url, "http", 4)) {
                http_url = g_strdup (tests[i].url);
@@ -126,17 +141,28 @@ run_test (int i, gboolean sync)
        g_free (http_url);
        g_free (https_url);
 
-       printf ("\n");
+       dprintf ("\n");
 }
 
 int
 main (int argc, char **argv)
 {
-       int i;
+       int i, opt;
 
        g_type_init ();
        g_thread_init (NULL);
 
+       while ((opt = getopt (argc, argv, "d")) != -1) {
+               switch (opt) {
+               case 'd':
+                       debug = TRUE;
+                       break;
+               default:
+                       fprintf (stderr, "Usage: %s [-d]\n", argv[0]);
+                       return 1;
+               }
+       }
+
        if (!apache_init ()) {
                fprintf (stderr, "Could not start apache\n");
                return 1;
@@ -149,6 +175,11 @@ main (int argc, char **argv)
 
        apache_cleanup ();
 
-       printf ("proxy-test: %d errors\n", errors);
+       dprintf ("\n");
+       if (errors) {
+               printf ("proxy-test: %d error(s). Run with '-d' for details\n",
+                       errors);
+       } else
+               printf ("proxy-test: OK\n");
        return errors;
 }
index 7ae3fbc..3073be2 100644 (file)
@@ -4,8 +4,24 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 #include "libsoup/soup-uri.h"
 
+gboolean debug = FALSE;
+
+static void
+dprintf (const char *format, ...)
+{
+       va_list args;
+
+       if (!debug)
+               return;
+
+       va_start (args, format);
+       vprintf (format, args);
+       va_end (args);
+}
+
 struct {
        const char *uri_string, *result;
 } abs_tests[] = {
@@ -97,21 +113,21 @@ do_uri (SoupUri *base_uri, const char *base_str,
        char *uri_string;
 
        if (base_uri) {
-               printf ("<%s> + <%s> = <%s>? ", base_str, in_uri,
-                       out_uri ? out_uri : "ERR");
+               dprintf ("<%s> + <%s> = <%s>? ", base_str, in_uri,
+                        out_uri ? out_uri : "ERR");
                uri = soup_uri_new_with_base (base_uri, in_uri);
        } else {
-               printf ("<%s> => <%s>? ", in_uri,
-                       out_uri ? out_uri : "ERR");
+               dprintf ("<%s> => <%s>? ", in_uri,
+                        out_uri ? out_uri : "ERR");
                uri = soup_uri_new (in_uri);
        }
 
        if (!uri) {
                if (out_uri) {
-                       printf ("ERR\n  Could not parse %s\n", in_uri);
+                       dprintf ("ERR\n  Could not parse %s\n", in_uri);
                        return FALSE;
                } else {
-                       printf ("OK\n");
+                       dprintf ("OK\n");
                        return TRUE;
                }
        }
@@ -120,18 +136,18 @@ do_uri (SoupUri *base_uri, const char *base_str,
        soup_uri_free (uri);
 
        if (!out_uri) {
-               printf ("ERR\n  Got %s\n", uri_string);
+               dprintf ("ERR\n  Got %s\n", uri_string);
                return FALSE;
        }
 
        if (strcmp (uri_string, out_uri) != 0) {
-               printf ("NO\n  Unparses to <%s>\n", uri_string);
+               dprintf ("NO\n  Unparses to <%s>\n", uri_string);
                g_free (uri_string);
                return FALSE;
        }
        g_free (uri_string);
 
-       printf ("OK\n");
+       dprintf ("OK\n");
        return TRUE;
 }
 
@@ -140,16 +156,27 @@ main (int argc, char **argv)
 {
        SoupUri *base_uri;
        char *uri_string;
-       int i, errs = 0;
+       int i, errs = 0, opt;
+
+       while ((opt = getopt (argc, argv, "d")) != -1) {
+               switch (opt) {
+               case 'd':
+                       debug = TRUE;
+                       break;
+               default:
+                       fprintf (stderr, "Usage: %s [-d]\n", argv[0]);
+                       return 1;
+               }
+       }
 
-       printf ("Absolute URI parsing\n");
+       dprintf ("Absolute URI parsing\n");
        for (i = 0; i < num_abs_tests; i++) {
                if (!do_uri (NULL, NULL, abs_tests[i].uri_string,
                             abs_tests[i].result))
                        errs++;
        }
 
-       printf ("\nRelative URI parsing\n");
+       dprintf ("\nRelative URI parsing\n");
        base_uri = soup_uri_new (base);
        if (!base_uri) {
                fprintf (stderr, "Could not parse %s!\n", base);
@@ -170,6 +197,11 @@ main (int argc, char **argv)
                        errs++;
        }
 
-       printf ("\n%d errors\n", errs);
+       dprintf ("\n");
+       if (errs) {
+               printf ("uri-parsing: %d error(s). Run with '-d' for details\n",
+                       errs);
+       } else
+               printf ("uri-parsing: OK\n");
        return errs;
 }
index 2a80f06..7ccfac4 100644 (file)
@@ -18,6 +18,19 @@ SoupSession *session;
 static const char *uri = "http://localhost:47524/xmlrpc-server.php";
 int debug;
 
+static void
+dprintf (int level, const char *format, ...)
+{
+       va_list args;
+
+       if (debug < level)
+               return;
+
+       va_start (args, format);
+       vprintf (format, args);
+       va_end (args);
+}
+
 static const char *const value_type[] = {
        "BAD",
        "int",
@@ -41,34 +54,32 @@ do_xmlrpc (SoupXmlrpcMessage *xmsg, SoupXmlrpcValueType type)
        soup_xmlrpc_message_persist (xmsg);
        status = soup_session_send_message (session, msg);
 
-       if (debug > 1) {
-               printf ("\n%.*s\n%d %s\n%.*s\n",
-                       msg->request.length, msg->request.body,
-                       msg->status_code, msg->reason_phrase,
-                       msg->response.length, msg->response.body);
-       }
+       dprintf (3, "\n%.*s\n%d %s\n%.*s\n",
+                msg->request.length, msg->request.body,
+                msg->status_code, msg->reason_phrase,
+                msg->response.length, msg->response.body);
 
        if (!SOUP_STATUS_IS_SUCCESSFUL (status)) {
-               printf ("ERROR: %d %s\n", status, msg->reason_phrase);
+               dprintf (1, "ERROR: %d %s\n", status, msg->reason_phrase);
                return FALSE;
        }
 
        response = soup_xmlrpc_message_parse_response (xmsg);
        if (!response || soup_xmlrpc_response_is_fault (response)) {
                if (!response)
-                       printf ("ERROR: no response\n");
+                       dprintf (1, "ERROR: no response\n");
                else
-                       printf ("ERROR: fault\n");
+                       dprintf (1, "ERROR: fault\n");
                return FALSE;
        }
 
        value = soup_xmlrpc_response_get_value (response);
        if (!value) {
-               printf ("ERROR: no value?\n");
+               dprintf (1, "ERROR: no value?\n");
                return NULL;
        } else if (soup_xmlrpc_value_get_type (value) != type) {
-               printf ("ERROR: wrong value type; expected %s, got %s\n",
-                       value_type[type], value_type[soup_xmlrpc_value_get_type (value)]);
+               dprintf (1, "ERROR: wrong value type; expected %s, got %s\n",
+                        value_type[type], value_type[soup_xmlrpc_value_get_type (value)]);
                return NULL;
        }
 
@@ -83,7 +94,7 @@ test_sum (void)
        int i, val, sum;
        long result;
 
-       printf ("sum (array of int -> int): ");
+       dprintf (1, "sum (array of int -> int): ");
 
        msg = soup_xmlrpc_message_new (uri);
        soup_xmlrpc_message_start_call (msg, "sum");
@@ -91,13 +102,11 @@ test_sum (void)
        soup_xmlrpc_message_start_array (msg);
        for (i = sum = 0; i < 10; i++) {
                val = rand () % 100;
-               if (debug)
-                       printf ("%s%d", i == 0 ? "[" : ", ", val);
+               dprintf (2, "%s%d", i == 0 ? "[" : ", ", val);
                soup_xmlrpc_message_write_int (msg, val);
                sum += val;
        }
-       if (debug)
-               printf ("] -> ");
+       dprintf (2, "] -> ");
        soup_xmlrpc_message_end_array (msg);
        soup_xmlrpc_message_end_param (msg);
        soup_xmlrpc_message_end_call (msg);
@@ -107,13 +116,12 @@ test_sum (void)
                return FALSE;
 
        if (!soup_xmlrpc_value_get_int (value, &result)) {
-               printf ("wrong type?\n");
+               dprintf (1, "wrong type?\n");
                return FALSE;
        }
 
-       if (debug)
-               printf ("%ld: ", result);
-       printf ("%s\n", result == sum ? "OK!" : "WRONG!");
+       dprintf (2, "%ld: ", result);
+       dprintf (1, "%s\n", result == sum ? "OK!" : "WRONG!");
        return result == sum;
 }
 
@@ -127,7 +135,7 @@ test_countBools (void)
        gboolean val, ok;
        GHashTable *result;
 
-       printf ("countBools (array of boolean -> struct of ints): ");
+       dprintf (1, "countBools (array of boolean -> struct of ints): ");
 
        msg = soup_xmlrpc_message_new (uri);
        soup_xmlrpc_message_start_call (msg, "countBools");
@@ -135,16 +143,14 @@ test_countBools (void)
        soup_xmlrpc_message_start_array (msg);
        for (i = trues = falses = 0; i < 10; i++) {
                val = rand () > (RAND_MAX / 2);
-               if (debug)
-                       printf ("%s%c", i == 0 ? "[" : ", ", val ? 'T' : 'F');
+               dprintf (2, "%s%c", i == 0 ? "[" : ", ", val ? 'T' : 'F');
                soup_xmlrpc_message_write_boolean (msg, val);
                if (val)
                        trues++;
                else
                        falses++;
        }
-       if (debug)
-               printf ("] -> ");
+       dprintf (2, "] -> ");
        soup_xmlrpc_message_end_array (msg);
        soup_xmlrpc_message_end_param (msg);
        soup_xmlrpc_message_end_call (msg);
@@ -154,23 +160,22 @@ test_countBools (void)
                return FALSE;
 
        if (!soup_xmlrpc_value_get_struct (value, &result)) {
-               printf ("wrong type?\n");
+               dprintf (1, "wrong type?\n");
                return FALSE;
        }
 
        if (!soup_xmlrpc_value_get_int (g_hash_table_lookup (result, "true"), &ret_trues)) {
-               printf ("NO 'true' value in response\n");
+               dprintf (1, "NO 'true' value in response\n");
                return FALSE;
        }
        if (!soup_xmlrpc_value_get_int (g_hash_table_lookup (result, "false"), &ret_falses)) {
-               printf ("NO 'false' value in response\n");
+               dprintf (1, "NO 'false' value in response\n");
                return FALSE;
        }
 
-       if (debug)
-               printf ("{ true: %ld, false: %ld } ", ret_trues, ret_falses);
+       dprintf (2, "{ true: %ld, false: %ld } ", ret_trues, ret_falses);
        ok = (trues == ret_trues) && (falses == ret_falses);
-       printf ("%s\n", ok ? "OK!" : "WRONG!");
+       dprintf (1, "%s\n", ok ? "OK!" : "WRONG!");
        return ok;
 }
 
@@ -186,7 +191,7 @@ test_md5sum (void)
        guchar digest[16];
        gboolean ok;
 
-       printf ("md5sum (base64 -> base64): ");
+       dprintf (1, "md5sum (base64 -> base64): ");
 
        msg = soup_xmlrpc_message_new (uri);
        soup_xmlrpc_message_start_call (msg, "md5sum");
@@ -202,12 +207,12 @@ test_md5sum (void)
                return FALSE;
 
        if (!soup_xmlrpc_value_get_base64 (value, &result)) {
-               printf ("wrong type?\n");
+               dprintf (1, "wrong type?\n");
                return FALSE;
        }
 
        if (result->len != 16) {
-               printf ("result has WRONG length (%d)\n", result->len);
+               dprintf (1, "result has WRONG length (%d)\n", result->len);
                g_byte_array_free (result, TRUE);
                return FALSE;
        }
@@ -217,7 +222,7 @@ test_md5sum (void)
        soup_md5_final (&md5, digest);
 
        ok = (memcmp (digest, result->data, 16) == 0);
-       printf ("%s\n", ok ? "OK!" : "WRONG!");
+       dprintf (1, "%s\n", ok ? "OK!" : "WRONG!");
        g_byte_array_free (result, TRUE);
        return ok;
 }
@@ -231,7 +236,7 @@ test_dateChange (void)
        time_t when, result;
        char timestamp[128];
 
-       printf ("dateChange (struct of time and ints -> time): ");
+       dprintf (1, "dateChange (struct of time and ints -> time): ");
 
        msg = soup_xmlrpc_message_new (uri);
        soup_xmlrpc_message_start_call (msg, "dateChange");
@@ -250,64 +255,55 @@ test_dateChange (void)
        soup_xmlrpc_message_write_datetime (msg, when);
        soup_xmlrpc_message_end_member (msg);
 
-       if (debug) {
-               strftime (timestamp, sizeof (timestamp),
-                         "%Y-%m-%dT%H:%M:%S", &tm);
-               printf ("{ date: %s", timestamp);
-       }
+       strftime (timestamp, sizeof (timestamp),
+                 "%Y-%m-%dT%H:%M:%S", &tm);
+       dprintf (2, "{ date: %s", timestamp);
 
        if (rand () % 3) {
                tm.tm_year = 70 + (rand () % 50);
-               if (debug)
-                       printf (", tm_year: %d", tm.tm_year);
+               dprintf (2, ", tm_year: %d", tm.tm_year);
                soup_xmlrpc_message_start_member (msg, "tm_year");
                soup_xmlrpc_message_write_int (msg, tm.tm_year);
                soup_xmlrpc_message_end_member (msg);
        }
        if (rand () % 3) {
                tm.tm_mon = rand () % 12;
-               if (debug)
-                       printf (", tm_mon: %d", tm.tm_mon);
+               dprintf (2, ", tm_mon: %d", tm.tm_mon);
                soup_xmlrpc_message_start_member (msg, "tm_mon");
                soup_xmlrpc_message_write_int (msg, tm.tm_mon);
                soup_xmlrpc_message_end_member (msg);
        }
        if (rand () % 3) {
                tm.tm_mday = 1 + (rand () % 28);
-               if (debug)
-                       printf (", tm_mday: %d", tm.tm_mday);
+               dprintf (2, ", tm_mday: %d", tm.tm_mday);
                soup_xmlrpc_message_start_member (msg, "tm_mday");
                soup_xmlrpc_message_write_int (msg, tm.tm_mday);
                soup_xmlrpc_message_end_member (msg);
        }
        if (rand () % 3) {
                tm.tm_hour = rand () % 24;
-               if (debug)
-                       printf (", tm_hour: %d", tm.tm_hour);
+               dprintf (2, ", tm_hour: %d", tm.tm_hour);
                soup_xmlrpc_message_start_member (msg, "tm_hour");
                soup_xmlrpc_message_write_int (msg, tm.tm_hour);
                soup_xmlrpc_message_end_member (msg);
        }
        if (rand () % 3) {
                tm.tm_min = rand () % 60;
-               if (debug)
-                       printf (", tm_min: %d", tm.tm_min);
+               dprintf (2, ", tm_min: %d", tm.tm_min);
                soup_xmlrpc_message_start_member (msg, "tm_min");
                soup_xmlrpc_message_write_int (msg, tm.tm_min);
                soup_xmlrpc_message_end_member (msg);
        }
        if (rand () % 3) {
                tm.tm_sec = rand () % 60;
-               if (debug)
-                       printf (", tm_sec: %d", tm.tm_sec);
+               dprintf (2, ", tm_sec: %d", tm.tm_sec);
                soup_xmlrpc_message_start_member (msg, "tm_sec");
                soup_xmlrpc_message_write_int (msg, tm.tm_sec);
                soup_xmlrpc_message_end_member (msg);
        }
        when = soup_mktime_utc (&tm);
 
-       if (debug)
-               printf (" } -> ");
+       dprintf (2, " } -> ");
 
        soup_xmlrpc_message_end_struct (msg);
        soup_xmlrpc_message_end_param (msg);
@@ -318,19 +314,16 @@ test_dateChange (void)
                return FALSE;
 
        if (!soup_xmlrpc_value_get_datetime (value, &result)) {
-               printf ("wrong type?\n");
+               dprintf (1, "wrong type?\n");
                return FALSE;
        }
 
-       if (debug) {
-               memset (&tm, 0, sizeof (tm));
-               soup_gmtime (&result, &tm);
-               strftime (timestamp, sizeof (timestamp),
-                         "%Y-%m-%dT%H:%M:%S", &tm);
-               printf ("%s: ", timestamp);
-       }
+       memset (&tm, 0, sizeof (tm));
+       soup_gmtime (&result, &tm);
+       strftime (timestamp, sizeof (timestamp), "%Y-%m-%dT%H:%M:%S", &tm);
+       dprintf (2, "%s: ", timestamp);
 
-       printf ("%s\n", (when == result) ? "OK!" : "WRONG!");
+       dprintf (1, "%s\n", (when == result) ? "OK!" : "WRONG!");
        return (when == result);
 }
 
@@ -351,19 +344,17 @@ test_echo (void)
        char *echo;
        int i;
 
-       printf ("echo (array of string -> array of string): ");
+       dprintf (1, "echo (array of string -> array of string): ");
 
        msg = soup_xmlrpc_message_new (uri);
        soup_xmlrpc_message_start_call (msg, "echo");
        soup_xmlrpc_message_start_param (msg);
        soup_xmlrpc_message_start_array (msg);
        for (i = 0; i < N_ECHO_STRINGS; i++) {
-               if (debug)
-                       printf ("%s\"%s\"", i == 0 ? "[" : ", ", echo_strings[i]);
+               dprintf (2, "%s\"%s\"", i == 0 ? "[" : ", ", echo_strings[i]);
                soup_xmlrpc_message_write_string (msg, echo_strings[i]);
        }
-       if (debug)
-               printf ("] -> ");
+       dprintf (2, "] -> ");
        soup_xmlrpc_message_end_array (msg);
        soup_xmlrpc_message_end_param (msg);
        soup_xmlrpc_message_end_call (msg);
@@ -373,33 +364,31 @@ test_echo (void)
                return FALSE;
 
        if (!soup_xmlrpc_value_array_get_iterator (value, &iter)) {
-               printf ("wrong type?\n");
+               dprintf (1, "wrong type?\n");
                return FALSE;
        }
        i = 0;
        while (iter) {
                if (!soup_xmlrpc_value_array_iterator_get_value (iter, &elt)) {
-                       printf (" WRONG! Can't get result element %d\n", i + 1);
+                       dprintf (1, " WRONG! Can't get result element %d\n", i + 1);
                        return FALSE;
                }
                if (!soup_xmlrpc_value_get_string (elt, &echo)) {
-                       printf (" WRONG! Result element %d is not a string", i + 1);
+                       dprintf (1, " WRONG! Result element %d is not a string", i + 1);
                        return FALSE;
                }
-               if (debug)
-                       printf ("%s\"%s\"", i == 0 ? "[" : ", ", echo);
+               dprintf (2, "%s\"%s\"", i == 0 ? "[" : ", ", echo);
                if (strcmp (echo_strings[i], echo) != 0) {
-                       printf (" WRONG! Mismatch at %d\n", i + 1);
+                       dprintf (1, " WRONG! Mismatch at %d\n", i + 1);
                        return FALSE;
                }
 
                iter = soup_xmlrpc_value_array_iterator_next (iter);
                i++;
        }
-       if (debug)
-               printf ("] ");
+       dprintf (2, "] ");
 
-       printf ("%s\n", i == N_ECHO_STRINGS ? "OK!" : "WRONG! Too few results");
+       dprintf (1, "%s\n", i == N_ECHO_STRINGS ? "OK!" : "WRONG! Too few results");
        return i == N_ECHO_STRINGS;
 }
 
@@ -452,6 +441,11 @@ main (int argc, char **argv)
 
        apache_cleanup ();
 
-       printf ("\n%d errors\n", errors);
-       return errors > 0;
+       dprintf (1, "\n");
+       if (errors) {
+               printf ("xmlrpc-test: %d error(s). Run with '-d' for details\n",
+                       errors);
+       } else
+               printf ("xmlrpc-test: OK\n");
+       return errors;
 }