aboutsummaryrefslogtreecommitdiffstats
path: root/camel/tests/folder
diff options
context:
space:
mode:
Diffstat (limited to 'camel/tests/folder')
-rw-r--r--camel/tests/folder/Makefile.am8
-rw-r--r--camel/tests/folder/README9
-rw-r--r--camel/tests/folder/test1.c97
-rw-r--r--camel/tests/folder/test2.c194
-rw-r--r--camel/tests/folder/test4.c73
-rw-r--r--camel/tests/folder/test5.c73
-rw-r--r--camel/tests/folder/test6.c74
-rw-r--r--camel/tests/folder/test7.c74
8 files changed, 311 insertions, 291 deletions
diff --git a/camel/tests/folder/Makefile.am b/camel/tests/folder/Makefile.am
index aa430fa409..45f2e9895e 100644
--- a/camel/tests/folder/Makefile.am
+++ b/camel/tests/folder/Makefile.am
@@ -13,11 +13,13 @@ LDADD = \
$(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
check_PROGRAMS = \
- test1 \
- test2 \
+ test1 test4 test5 \
+ test2 test6 test7 \
test3
-TESTS = test1 test2 test3
+TESTS = test1 test4 test5 \
+ test2 test6 test7 \
+ test3
diff --git a/camel/tests/folder/README b/camel/tests/folder/README
index 994c4cdec4..fab1358198 100644
--- a/camel/tests/folder/README
+++ b/camel/tests/folder/README
@@ -1,4 +1,9 @@
test1 camel store folder operations (local only)
-test2 basic folder operations
-test3 folder searching and indexing
+test2 basic folder operations, local
+test3 folder searching and indexing, local
+test4 camel store folder operations, IMAP
+test5 camel store folder operations, NNTP
+test6 basic folder operations, IMAP
+test7 basic folder operations, NNTP
+
diff --git a/camel/tests/folder/test1.c b/camel/tests/folder/test1.c
index 9ead130dfd..e7d1ac0604 100644
--- a/camel/tests/folder/test1.c
+++ b/camel/tests/folder/test1.c
@@ -1,6 +1,7 @@
/* store testing */
#include "camel-test.h"
+#include "folders.h"
#include <camel/camel-exception.h>
#include <camel/camel-service.h>
@@ -27,9 +28,7 @@ static char *local_providers[] = {
int main(int argc, char **argv)
{
CamelSession *session;
- CamelStore *store;
CamelException *ex;
- CamelFolder *folder, *root;
int i;
char *path;
@@ -46,103 +45,11 @@ int main(int argc, char **argv)
/* todo: subscriptions? */
/* todo: work out how to do imap/pop/nntp tests */
for (i=0;i<ARRAY_LEN(local_providers);i++) {
- char *what = g_strdup_printf("testing local store: %s", local_providers[i]);
-
- camel_test_start(what);
- g_free(what);
-
- push("getting store");
path = g_strdup_printf("%s:///tmp/camel-test/%s", local_providers[i], local_providers[i]);
- store = camel_session_get_store(session, path, ex);
- check_msg(!camel_exception_is_set(ex), "getting store: %s", camel_exception_get_description(ex));
- check(store != NULL);
- pull();
-
- /* local providers == no root folder */
- push("getting root folder");
- root = camel_store_get_root_folder(store, ex);
- check(camel_exception_is_set(ex));
- check(root == NULL);
- camel_exception_clear(ex);
- pull();
-
- /* same for default folder */
- push("getting default folder");
- root = camel_store_get_root_folder(store, ex);
- check(camel_exception_is_set(ex));
- check(root == NULL);
- camel_exception_clear(ex);
- pull();
-
- push("getting a non-existant folder, no create");
- folder = camel_store_get_folder(store, "unknown", 0, ex);
- check(camel_exception_is_set(ex));
- check(folder == NULL);
- camel_exception_clear(ex);
- pull();
-
- push("getting a non-existant folder, with create");
- folder = camel_store_get_folder(store, "testbox", CAMEL_STORE_FOLDER_CREATE, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
- camel_object_unref((CamelObject *)folder);
- pull();
-
- push("getting an existing folder");
- folder = camel_store_get_folder(store, "testbox", 0, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
- camel_object_unref((CamelObject *)folder);
- pull();
-
- push("renaming a non-existant folder");
- camel_store_rename_folder(store, "unknown1", "unknown2", ex);
- check(camel_exception_is_set(ex));
- camel_exception_clear(ex);
- pull();
-
- push("renaming an existing folder");
- camel_store_rename_folder(store, "testbox", "testbox2", ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
-
- push("opening the old name of a renamed folder");
- folder = camel_store_get_folder(store, "testbox", 0, ex);
- check(camel_exception_is_set(ex));
- check(folder == NULL);
- camel_exception_clear(ex);
- pull();
-
- push("opening the new name of a renamed folder");
- folder = camel_store_get_folder(store, "testbox2", 0, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
- camel_object_unref((CamelObject *)folder);
- pull();
-
- push("deleting a non-existant folder");
- camel_store_delete_folder(store, "unknown", ex);
- check(camel_exception_is_set(ex));
- camel_exception_clear(ex);
- pull();
-
- push("deleting an existing folder");
- camel_store_delete_folder(store, "testbox2", ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
-
- push("opening a folder that has been deleted");
- folder = camel_store_get_folder(store, "testbox2", 0, ex);
- check(camel_exception_is_set(ex));
- check(folder == NULL);
- camel_exception_clear(ex);
- pull();
- camel_object_unref((CamelObject *)store);
+ test_folder_basic(session, path, TRUE);
g_free(path);
-
- camel_test_end();
}
camel_object_unref((CamelObject *)session);
diff --git a/camel/tests/folder/test2.c b/camel/tests/folder/test2.c
index a3a8f014b8..47e0f44feb 100644
--- a/camel/tests/folder/test2.c
+++ b/camel/tests/folder/test2.c
@@ -34,14 +34,8 @@ static char *stores[] = {
int main(int argc, char **argv)
{
CamelSession *session;
- CamelStore *store;
CamelException *ex;
- CamelFolder *folder;
- CamelMimeMessage *msg;
- int i, j;
- int indexed;
- GPtrArray *uids;
- const CamelMessageInfo *info;
+ int i;
camel_test_init(argc, argv);
@@ -52,193 +46,11 @@ int main(int argc, char **argv)
session = camel_session_new("/tmp/camel-test", auth_callback, NULL, NULL);
- /* todo: cross-check everything with folder_info checks as well */
- /* todo: work out how to do imap/pop/nntp tests */
-
/* we iterate over all stores we want to test, with indexing or indexing turned on or off */
for (i=0;i<ARRAY_LEN(stores);i++) {
char *name = stores[i];
- for (indexed = 0;indexed<2;indexed++) {
- char *what = g_strdup_printf("folder ops: %s (%sindexed)", name, indexed?"":"non-");
- int flags;
-
- camel_test_start(what);
- test_free(what);
-
- push("getting store");
- store = camel_session_get_store(session, stores[i], ex);
- check_msg(!camel_exception_is_set(ex), "getting store: %s", camel_exception_get_description(ex));
- check(store != NULL);
- pull();
-
- push("creating %sindexed folder", indexed?"":"non-");
- if (indexed)
- flags = CAMEL_STORE_FOLDER_CREATE|CAMEL_STORE_FOLDER_BODY_INDEX;
- else
- flags = CAMEL_STORE_FOLDER_CREATE;
- folder = camel_store_get_folder(store, "testbox", flags, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
-
- /* verify empty/can't get nonexistant stuff */
- test_folder_counts(folder, 0, 0);
- test_folder_not_message(folder, "0");
- test_folder_not_message(folder, "");
-
- for (j=0;j<10;j++) {
- char *content, *subject;
-
- push("creating test message");
- msg = test_message_create_simple();
- content = g_strdup_printf("Test message %d contents\n\n", j);
- test_message_set_content_simple((CamelMimePart *)msg, 0, "text/plain",
- content, strlen(content));
- test_free(content);
- subject = g_strdup_printf("Test message %d", j);
- camel_mime_message_set_subject(msg, subject);
- pull();
-
- push("appending simple message %d", j);
- camel_folder_append_message(folder, msg, NULL, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- test_folder_counts(folder, j+1, j+1);
-
- push("checking it is in the right uid slot & exists");
- uids = camel_folder_get_uids(folder);
- check(uids != NULL);
- check(uids->len == j+1);
- test_folder_message(folder, uids->pdata[j]);
- pull();
-
- push("checking it is the right message (subject): %s", subject);
- info = camel_folder_get_message_info(folder, uids->pdata[j]);
- check_msg(strcmp(camel_message_info_subject(info), subject)==0,
- "info->subject %s", camel_message_info_subject(info));
- camel_folder_free_uids(folder, uids);
- pull();
-
- test_free(subject);
-
- check_unref(msg, 1);
- pull();
- }
-
- check_unref(folder, 1);
- pull();
-
- push("deleting test folder, with messages in it");
- camel_store_delete_folder(store, "testbox", ex);
- check(camel_exception_is_set(ex));
- camel_exception_clear(ex);
- pull();
-
- push("re-opening folder");
- folder = camel_store_get_folder(store, "testbox", flags, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
-
- /* verify counts */
- test_folder_counts(folder, 10, 10);
-
- /* re-check uid's, after a reload */
- uids = camel_folder_get_uids(folder);
- check(uids != NULL);
- check(uids->len == 10);
- for (j=0;j<10;j++) {
- char *subject = g_strdup_printf("Test message %d", j);
-
- push("verify reload of %s", subject);
- test_folder_message(folder, uids->pdata[j]);
-
- info = camel_folder_get_message_info(folder, uids->pdata[j]);
- check_msg(strcmp(camel_message_info_subject(info), subject)==0,
- "info->subject %s", camel_message_info_subject(info));
- test_free(subject);
- pull();
- }
-
- push("deleting first message & expunging");
- camel_folder_delete_message(folder, uids->pdata[0]);
- test_folder_counts(folder, 10, 10);
- camel_folder_expunge(folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- test_folder_not_message(folder, uids->pdata[0]);
- test_folder_counts(folder, 9, 9);
-
- camel_folder_free_uids(folder, uids);
-
- uids = camel_folder_get_uids(folder);
- check(uids != NULL);
- check(uids->len == 9);
- for (j=0;j<9;j++) {
- char *subject = g_strdup_printf("Test message %d", j+1);
-
- push("verify after expunge of %s", subject);
- test_folder_message(folder, uids->pdata[j]);
-
- info = camel_folder_get_message_info(folder, uids->pdata[j]);
- check_msg(strcmp(camel_message_info_subject(info), subject)==0,
- "info->subject %s", camel_message_info_subject(info));
- test_free(subject);
- pull();
- }
- pull();
-
- push("deleting last message & expunging");
- camel_folder_delete_message(folder, uids->pdata[8]);
- /* sync? */
- test_folder_counts(folder, 9, 9);
- camel_folder_expunge(folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- test_folder_not_message(folder, uids->pdata[8]);
- test_folder_counts(folder, 8, 8);
-
- camel_folder_free_uids(folder, uids);
-
- uids = camel_folder_get_uids(folder);
- check(uids != NULL);
- check(uids->len == 8);
- for (j=0;j<8;j++) {
- char *subject = g_strdup_printf("Test message %d", j+1);
-
- push("verify after expunge of %s", subject);
- test_folder_message(folder, uids->pdata[j]);
-
- info = camel_folder_get_message_info(folder, uids->pdata[j]);
- check_msg(strcmp(camel_message_info_subject(info), subject)==0,
- "info->subject %s", camel_message_info_subject(info));
- test_free(subject);
- pull();
- }
- pull();
-
- push("deleting all messages & expunging");
- for (j=0;j<8;j++) {
- camel_folder_delete_message(folder, uids->pdata[j]);
- }
- /* sync? */
- test_folder_counts(folder, 8, 8);
- camel_folder_expunge(folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- for (j=0;j<8;j++) {
- test_folder_not_message(folder, uids->pdata[j]);
- }
- test_folder_counts(folder, 0, 0);
-
- camel_folder_free_uids(folder, uids);
- pull();
-
- check_unref(folder, 1);
- pull(); /* re-opening folder */
-
- push("deleting test folder, with no messages in it");
- camel_store_delete_folder(store, "testbox", ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
-
- check_unref(store, 1);
- camel_test_end();
- }
+
+ test_folder_message_ops(session, name, TRUE);
}
check_unref(session, 1);
diff --git a/camel/tests/folder/test4.c b/camel/tests/folder/test4.c
new file mode 100644
index 0000000000..bae2b7bb0b
--- /dev/null
+++ b/camel/tests/folder/test4.c
@@ -0,0 +1,73 @@
+/* store testing, for remote folders */
+
+#include "camel-test.h"
+#include "folders.h"
+
+#include <camel/camel-exception.h>
+#include <camel/camel-service.h>
+#include <camel/camel-session.h>
+#include <camel/camel-store.h>
+
+/* god, who designed this horrid interface */
+static char *auth_callback(CamelAuthCallbackMode mode,
+ char *data, gboolean secret,
+ CamelService *service, char *item,
+ CamelException *ex)
+{
+ return NULL;
+}
+
+static int regtimeout()
+{
+ return 1;
+}
+
+static int unregtimeout()
+{
+ return 1;
+}
+
+
+#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
+
+static char *remote_providers[] = {
+ "IMAP_TEST_URL",
+};
+
+int main(int argc, char **argv)
+{
+ CamelSession *session;
+ CamelException *ex;
+ int i;
+ char *path;
+
+ camel_test_init(argc, argv);
+
+ ex = camel_exception_new();
+
+ /* clear out any camel-test data */
+ system("/bin/rm -rf /tmp/camel-test");
+
+ session = camel_session_new("/tmp/camel-test", auth_callback, regtimeout, unregtimeout);
+
+ /* todo: cross-check everything with folder_info checks as well */
+ /* todo: subscriptions? */
+ for (i=0;i<ARRAY_LEN(remote_providers);i++) {
+ path = getenv(remote_providers[i]);
+
+ if (path == NULL) {
+ printf("Aborted (ignored).\n");
+ printf("Set '%s', to re-run test.\n", remote_providers[i]);
+ /* tells make check to ignore us in the total count */
+ _exit(77);
+ }
+ camel_test_nonfatal("The IMAP code is just rooted");
+ test_folder_basic(session, path, FALSE);
+ camel_test_fatal();
+ }
+
+ camel_object_unref((CamelObject *)session);
+ camel_exception_free(ex);
+
+ return 0;
+}
diff --git a/camel/tests/folder/test5.c b/camel/tests/folder/test5.c
new file mode 100644
index 0000000000..9e2544d7e5
--- /dev/null
+++ b/camel/tests/folder/test5.c
@@ -0,0 +1,73 @@
+/* store testing, for remote folders */
+
+#include "camel-test.h"
+#include "folders.h"
+
+#include <camel/camel-exception.h>
+#include <camel/camel-service.h>
+#include <camel/camel-session.h>
+#include <camel/camel-store.h>
+
+/* god, who designed this horrid interface */
+static char *auth_callback(CamelAuthCallbackMode mode,
+ char *data, gboolean secret,
+ CamelService *service, char *item,
+ CamelException *ex)
+{
+ return NULL;
+}
+
+static int regtimeout()
+{
+ return 1;
+}
+
+static int unregtimeout()
+{
+ return 1;
+}
+
+
+#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
+
+static char *remote_providers[] = {
+ "NNTP_TEST_URL",
+};
+
+int main(int argc, char **argv)
+{
+ CamelSession *session;
+ CamelException *ex;
+ int i;
+ char *path;
+
+ camel_test_init(argc, argv);
+
+ ex = camel_exception_new();
+
+ /* clear out any camel-test data */
+ system("/bin/rm -rf /tmp/camel-test");
+
+ session = camel_session_new("/tmp/camel-test", auth_callback, regtimeout, unregtimeout);
+
+ /* todo: cross-check everything with folder_info checks as well */
+ /* todo: subscriptions? */
+ for (i=0;i<ARRAY_LEN(remote_providers);i++) {
+ path = getenv(remote_providers[i]);
+
+ if (path == NULL) {
+ printf("Aborted (ignored).\n");
+ printf("Set '%s', to re-run test.\n", remote_providers[i]);
+ /* tells make check to ignore us in the total count */
+ _exit(77);
+ }
+ camel_test_nonfatal("Not sure how many tests apply to NNTP");
+ test_folder_basic(session, path, FALSE);
+ camel_test_fatal();
+ }
+
+ camel_object_unref((CamelObject *)session);
+ camel_exception_free(ex);
+
+ return 0;
+}
diff --git a/camel/tests/folder/test6.c b/camel/tests/folder/test6.c
new file mode 100644
index 0000000000..6f4e387fca
--- /dev/null
+++ b/camel/tests/folder/test6.c
@@ -0,0 +1,74 @@
+/* folder testing */
+
+#include "camel-test.h"
+#include "messages.h"
+
+#include <camel/camel-exception.h>
+#include <camel/camel-service.h>
+#include <camel/camel-session.h>
+#include <camel/camel-store.h>
+
+#include <camel/camel-folder.h>
+#include <camel/camel-folder-summary.h>
+#include <camel/camel-mime-message.h>
+
+/* god, who designed this horrid interface */
+static char *auth_callback(CamelAuthCallbackMode mode,
+ char *data, gboolean secret,
+ CamelService *service, char *item,
+ CamelException *ex)
+{
+ return NULL;
+}
+
+static int regtimeout()
+{
+ return 1;
+}
+
+static int unregtimeout()
+{
+ return 1;
+}
+
+#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
+
+static char *remote_providers[] = {
+ "IMAP_TEST_URL",
+};
+
+int main(int argc, char **argv)
+{
+ CamelSession *session;
+ CamelException *ex;
+ int i;
+ char *path;
+
+ camel_test_init(argc, argv);
+
+ /* clear out any camel-test data */
+ system("/bin/rm -rf /tmp/camel-test");
+
+ ex = camel_exception_new();
+
+ session = camel_session_new("/tmp/camel-test", auth_callback, regtimeout, unregtimeout);
+
+ for (i=0;i<ARRAY_LEN(remote_providers);i++) {
+ path = getenv(remote_providers[i]);
+
+ if (path == NULL) {
+ printf("Aborted (ignored).\n");
+ printf("Set '%s', to re-run test.\n", remote_providers[i]);
+ /* tells make check to ignore us in the total count */
+ _exit(77);
+ }
+ /*camel_test_nonfatal("The IMAP code is just rooted");*/
+ test_folder_message_ops(session, path, FALSE);
+ /*camel_test_fatal();*/
+ }
+
+ check_unref(session, 1);
+ camel_exception_free(ex);
+
+ return 0;
+}
diff --git a/camel/tests/folder/test7.c b/camel/tests/folder/test7.c
new file mode 100644
index 0000000000..7acacebbcd
--- /dev/null
+++ b/camel/tests/folder/test7.c
@@ -0,0 +1,74 @@
+/* folder testing */
+
+#include "camel-test.h"
+#include "messages.h"
+
+#include <camel/camel-exception.h>
+#include <camel/camel-service.h>
+#include <camel/camel-session.h>
+#include <camel/camel-store.h>
+
+#include <camel/camel-folder.h>
+#include <camel/camel-folder-summary.h>
+#include <camel/camel-mime-message.h>
+
+/* god, who designed this horrid interface */
+static char *auth_callback(CamelAuthCallbackMode mode,
+ char *data, gboolean secret,
+ CamelService *service, char *item,
+ CamelException *ex)
+{
+ return NULL;
+}
+
+static int regtimeout()
+{
+ return 1;
+}
+
+static int unregtimeout()
+{
+ return 1;
+}
+
+#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
+
+static char *remote_providers[] = {
+ "NNTP_TEST_URL",
+};
+
+int main(int argc, char **argv)
+{
+ CamelSession *session;
+ CamelException *ex;
+ int i;
+ char *path;
+
+ camel_test_init(argc, argv);
+
+ /* clear out any camel-test data */
+ system("/bin/rm -rf /tmp/camel-test");
+
+ ex = camel_exception_new();
+
+ session = camel_session_new("/tmp/camel-test", auth_callback, regtimeout, unregtimeout);
+
+ for (i=0;i<ARRAY_LEN(remote_providers);i++) {
+ path = getenv(remote_providers[i]);
+
+ if (path == NULL) {
+ printf("Aborted (ignored).\n");
+ printf("Set '%s', to re-run test.\n", remote_providers[i]);
+ /* tells make check to ignore us in the total count */
+ _exit(77);
+ }
+ camel_test_nonfatal("Dont know how many tests apply to NNTP");
+ test_folder_message_ops(session, path, FALSE);
+ camel_test_fatal();
+ }
+
+ check_unref(session, 1);
+ camel_exception_free(ex);
+
+ return 0;
+}