From 618ce2988e65058388fb9581ea427f11399de5a2 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Sun, 27 May 2001 19:52:07 +0000 Subject: Fix an fd leak * tests/lib/messages.c (test_message_read_file): Fix an fd leak * tests/lib/session.c, tests/lib/session.h: a CamelSession subclass for the test programs. * tests/lib/Makefile.am: include session.[ch] * tests/folder/test*.c: Use a CamelTestSession from libcameltest instead of cut+pasting everywhere. * tests/misc/url.c (main): Update for a camel_url_new change at some point. * tests/*/.cvsignore: Add stuff. * camel-mime-utils.c (rfc2047_encode_word): Fix a silly ==/!= mixup. svn path=/trunk/; revision=10023 --- camel/tests/lib/Makefile.am | 1 + camel/tests/lib/folders.c | 28 ++++++--------------- camel/tests/lib/messages.c | 1 + camel/tests/lib/session.c | 59 +++++++++++++++++++++++++++++++++++++++++++++ camel/tests/lib/session.h | 19 +++++++++++++++ 5 files changed, 87 insertions(+), 21 deletions(-) create mode 100644 camel/tests/lib/session.c create mode 100644 camel/tests/lib/session.h (limited to 'camel/tests/lib') diff --git a/camel/tests/lib/Makefile.am b/camel/tests/lib/Makefile.am index ea51a2c28a..c3da5e37a8 100644 --- a/camel/tests/lib/Makefile.am +++ b/camel/tests/lib/Makefile.am @@ -8,6 +8,7 @@ libcameltest_a_SOURCES = \ messages.c messages.h \ addresses.c addresses.h \ folders.c folders.h \ + session.c session.h \ streams.c streams.h \ address-data.h diff --git a/camel/tests/lib/folders.c b/camel/tests/lib/folders.c index ba02001bcc..31d242070d 100644 --- a/camel/tests/lib/folders.c +++ b/camel/tests/lib/folders.c @@ -193,7 +193,7 @@ test_folder_basic(CamelSession *session, const char *storename, int local) { CamelStore *store; CamelException *ex = camel_exception_new(); - CamelFolder *folder, *root; + CamelFolder *folder; char *what = g_strdup_printf("testing store: %s", storename); camel_test_start(what); @@ -205,31 +205,17 @@ test_folder_basic(CamelSession *session, const char *storename, int local) check(store != NULL); pull(); - /* local providers == no root folder */ - push("getting root folder"); - root = camel_store_get_root_folder(store, ex); + /* local providers == no inbox */ + push("getting inbox folder"); + folder = camel_store_get_inbox(store, ex); if (local) { check(camel_exception_is_set(ex)); - check(root == NULL); + check(folder == NULL); camel_exception_clear(ex); } else { check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex)); - check(root != NULL); - check_unref(root, 1); - } - pull(); - - /* same for default folder */ - push("getting default folder"); - root = camel_store_get_root_folder(store, ex); - if (local) { - check(camel_exception_is_set(ex)); - check(root == NULL); - camel_exception_clear(ex); - } else { - check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex)); - check(root != NULL); - check_unref(root, 1); + check(folder != NULL); + check_unref(folder, 1); } pull(); diff --git a/camel/tests/lib/messages.c b/camel/tests/lib/messages.c index a8c8b30465..21d77582ad 100644 --- a/camel/tests/lib/messages.c +++ b/camel/tests/lib/messages.c @@ -115,6 +115,7 @@ test_message_read_file(const char *name) camel_data_wrapper_construct_from_stream((CamelDataWrapper *)msg2, (CamelStream *)file); /* file's refcount may be > 1 if the message is real big */ check(CAMEL_OBJECT(file)->ref_count >=1); + camel_object_unref((CamelObject *)file); return msg2; } diff --git a/camel/tests/lib/session.c b/camel/tests/lib/session.c new file mode 100644 index 0000000000..2ebf6e2d7f --- /dev/null +++ b/camel/tests/lib/session.c @@ -0,0 +1,59 @@ +#include "session.h" + +static guint +register_timeout (CamelSession *session, guint32 interval, CamelTimeoutCallback callback, gpointer user_data) +{ + return 1; +} + +static gboolean +unregister_timeout (CamelSession *session, guint handle) +{ + return TRUE; +} + + +static void +class_init (CamelTestSessionClass *camel_test_session_class) +{ + CamelSessionClass *camel_session_class = + CAMEL_SESSION_CLASS (camel_test_session_class); + + /* virtual method override */ + camel_session_class->register_timeout = register_timeout; + camel_session_class->remove_timeout = unregister_timeout; +} + +CamelType +camel_test_session_get_type (void) +{ + static CamelType type = CAMEL_INVALID_TYPE; + + if (type == CAMEL_INVALID_TYPE) { + type = camel_type_register ( + camel_session_get_type (), + "CamelTestSession", + sizeof (CamelTestSession), + sizeof (CamelTestSessionClass), + (CamelObjectClassInitFunc) class_init, + NULL, + NULL, + NULL); + } + + return type; +} + +CamelSession * +camel_test_session_new (const char *path) +{ + CamelSession *session; + + session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE)); + + camel_session_construct (session, path); + + return session; +} + + diff --git a/camel/tests/lib/session.h b/camel/tests/lib/session.h new file mode 100644 index 0000000000..e69ef65e2e --- /dev/null +++ b/camel/tests/lib/session.h @@ -0,0 +1,19 @@ +#include + +#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ()) +#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession)) +#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass)) +#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE)) + +typedef struct _CamelTestSession { + CamelSession parent_object; + +} CamelTestSession; + +typedef struct _CamelTestSessionClass { + CamelSessionClass parent_class; + +} CamelTestSessionClass; + +CamelType camel_test_session_get_type (void); +CamelSession *camel_test_session_new (const char *path); -- cgit v1.2.3