summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2008-10-01 20:56:00 +0000
committerDan Winship <danw@src.gnome.org>2008-10-01 20:56:00 +0000
commitd8df89a421b7a64c303a2decd6176a14cf6840e3 (patch)
tree77e069e5f2a0cc3955f62dccdcaeadb6ada6b985
parent362b3b7b3cff2d5c781f389043ae862c4f35a134 (diff)
downloadlibsoup-d8df89a421b7a64c303a2decd6176a14cf6840e3.tar.gz
pull up xmlrpc-test php bug workaround from trunk
svn path=/branches/gnome-2-24/; revision=1174
-rw-r--r--ChangeLog12
-rw-r--r--tests/xmlrpc-server-test.c13
-rw-r--r--tests/xmlrpc-test.c30
3 files changed, 43 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index d462667e..b818e18c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2008-10-01 Dan Winship <danw@gnome.org>
+ * tests/xmlrpc-test.c (main): add a new -s flag to indicate that
+ it's being run from inside xmlrpc-server-test.
+ (test_echo): if we aren't running inside xmlrpc-server-test, and
+ the response strings don't match the request strings, then compare
+ them to echo_strings_broken instead; a bug in php-xmlrpc manifests
+ when using libxml2 >= 2.7.1, resulting in incorrect responses. :-/
+
+ * tests/xmlrpc-server-test.c (do_xmlrpc_tests): Pass -s to
+ xmlrpc-test
+
+2008-10-01 Dan Winship <danw@gnome.org>
+
* libsoup/soup-cookie-jar.c:
* libsoup/soup-cookie.c:
* libsoup/soup-cookie.h:
diff --git a/tests/xmlrpc-server-test.c b/tests/xmlrpc-server-test.c
index cad0a8eb..9c159b1f 100644
--- a/tests/xmlrpc-server-test.c
+++ b/tests/xmlrpc-server-test.c
@@ -262,7 +262,7 @@ xmlrpc_test_print (GIOChannel *io, GIOCondition cond, gpointer data)
static void
do_xmlrpc_tests (SoupURI *uri)
{
- char *argv[7];
+ char *argv[8];
int arg, out;
gboolean ok;
GPid pid;
@@ -270,19 +270,20 @@ do_xmlrpc_tests (SoupURI *uri)
GIOChannel *child_out;
argv[0] = "./xmlrpc-test";
- argv[1] = "-u";
- argv[2] = soup_uri_to_string (uri, FALSE);
+ argv[1] = "-s";
+ argv[2] = "-u";
+ argv[3] = soup_uri_to_string (uri, FALSE);
for (arg = 0; arg < debug_level && arg < 3; arg++)
- argv[arg + 3] = "-d";
- argv[arg + 3] = NULL;
+ argv[arg + 4] = "-d";
+ argv[arg + 4] = NULL;
ok = g_spawn_async_with_pipes (NULL, argv, NULL,
G_SPAWN_DO_NOT_REAP_CHILD,
NULL, NULL, &pid,
NULL, &out, NULL,
&error);
- g_free (argv[2]);
+ g_free (argv[3]);
if (!ok) {
printf ("Could not run xmlrpc-test: %s\n", error->message);
diff --git a/tests/xmlrpc-test.c b/tests/xmlrpc-test.c
index 372a6f69..fc86e8f6 100644
--- a/tests/xmlrpc-test.c
+++ b/tests/xmlrpc-test.c
@@ -15,6 +15,7 @@
static SoupSession *session;
static const char *default_uri = "http://localhost:47524/xmlrpc-server.php";
static const char *uri = NULL;
+static gboolean server_test = FALSE;
static const char *const value_type[] = {
"BAD",
@@ -318,12 +319,20 @@ static const char *const echo_strings[] = {
};
#define N_ECHO_STRINGS G_N_ELEMENTS (echo_strings)
+static const char *const echo_strings_broken[] = {
+ "This is a test",
+ " so is this",
+ "and so is this",
+ "amp; so is lt;thisgt;"
+};
+
static gboolean
test_echo (void)
{
GValueArray *originals, *echoes;
GValue retval;
int i;
+ gboolean php_bug = FALSE;
debug_printf (1, "echo (array of string -> array of string): ");
@@ -359,13 +368,20 @@ test_echo (void)
for (i = 0; i < echoes->n_values; i++) {
if (strcmp (echo_strings[i], g_value_get_string (&echoes->values[i])) != 0) {
- debug_printf (1, " WRONG! Mismatch at %d\n", i + 1);
- g_value_array_free (echoes);
- return FALSE;
+ if (!server_test && strcmp (echo_strings_broken[i], g_value_get_string (&echoes->values[i])) == 0)
+ php_bug = TRUE;
+ else {
+ debug_printf (1, " WRONG! Mismatch at %d\n", i + 1);
+ g_value_array_free (echoes);
+ return FALSE;
+ }
}
}
- debug_printf (1, "OK!\n");
+ if (php_bug)
+ debug_printf (1, "WRONG, but it's php's fault\n");
+ else
+ debug_printf (1, "OK!\n");
g_value_array_free (echoes);
return TRUE;
}
@@ -431,16 +447,18 @@ test_fault_args (void)
return do_bad_xmlrpc ("<methodCall><methodName>sum</methodName><params><param><value><int>1</int></value></param></params></methodCall>");
}
-static GOptionEntry uri_entry[] = {
+static GOptionEntry xmlrpc_entries[] = {
{ "uri", 'u', 0, G_OPTION_ARG_STRING, &uri,
"Alternate URI for server", NULL },
+ { "server-test", 's', 0, G_OPTION_ARG_NONE, &server_test,
+ "If this is being run from xmlrpc-server-test", NULL },
{ NULL }
};
int
main (int argc, char **argv)
{
- test_init (argc, argv, uri_entry);
+ test_init (argc, argv, xmlrpc_entries);
if (!uri) {
apache_init ();