summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2013-12-11 18:15:13 +0100
committerDan Winship <danw@gnome.org>2014-02-08 13:20:21 +0100
commit094eee8d1e0ac31e83f45e026ef26688e1468884 (patch)
treef5aa4dc398c5117ca5e3392794811fd39c048f22
parent64e667bda5009c8f1acd03659c457e26b16457a6 (diff)
downloadlibsoup-094eee8d1e0ac31e83f45e026ef26688e1468884.tar.gz
tests: Add resources/* to soup-test.gresource, add utility functions
Add the files in resources/ to soup-test.gresource, and add soup_test_load_resource() to get the contents of one of them, and then use this in places that were previously reading them by hand. Except forms-test, which needs to pass a filename to curl, so have it use index.txt instead of one of the resource files. Now none of the tests access the resources/ directory at runtime. Also add soup_test_get_index() to read index.txt rather than reimplementing it in multiple test programs.
-rw-r--r--tests/Makefile.am19
-rw-r--r--tests/chunk-io-test.c48
-rw-r--r--tests/coding-test.c31
-rw-r--r--tests/forms-test.c6
-rw-r--r--tests/range-test.c20
-rw-r--r--tests/requester-test.c27
-rw-r--r--tests/resource-test.c36
-rw-r--r--tests/sniffing-test.c80
-rw-r--r--tests/soup-tests.gresource.xml13
-rw-r--r--tests/streaming-test.c38
-rw-r--r--tests/test-utils.c67
-rw-r--r--tests/test-utils.h6
12 files changed, 174 insertions, 217 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 76a87fa7..f7293b12 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -77,21 +77,10 @@ httpd.conf: $(httpd_conf_in)
BUILT_SOURCES = httpd.conf
endif
-soup-tests.gresource: soup-tests.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/soup-tests.gresource.xml)
- $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) $<
-
-RESOURCES = \
- resources/atom.xml \
- resources/home.gif \
- resources/html_binary.html \
- resources/mbox \
- resources/mbox.gz \
- resources/mbox.raw \
- resources/mbox.zlib \
- resources/ps_binary.ps \
- resources/rss20.xml \
- resources/test.html \
- resources/text_binary.txt
+RESOURCES = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/soup-tests.gresource.xml)
+
+soup-tests.gresource: soup-tests.gresource.xml $(RESOURCES)
+ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) $<
EXTRA_DIST = \
htdigest \
diff --git a/tests/chunk-io-test.c b/tests/chunk-io-test.c
index 4003e341..29062a69 100644
--- a/tests/chunk-io-test.c
+++ b/tests/chunk-io-test.c
@@ -351,8 +351,8 @@ do_io_tests (void)
GInputStream *imem, *islow, *in;
GOutputStream *omem, *oslow, *out;
GMemoryOutputStream *mem;
- char *raw_contents, *buf;
- gsize raw_length;
+ SoupBuffer *raw_contents;
+ char *buf;
GString *chunkified;
GError *error = NULL;
gssize nread, nwrote, total;
@@ -360,13 +360,8 @@ do_io_tests (void)
debug_printf (1, "\nI/O tests\n");
- if (!g_file_get_contents (SRCDIR "/index.txt", &raw_contents, &raw_length, &error)) {
- g_printerr ("Could not read index.txt: %s\n",
- error->message);
- exit (1);
- }
-
- chunkified = chunkify (raw_contents, raw_length);
+ raw_contents = soup_test_get_index ();
+ chunkified = chunkify (raw_contents->data, raw_contents->length);
debug_printf (1, " sync read\n");
@@ -383,10 +378,11 @@ do_io_tests (void)
g_object_unref (imem);
g_object_unref (islow);
- buf = g_malloc (raw_length);
+ buf = g_malloc (raw_contents->length);
total = 0;
while (TRUE) {
- nread = g_input_stream_read (in, buf + total, raw_length - total,
+ nread = g_input_stream_read (in, buf + total,
+ raw_contents->length - total,
NULL, &error);
g_assert_no_error (error);
g_clear_error (&error);
@@ -401,7 +397,7 @@ do_io_tests (void)
g_clear_error (&error);
g_object_unref (in);
- soup_assert_cmpmem (buf, total, raw_contents, raw_length);
+ soup_assert_cmpmem (buf, total, raw_contents->data, raw_contents->length);
g_free (buf);
debug_printf (1, " async read\n");
@@ -419,11 +415,12 @@ do_io_tests (void)
g_object_unref (imem);
g_object_unref (islow);
- buf = g_malloc (raw_length);
+ buf = g_malloc (raw_contents->length);
total = 0;
while (TRUE) {
nread = g_pollable_input_stream_read_nonblocking (G_POLLABLE_INPUT_STREAM (in),
- buf + total, raw_length - total,
+ buf + total,
+ raw_contents->length - total,
NULL, &error);
if (nread == -1 && g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) {
GSource *source;
@@ -452,7 +449,7 @@ do_io_tests (void)
g_clear_error (&error);
g_object_unref (in);
- soup_assert_cmpmem (buf, total, raw_contents, raw_length);
+ soup_assert_cmpmem (buf, total, raw_contents->data, raw_contents->length);
g_free (buf);
debug_printf (1, " sync write\n");
@@ -472,12 +469,12 @@ do_io_tests (void)
g_object_unref (oslow);
total = chunk_length = chunk_total = 0;
- while (total < raw_length) {
+ while (total < raw_contents->length) {
if (chunk_total == chunk_length) {
- chunk_length = MIN (CHUNK_SIZE, raw_length - total);
+ chunk_length = MIN (CHUNK_SIZE, raw_contents->length - total);
chunk_total = 0;
}
- nwrote = g_output_stream_write (out, raw_contents + total,
+ nwrote = g_output_stream_write (out, raw_contents->data + total,
chunk_length - chunk_total, NULL, &error);
g_assert_no_error (error);
g_clear_error (&error);
@@ -517,13 +514,13 @@ do_io_tests (void)
g_object_unref (oslow);
total = chunk_length = chunk_total = 0;
- while (total < raw_length) {
+ while (total < raw_contents->length) {
if (chunk_total == chunk_length) {
- chunk_length = MIN (CHUNK_SIZE, raw_length - total);
+ chunk_length = MIN (CHUNK_SIZE, raw_contents->length - total);
chunk_total = 0;
}
nwrote = g_pollable_output_stream_write_nonblocking (G_POLLABLE_OUTPUT_STREAM (out),
- raw_contents + total,
+ raw_contents->data + total,
chunk_length - chunk_total,
NULL, &error);
if (nwrote == -1 && g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) {
@@ -578,16 +575,16 @@ do_io_tests (void)
g_object_unref (oslow);
total = 0;
- while (total < raw_length) {
- nwrote = g_output_stream_write (out, raw_contents + total,
- raw_length - total, NULL, NULL);
+ while (total < raw_contents->length) {
+ nwrote = g_output_stream_write (out, raw_contents->data + total,
+ raw_contents->length - total, NULL, NULL);
if (nwrote == -1)
break;
else
total += nwrote;
}
- g_assert_cmpint (total, !=, raw_length);
+ g_assert_cmpint (total, !=, raw_contents->length);
g_output_stream_close (out, NULL, NULL);
g_object_unref (out);
@@ -595,7 +592,6 @@ do_io_tests (void)
g_free (buf);
g_string_free (chunkified, TRUE);
- g_free (raw_contents);
}
int
diff --git a/tests/coding-test.c b/tests/coding-test.c
index 8bc3e5f3..d922a19c 100644
--- a/tests/coding-test.c
+++ b/tests/coding-test.c
@@ -16,8 +16,7 @@ server_callback (SoupServer *server, SoupMessage *msg,
{
const char *accept_encoding, *options;
GSList *codings;
- char *file = NULL, *contents;
- gsize length;
+ SoupBuffer *response = NULL;
options = soup_message_headers_get_one (msg->request_headers,
"X-Test-Options");
@@ -53,32 +52,32 @@ server_callback (SoupServer *server, SoupMessage *msg,
}
}
if (extension && encoding) {
- file = g_strdup_printf (SRCDIR "/resources%s.%s", path, extension);
- if (g_file_test (file, G_FILE_TEST_EXISTS)) {
+ char *resource;
+
+ resource = g_strdup_printf ("%s.%s", path, extension);
+ response = soup_test_load_resource (resource, NULL);
+
+ if (response) {
soup_message_headers_append (msg->response_headers,
"Content-Encoding",
encoding);
- } else {
- g_free (file);
- file = NULL;
}
+ g_free (resource);
}
}
soup_header_free_list (codings);
- if (!file)
- file = g_strdup_printf (SRCDIR "/resources%s", path);
- if (!g_file_get_contents (file, &contents, &length, NULL)) {
+ if (!response)
+ response = soup_test_load_resource (path, NULL);
+ if (!response) {
/* If path.gz exists but can't be read, we'll send back
* the error with "Content-Encoding: gzip" but there's
* no body, so, eh.
*/
- g_free (file);
soup_message_set_status (msg, SOUP_STATUS_NOT_FOUND);
return;
}
- g_free (file);
if (soup_header_contains (options, "force-encode")) {
const gchar *encoding = "gzip";
@@ -106,11 +105,9 @@ server_callback (SoupServer *server, SoupMessage *msg,
soup_message_set_status (msg, SOUP_STATUS_OK);
soup_message_headers_set_encoding (msg->response_headers, SOUP_ENCODING_CHUNKED);
- if (!soup_header_contains (options, "empty")) {
- soup_message_body_append (msg->response_body,
- SOUP_MEMORY_TAKE, contents, length);
- } else
- g_free (contents);
+ if (!soup_header_contains (options, "empty"))
+ soup_message_body_append_buffer (msg->response_body, response);
+ soup_buffer_free (response);
if (soup_header_contains (options, "trailing-junk")) {
soup_message_body_append (msg->response_body, SOUP_MEMORY_COPY,
diff --git a/tests/forms-test.c b/tests/forms-test.c
index 5a5db28b..7a843dac 100644
--- a/tests/forms-test.c
+++ b/tests/forms-test.c
@@ -135,9 +135,9 @@ do_md5_test_curl (const char *uri, const char *file, const char *md5)
g_free (file_arg);
}
-#define MD5_TEST_FILE SRCDIR "/resources/home.gif"
-#define MD5_TEST_FILE_BASENAME "home.gif"
-#define MD5_TEST_FILE_MIME_TYPE "image/gif"
+#define MD5_TEST_FILE SRCDIR "/index.txt"
+#define MD5_TEST_FILE_BASENAME "index.txt"
+#define MD5_TEST_FILE_MIME_TYPE "text/plain"
static void
do_md5_test_libsoup (const char *uri, const char *contents,
diff --git a/tests/range-test.c b/tests/range-test.c
index 89ae59c4..4d008d46 100644
--- a/tests/range-test.c
+++ b/tests/range-test.c
@@ -9,23 +9,6 @@ int total_length;
char *test_response;
static void
-get_full_response (void)
-{
- char *contents;
- gsize length;
- GError *error = NULL;
-
- if (!g_file_get_contents (SRCDIR "/index.txt", &contents, &length, &error)) {
- g_printerr ("Could not read index.txt: %s\n",
- error->message);
- exit (1);
- }
-
- full_response = soup_buffer_new (SOUP_MEMORY_TAKE, contents, length);
- debug_printf (1, "Total response length is %d\n\n", (int)length);
-}
-
-static void
check_part (SoupMessageHeaders *headers, const char *body, gsize body_len,
gboolean check_start_end, int expected_start, int expected_end)
{
@@ -401,7 +384,7 @@ main (int argc, char **argv)
test_init (argc, argv, NULL);
apache_init ();
- get_full_response ();
+ full_response = soup_test_get_index ();
test_response = g_malloc0 (full_response->length);
g_test_add_func ("/ranges/apache", do_apache_range_test);
@@ -409,7 +392,6 @@ main (int argc, char **argv)
ret = g_test_run ();
- soup_buffer_free (full_response);
g_free (test_response);
test_cleanup ();
diff --git a/tests/requester-test.c b/tests/requester-test.c
index 61a69f28..52c3eac2 100644
--- a/tests/requester-test.c
+++ b/tests/requester-test.c
@@ -17,26 +17,6 @@ SoupBuffer *response, *auth_response;
#define REDIRECT_HTML_BODY "<html><body>Try again</body></html>\r\n"
#define AUTH_HTML_BODY "<html><body>Unauthorized</body></html>\r\n"
-static void
-get_index (void)
-{
- char *contents;
- gsize length;
- GError *error = NULL;
-
- if (!g_file_get_contents (SRCDIR "/index.txt", &contents, &length, &error)) {
- g_printerr ("Could not read index.txt: %s\n",
- error->message);
- exit (1);
- }
-
- response = soup_buffer_new (SOUP_MEMORY_TAKE, contents, length);
-
- auth_response = soup_buffer_new (SOUP_MEMORY_STATIC,
- AUTH_HTML_BODY,
- strlen (AUTH_HTML_BODY));
-}
-
static gboolean
slow_finish_message (gpointer msg)
{
@@ -808,7 +788,11 @@ main (int argc, char **argv)
int ret;
test_init (argc, argv, NULL);
- get_index ();
+
+ response = soup_test_get_index ();
+ auth_response = soup_buffer_new (SOUP_MEMORY_STATIC,
+ AUTH_HTML_BODY,
+ strlen (AUTH_HTML_BODY));
server = soup_test_server_new (TRUE);
soup_server_add_handler (server, NULL, server_callback, NULL, NULL);
@@ -831,7 +815,6 @@ main (int argc, char **argv)
ret = g_test_run ();
g_free (uri);
- soup_buffer_free (response);
soup_buffer_free (auth_response);
soup_test_server_quit_unref (server);
diff --git a/tests/resource-test.c b/tests/resource-test.c
index e41c6032..50d63ab9 100644
--- a/tests/resource-test.c
+++ b/tests/resource-test.c
@@ -7,38 +7,6 @@
SoupBuffer *index_buffer;
-static void
-get_index (void)
-{
- char *contents;
- gsize length;
- GError *error = NULL;
-
- if (!g_file_get_contents (SRCDIR "/index.txt", &contents, &length, &error)) {
- g_printerr ("Could not read index.txt: %s\n",
- error->message);
- exit (1);
- }
-
- index_buffer = soup_buffer_new (SOUP_MEMORY_TAKE, contents, length);
-}
-
-static void
-register_gresource (void)
-{
- GResource *resource;
- GError *error = NULL;
-
- resource = g_resource_load ("soup-tests.gresource", &error);
- if (!resource) {
- g_printerr ("Could not load resource soup-tests.gresource: %s\n",
- error->message);
- exit (1);
- }
- g_resources_register (resource);
- g_resource_unref (resource);
-}
-
typedef struct {
GString *body;
char buffer[1024];
@@ -222,8 +190,8 @@ main (int argc, char **argv)
test_init (argc, argv, NULL);
- get_index ();
- register_gresource ();
+ index_buffer = soup_test_get_index ();
+ soup_test_register_resources ();
g_test_add_data_func ("/resource/sync/file",
GSIZE_TO_POINTER (SOUP_TYPE_SESSION_SYNC),
diff --git a/tests/sniffing-test.c b/tests/sniffing-test.c
index b5088d4d..532e6ed5 100644
--- a/tests/sniffing-test.c
+++ b/tests/sniffing-test.c
@@ -16,8 +16,8 @@ server_callback (SoupServer *server, SoupMessage *msg,
{
GError *error = NULL;
char *query_key;
- char *contents;
- gsize length = 0, offset;
+ SoupBuffer *response = NULL;
+ gsize offset;
gboolean empty_response = FALSE;
if (msg->method != SOUP_METHOD_GET) {
@@ -40,13 +40,8 @@ server_callback (SoupServer *server, SoupMessage *msg,
}
if (!strcmp (path, "/mbox")) {
- if (empty_response) {
- contents = g_strdup ("");
- length = 0;
- } else {
- g_file_get_contents (SRCDIR "/resources/mbox",
- &contents, &length,
- &error);
+ if (!empty_response) {
+ response = soup_test_load_resource ("mbox", &error);
g_assert_no_error (error);
}
@@ -56,15 +51,10 @@ server_callback (SoupServer *server, SoupMessage *msg,
if (g_str_has_prefix (path, "/text_or_binary/")) {
char *base_name = g_path_get_basename (path);
- char *file_name = g_strdup_printf (SRCDIR "/resources/%s", base_name);
- g_file_get_contents (file_name,
- &contents, &length,
- &error);
+ response = soup_test_load_resource (base_name, &error);
g_assert_no_error (error);
-
g_free (base_name);
- g_free (file_name);
soup_message_headers_append (msg->response_headers,
"Content-Type", "text/plain");
@@ -72,15 +62,10 @@ server_callback (SoupServer *server, SoupMessage *msg,
if (g_str_has_prefix (path, "/unknown/")) {
char *base_name = g_path_get_basename (path);
- char *file_name = g_strdup_printf (SRCDIR "/resources/%s", base_name);
- g_file_get_contents (file_name,
- &contents, &length,
- &error);
+ response = soup_test_load_resource (base_name, &error);
g_assert_no_error (error);
-
g_free (base_name);
- g_free (file_name);
soup_message_headers_append (msg->response_headers,
"Content-Type", "UNKNOWN/unknown");
@@ -91,15 +76,10 @@ server_callback (SoupServer *server, SoupMessage *msg,
char *ptr;
char *base_name = g_path_get_basename (path);
- char *file_name = g_strdup_printf (SRCDIR "/resources/%s", base_name);
- g_file_get_contents (file_name,
- &contents, &length,
- &error);
+ response = soup_test_load_resource (base_name, &error);
g_assert_no_error (error);
-
g_free (base_name);
- g_free (file_name);
/* Hack to allow passing type in the URI */
ptr = g_strrstr (components[2], "_");
@@ -112,15 +92,10 @@ server_callback (SoupServer *server, SoupMessage *msg,
if (g_str_has_prefix (path, "/multiple_headers/")) {
char *base_name = g_path_get_basename (path);
- char *file_name = g_strdup_printf (SRCDIR "/resources/%s", base_name);
- g_file_get_contents (file_name,
- &contents, &length,
- &error);
+ response = soup_test_load_resource (base_name, &error);
g_assert_no_error (error);
-
g_free (base_name);
- g_free (file_name);
soup_message_headers_append (msg->response_headers,
"Content-Type", "text/xml");
@@ -128,15 +103,18 @@ server_callback (SoupServer *server, SoupMessage *msg,
"Content-Type", "text/plain");
}
- for (offset = 0; offset < length; offset += 500) {
- soup_message_body_append (msg->response_body,
- SOUP_MEMORY_COPY,
- contents + offset,
- MIN(500, length - offset));
+ if (response) {
+ for (offset = 0; offset < response->length; offset += 500) {
+ soup_message_body_append (msg->response_body,
+ SOUP_MEMORY_COPY,
+ response->data + offset,
+ MIN (500, response->length - offset));
+ }
+
+ soup_buffer_free (response);
}
- soup_message_body_complete (msg->response_body);
- g_free (contents);
+ soup_message_body_complete (msg->response_body);
}
static gboolean
@@ -212,8 +190,7 @@ do_signals_test (gboolean should_content_sniff,
{
SoupURI *uri = soup_uri_new_with_base (base_uri, "/mbox");
SoupMessage *msg = soup_message_new_from_uri ("GET", uri);
- char *contents;
- gsize length;
+ SoupBuffer *expected;
GError *error = NULL;
SoupBuffer *body = NULL;
@@ -256,13 +233,10 @@ do_signals_test (gboolean should_content_sniff,
"content-sniffed got emitted without a sniffer");
}
- if (empty_response) {
- contents = g_strdup ("");
- length = 0;
- } else {
- g_file_get_contents (SRCDIR "/resources/mbox",
- &contents, &length,
- &error);
+ if (empty_response)
+ expected = soup_buffer_new (SOUP_MEMORY_STATIC, "", 0);
+ else {
+ expected = soup_test_load_resource ("mbox", &error);
g_assert_no_error (error);
}
@@ -271,10 +245,12 @@ do_signals_test (gboolean should_content_sniff,
else if (msg->response_body)
body = soup_message_body_flatten (msg->response_body);
- if (body)
- soup_assert_cmpmem (body->data, body->length, contents, length);
+ if (body) {
+ soup_assert_cmpmem (body->data, body->length,
+ expected->data, expected->length);
+ }
- g_free (contents);
+ soup_buffer_free (expected);
if (body)
soup_buffer_free (body);
if (chunk_data) {
diff --git a/tests/soup-tests.gresource.xml b/tests/soup-tests.gresource.xml
index 969a6bfe..9b580a35 100644
--- a/tests/soup-tests.gresource.xml
+++ b/tests/soup-tests.gresource.xml
@@ -2,5 +2,16 @@
<gresources>
<gresource prefix="/org/gnome/libsoup/tests">
<file>index.txt</file>
+ <file>resources/atom.xml</file>
+ <file>resources/home.gif</file>
+ <file>resources/html_binary.html</file>
+ <file>resources/mbox</file>
+ <file>resources/mbox.gz</file>
+ <file>resources/mbox.raw</file>
+ <file>resources/mbox.zlib</file>
+ <file>resources/ps_binary.ps</file>
+ <file>resources/rss20.xml</file>
+ <file>resources/test.html</file>
+ <file>resources/text_binary.txt</file>
</gresource>
-</gresources> \ No newline at end of file
+</gresources>
diff --git a/tests/streaming-test.c b/tests/streaming-test.c
index 9790766a..f15e1890 100644
--- a/tests/streaming-test.c
+++ b/tests/streaming-test.c
@@ -7,28 +7,8 @@
#define RESPONSE_CHUNK_SIZE 1024
-char *full_response, *full_response_md5;
-gsize full_response_length;
-
-static void
-get_full_response (void)
-{
- GError *error = NULL;
-
- if (!g_file_get_contents (SRCDIR "/index.txt",
- &full_response,
- &full_response_length,
- &error)) {
- g_printerr ("Could not read index file %s: %s\n",
- SRCDIR "/index.txt", error->message);
- g_error_free (error);
- exit (1);
- }
-
- full_response_md5 = g_compute_checksum_for_data (G_CHECKSUM_MD5,
- (guchar *)full_response,
- full_response_length);
-}
+SoupBuffer *full_response;
+char *full_response_md5;
static void
write_next_chunk (SoupMessage *msg, gpointer user_data)
@@ -36,12 +16,12 @@ write_next_chunk (SoupMessage *msg, gpointer user_data)
gsize *offset = user_data;
gsize chunk_length;
- chunk_length = MIN (RESPONSE_CHUNK_SIZE, full_response_length - *offset);
+ chunk_length = MIN (RESPONSE_CHUNK_SIZE, full_response->length - *offset);
if (chunk_length > 0) {
debug_printf (2, " writing chunk\n");
soup_message_body_append (msg->response_body,
SOUP_MEMORY_STATIC,
- full_response + *offset,
+ full_response->data + *offset,
chunk_length);
*offset += chunk_length;
} else {
@@ -74,7 +54,7 @@ server_callback (SoupServer *server, SoupMessage *msg,
soup_message_headers_set_encoding (msg->response_headers,
SOUP_ENCODING_CONTENT_LENGTH);
soup_message_headers_set_content_length (msg->response_headers,
- full_response_length);
+ full_response->length);
} else if (!strcmp (path, "/eof")) {
soup_message_headers_set_encoding (msg->response_headers,
SOUP_ENCODING_EOF);
@@ -107,7 +87,7 @@ do_request (SoupSession *session, SoupURI *base_uri, char *path)
soup_session_send_message (session, msg);
soup_test_assert_message_status (msg, SOUP_STATUS_OK);
- g_assert_cmpint (msg->response_body->length, ==, full_response_length);
+ g_assert_cmpint (msg->response_body->length, ==, full_response->length);
md5 = g_compute_checksum_for_data (G_CHECKSUM_MD5,
(guchar *)msg->response_body->data,
@@ -162,7 +142,10 @@ main (int argc, char **argv)
test_init (argc, argv, NULL);
- get_full_response ();
+ full_response = soup_test_get_index ();
+ full_response_md5 = g_compute_checksum_for_data (G_CHECKSUM_MD5,
+ (guchar *)full_response->data,
+ full_response->length);
server = soup_test_server_new (FALSE);
soup_server_add_handler (server, NULL,
@@ -183,7 +166,6 @@ main (int argc, char **argv)
soup_uri_free (base_uri);
g_main_loop_unref (loop);
- g_free (full_response);
g_free (full_response_md5);
soup_test_server_quit_unref (server);
test_cleanup ();
diff --git a/tests/test-utils.c b/tests/test-utils.c
index c28994a1..3d2546f5 100644
--- a/tests/test-utils.c
+++ b/tests/test-utils.c
@@ -12,6 +12,7 @@ static gboolean apache_running;
#endif
static SoupLogger *logger;
+static SoupBuffer *index_buffer;
int debug_level;
gboolean expect_warning, tls_available;
@@ -110,6 +111,8 @@ test_cleanup (void)
if (logger)
g_object_unref (logger);
+ if (index_buffer)
+ soup_buffer_free (index_buffer);
g_main_context_unref (g_main_context_default ());
@@ -514,6 +517,70 @@ soup_test_request_close_stream (SoupRequest *req,
return ok;
}
+void
+soup_test_register_resources (void)
+{
+ static gboolean registered = FALSE;
+ GResource *resource;
+ GError *error = NULL;
+
+ if (registered)
+ return;
+
+ resource = g_resource_load ("soup-tests.gresource", &error);
+ if (!resource) {
+ g_printerr ("Could not load resource soup-tests.gresource: %s\n",
+ error->message);
+ exit (1);
+ }
+ g_resources_register (resource);
+ g_resource_unref (resource);
+
+ registered = TRUE;
+}
+
+SoupBuffer *
+soup_test_load_resource (const char *name,
+ GError **error)
+{
+ GBytes *bytes;
+ char *path;
+
+ soup_test_register_resources ();
+
+ path = g_build_path ("/", "/org/gnome/libsoup/tests/resources", name, NULL);
+ bytes = g_resources_lookup_data (path, G_RESOURCE_LOOKUP_FLAGS_NONE, error);
+ g_free (path);
+
+ if (!bytes)
+ return NULL;
+
+ return soup_buffer_new_with_owner (g_bytes_get_data (bytes, NULL),
+ g_bytes_get_size (bytes),
+ bytes,
+ (GDestroyNotify) g_bytes_unref);
+}
+
+SoupBuffer *
+soup_test_get_index (void)
+{
+ if (!index_buffer) {
+ char *contents;
+ gsize length;
+ GError *error = NULL;
+
+ if (!g_file_get_contents (SRCDIR "/index.txt", &contents, &length, &error)) {
+ g_printerr ("Could not read index.txt: %s\n",
+ error->message);
+ exit (1);
+ }
+
+ index_buffer = soup_buffer_new (SOUP_MEMORY_TAKE, contents, length);
+ }
+
+ return index_buffer;
+}
+
#ifndef G_HAVE_ISO_VARARGS
void
soup_test_assert (gboolean expr, const char *fmt, ...)
diff --git a/tests/test-utils.h b/tests/test-utils.h
index 97741516..315d1117 100644
--- a/tests/test-utils.h
+++ b/tests/test-utils.h
@@ -54,6 +54,12 @@ gboolean soup_test_request_close_stream (SoupRequest *req,
GCancellable *cancellable,
GError **error);
+void soup_test_register_resources (void);
+SoupBuffer *soup_test_load_resource (const char *name,
+ GError **error);
+
+SoupBuffer *soup_test_get_index (void);
+
#ifdef G_HAVE_ISO_VARARGS
#define soup_test_assert(expr, ...) \
G_STMT_START { \