1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
10 #define LIBSOUP_USE_UNSTABLE_REQUEST_API
12 #include "libsoup/soup.h"
13 #include "libsoup/soup-requester.h"
15 void test_init (int argc, char **argv, GOptionEntry *entries);
16 void test_cleanup (void);
18 extern int debug_level;
19 extern gboolean tls_available;
20 extern gboolean apache_available;
21 void debug_printf (int level, const char *format, ...) G_GNUC_PRINTF (2, 3);
23 #define SOUP_TEST_SKIP_IF_NO_TLS \
25 if (!tls_available) { \
26 g_test_skip ("TLS is not available"); \
32 void apache_init (void);
33 void apache_cleanup (void);
34 #define SOUP_TEST_SKIP_IF_NO_APACHE
37 #define apache_cleanup()
38 #define SOUP_TEST_SKIP_IF_NO_APACHE \
40 g_test_skip ("apache is not available"); \
46 SOUP_TEST_REQUEST_NONE = 0,
47 SOUP_TEST_REQUEST_CANCEL_MESSAGE = (1 << 0),
48 SOUP_TEST_REQUEST_CANCEL_CANCELLABLE = (1 << 1),
49 SOUP_TEST_REQUEST_CANCEL_SOON = (1 << 2),
50 SOUP_TEST_REQUEST_CANCEL_IMMEDIATE = (1 << 3),
51 SOUP_TEST_REQUEST_CANCEL_PREEMPTIVE = (1 << 4),
52 SOUP_TEST_REQUEST_CANCEL_AFTER_SEND_FINISH = (1 << 5),
53 } SoupTestRequestFlags;
55 SoupSession *soup_test_session_new (GType type, ...);
56 void soup_test_session_abort_unref (SoupSession *session);
58 SoupServer *soup_test_server_new (gboolean in_own_thread);
59 SoupServer *soup_test_server_new_ssl (gboolean in_own_thread);
60 void soup_test_server_quit_unref (SoupServer *server);
62 GInputStream *soup_test_request_send (SoupRequest *req,
63 GCancellable *cancellable,
66 gboolean soup_test_request_read_all (SoupRequest *req,
68 GCancellable *cancellable,
70 gboolean soup_test_request_close_stream (SoupRequest *req,
72 GCancellable *cancellable,
75 void soup_test_register_resources (void);
76 SoupBuffer *soup_test_load_resource (const char *name,
79 SoupBuffer *soup_test_get_index (void);
81 #ifdef G_HAVE_ISO_VARARGS
82 #define soup_test_assert(expr, ...) \
85 if (G_UNLIKELY (!(expr))) { \
86 _message = g_strdup_printf (__VA_ARGS__); \
87 g_assertion_message (G_LOG_DOMAIN, \
88 __FILE__, __LINE__, G_STRFUNC, \
94 void soup_test_assert (gboolean expr, const char *fmt, ...);
97 #define soup_test_assert_message_status(msg, status) \
99 SoupMessage *_msg = (msg); \
100 guint _status = (status); \
103 if (G_UNLIKELY (_msg->status_code != _status)) { \
104 _message = g_strdup_printf ("Unexpected status %d %s (expected %d %s)", \
105 _msg->status_code, _msg->reason_phrase, \
106 _status, soup_status_get_phrase (_status)); \
107 g_assertion_message (G_LOG_DOMAIN, \
108 __FILE__, __LINE__, G_STRFUNC, \
114 #define soup_assert_cmpmem(s1, l1, s2, l2) \
116 int __l1 = l1, __l2 = l2; \
117 gconstpointer __s1 = s1, __s2 = s2; \
118 if (G_UNLIKELY ((__l1) != (__l2))) { \
119 g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
120 "len(" #s1 ") == len(" #s2 ")", __l1, "==", __l2, \
122 } else if (G_UNLIKELY (memcmp (__s1, __s2, __l1) != 0)) { \
123 g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
124 "assertion failed (" #s1 " == " #s2 ")"); \