From 094eee8d1e0ac31e83f45e026ef26688e1468884 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 11 Dec 2013 18:15:13 +0100 Subject: 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. --- tests/Makefile.am | 19 +++------- tests/chunk-io-test.c | 48 ++++++++++++------------- tests/coding-test.c | 31 ++++++++-------- tests/forms-test.c | 6 ++-- tests/range-test.c | 20 +---------- tests/requester-test.c | 27 +++----------- tests/resource-test.c | 36 ++----------------- tests/sniffing-test.c | 80 +++++++++++++++--------------------------- tests/soup-tests.gresource.xml | 13 ++++++- tests/streaming-test.c | 38 ++++++-------------- tests/test-utils.c | 67 +++++++++++++++++++++++++++++++++++ tests/test-utils.h | 6 ++++ 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 @@ -8,23 +8,6 @@ SoupBuffer *full_response; 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 "Try again\r\n" #define AUTH_HTML_BODY "Unauthorized\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 @@ index.txt + 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 - \ No newline at end of file + 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 { \ -- cgit v1.2.1