From cdd7a6d4dad11f659c34d0d3841b79a01f21d0e8 Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Wed, 28 Jan 2009 22:38:47 +0000 Subject: [PATCH] Merge branch 'fixtests' pmo-trunk-r7339 --- configure.ac | 10 +++ src/modest-text-utils.c | 25 ++++--- tests/Makefile.am | 1 - tests/check_modest-conf.c | 2 +- tests/check_text-utils.c | 170 +++++++++++++++++++++++++++++---------------- 5 files changed, 136 insertions(+), 72 deletions(-) diff --git a/configure.ac b/configure.ac index aa3edf0..410bac2 100644 --- a/configure.ac +++ b/configure.ac @@ -61,6 +61,16 @@ else CFLAGS="$CFLAGS -O2 -Wall" fi +# Option to enable debugging +AC_ARG_ENABLE(gcov, + [AC_HELP_STRING([--enable-gcov],[Coverage reporting (default=no)])], + [with_gcov=yes], [with_gcov=no]) + +if test "x$with_gcov" == "xyes" ; then + CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage" + LDFLAGS="$LDFLAGS -lgcov" +fi + dnl ------- diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index deb2971..4ed9ca3 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -213,14 +213,17 @@ modest_text_utils_cite (const gchar *text, g_return_val_if_fail (text, NULL); g_return_val_if_fail (content_type, NULL); - if (!signature) - retval = g_strdup (""); - else if (strcmp(content_type, "text/html") == 0) { - tmp_sig = g_strconcat ("\n", SIGNATURE_MARKER,"\n", signature, NULL); - retval = modest_text_utils_convert_to_html_body(tmp_sig, -1, TRUE); + if (!signature) { + tmp_sig = g_strdup (text); + } else { + tmp_sig = g_strconcat (text, "\n", SIGNATURE_MARKER, "\n", signature, NULL); + } + + if (strcmp (content_type, "text/html") == 0) { + retval = modest_text_utils_convert_to_html_body (tmp_sig, -1, TRUE); g_free (tmp_sig); } else { - retval = g_strconcat (text, "\n", SIGNATURE_MARKER, "\n", signature, NULL); + retval = tmp_sig; } return retval; @@ -1247,14 +1250,16 @@ modest_text_utils_get_display_address (gchar *address) for (i = 0; address[i]; ++i) { if (address[i] == '<') { - if (G_UNLIKELY(i == 0)) - return; /* there's nothing else, leave it */ - else { + if (G_UNLIKELY(i == 0)) { + break; /* there's nothing else, leave it */ + }else { address[i] = '\0'; /* terminate the string here */ - return; + break; } } } + + g_strchomp (address); } diff --git a/tests/Makefile.am b/tests/Makefile.am index f9b0efb..9469e50 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -12,7 +12,6 @@ TESTS_ENVIRONMENT = top_builddir=$(top_builddir) \ CK_VERBOSITY=verbose TESTS = \ - check_folder-xfer \ check_text-utils \ check_modest-conf \ check_update-account \ diff --git a/tests/check_modest-conf.c b/tests/check_modest-conf.c index 06efcd7..2a08c90 100644 --- a/tests/check_modest-conf.c +++ b/tests/check_modest-conf.c @@ -183,7 +183,7 @@ main () suite = modest_conf_suite (); srunner = srunner_create (suite); - srunner_run_all (srunner, CK_NORMAL); + srunner_run_all (srunner, CK_ENV); failures = srunner_ntests_failed (srunner); srunner_free (srunner); diff --git a/tests/check_text-utils.c b/tests/check_text-utils.c index d3b1160..cf48b95 100644 --- a/tests/check_text-utils.c +++ b/tests/check_text-utils.c @@ -32,12 +32,20 @@ #include #include #include +#include typedef struct { const gchar *original; const gchar *expected; } StringPair; +static void +fx_setup_i18n () +{ + fail_unless (gtk_init_check (NULL, NULL)); + fail_unless (modest_init (0, NULL), "Failed running modest_init"); +} + /* ----------------- display address tests -------------- */ /** @@ -53,7 +61,7 @@ START_TEST (test_get_display_address_regular) gint i; const StringPair tests[] = { { "John Doe ", "John Doe" }, - { "Rupert Griffin (test)", "Rupert Griffin"}, + { "Rupert Griffin (test)", "Rupert Griffin (test)"}, { " Hyvää päivää ", "Hyvää päivää"}, { " John Doe (test) ", "John Doe" }, { "", "" }, @@ -99,9 +107,9 @@ START_TEST (test_derived_subject_regular) const gchar *prefix="Re:"; const StringPair tests[] = { { "subject", "Re: subject" }, - { NULL, "Re:"}, + { NULL, "Re: (no subject)"}, { "Hyvää päivää", "Re: Hyvää päivää"}, - { "", "Re: "}, + { "", "Re: (no subject)"}, }; /* Tests 1, 2, 3, 4 */ @@ -151,13 +159,13 @@ START_TEST (test_quote_regular) /* Tests 1, 2, 3 */ const StringPair tests[] = { { "", - "On Thu Jan 1 01:00:00 1970, foo@bar wrote:\n> \n" }, + "\n----- Original message -----\n> \n" }, { "This text should be quoted", - "On Thu Jan 1 01:00:00 1970, foo@bar wrote:\n> This text\n> should be quoted\n> \n" }, + "\n----- Original message -----\n> This text\n> should be quoted\n> \n" }, { "These are several\nlines\nof plain text", - "On Thu Jan 1 01:00:00 1970, foo@bar wrote:\n> These are\n> several lines\n> of plain text\n" }, + "\n----- Original message -----\n> These are\n> several lines\n> of plain text\n" }, { "áéíÍÓÚäëïÏÖÜñÑçÇŽÊîš", - "On Thu Jan 1 01:00:00 1970, foo@bar wrote:\n> áéíÍÓÚäëïÏÖÜñÑçÇŽÊîš\n" }, + "\n----- Original message -----\n> áéíÍÓÚäëïÏÖÜñÑçÇŽÊîš\n" }, }; for (i = 0; i != sizeof(tests)/sizeof(StringPair); ++i) { @@ -177,7 +185,7 @@ START_TEST (test_quote_regular) /* Test 5 */ text = g_strdup ("Quotation test example"); expected_quoted_text = - g_strdup ("On Thu Jan 1 01:00:00 1970, foo@bar wrote:\n> Quotation\n> test\n> example\n> \n"); + g_strdup ("\n----- Original message -----\n> Quotation\n> test\n> example\n> \n"); quoted_text = modest_text_utils_quote (text, "text/plain", NULL /*signature */, "foo@bar", 0 /*date*/, NULL /*attachments*/, 1 /*limit*/); fail_unless (quoted_text && !strcmp (expected_quoted_text, quoted_text), @@ -216,31 +224,29 @@ START_TEST (test_quote_invalid) /* Test 2 (Fault) */ text = g_strdup ("Text"); - expected_quoted_text = g_strdup ("On Thu Jan 1 01:00:00 1970, foo@bar wrote:\n> Text\n"); quoted_text = modest_text_utils_quote (text, NULL, NULL, "foo@bar", 0, NULL, 15); fail_unless (quoted_text == NULL, "modest_text_utils_quote failed:\nOriginal text: NULL\n" \ "Expected quotation: NULL\nQuoted text: \"%s\"", quoted_text); g_free (text); - g_free (expected_quoted_text); g_free (quoted_text); /* Test 3 */ text = g_strdup ("Text"); - expected_quoted_text = g_strdup ("On Thu Jan 1 01:00:00 1970, (null) wrote:\n> Text\n"); + expected_quoted_text = g_strdup ("\n----- Original message -----\n> Text\n"); quoted_text = modest_text_utils_quote (text, "text/plain", NULL, NULL, 0, NULL, 15); - fail_unless (quoted_text == NULL, + fail_unless (quoted_text && strcmp (quoted_text, expected_quoted_text) == 0, "modest_text_utils_quote failed:\nOriginal text: NULL\n" \ - "Expected quotation: NULL\nQuoted text: \"%s\"", - quoted_text); + "Expected quotation: %s\nQuoted text: \"%s\"", + expected_quoted_text, quoted_text); g_free (text); g_free (expected_quoted_text); g_free (quoted_text); /* Test 4 */ text = g_strdup ("This is a text"); - expected_quoted_text = g_strdup ("On Thu Jan 1 01:00:00 1970, foo@bar wrote:\n> This\n> is\n> a\n> text\n> \n"); + expected_quoted_text = g_strdup ("\n----- Original message -----\n> This\n> is\n> a\n> text\n> \n"); quoted_text = modest_text_utils_quote (text, "text/plain", NULL, "foo@bar", 0, NULL, 0); fail_unless (quoted_text && !strcmp (expected_quoted_text, quoted_text), "modest_text_utils_quote failed:\nOriginal text:\n\"%s\"\n" \ @@ -267,18 +273,18 @@ START_TEST (test_cite_regular) gchar *cited_text = NULL; const StringPair tests[] = { { "", - "On Thu Jan 1 01:00:00 1970, foo@bar wrote:\n\n" }, + "\n--\nSIGNATURE" }, { "This is some text", - "On Thu Jan 1 01:00:00 1970, foo@bar wrote:\nThis is some text\n" }, + "This is some text\n--\nSIGNATURE" }, { "This\nis some\ntext", - "On Thu Jan 1 01:00:00 1970, foo@bar wrote:\nThis\nis some\ntext\n" }, + "This\nis some\ntext\n--\nSIGNATURE" }, { "áéíÍÓÚäëïÏÖÜñÑçÇŽÊîš", - "On Thu Jan 1 01:00:00 1970, foo@bar wrote:\náéíÍÓÚäëïÏÖÜñÑçÇŽÊîš\n" }, + "áéíÍÓÚäëïÏÖÜñÑçÇŽÊîš\n--\nSIGNATURE" }, }; /* Tests 1, 2, 3, 4 */ for (i = 0; i != sizeof(tests)/sizeof(StringPair); ++i) { - cited_text = modest_text_utils_cite (tests[i].original, "text/plain", NULL, "foo@bar", 0); + cited_text = modest_text_utils_cite (tests[i].original, "text/plain", "SIGNATURE", "foo@bar", 0); fail_unless (cited_text && !strcmp (tests[i].expected, cited_text), "modest_text_utils_cite failed:\nOriginal text:\n\"%s\"\n" \ "Expected cite:\n\"%s\"\nCite obtained:\n\"%s\"", @@ -302,19 +308,30 @@ START_TEST (test_cite_invalid) /* Test 1 */ text = NULL; - expected_cite = g_strdup ("On Thu Jan 1 01:00:00 1970, foo@bar wrote:\n(null)\n"); - cited_text = modest_text_utils_cite (text, "text/plain", NULL, "foo@bar", 0); - fail_unless (cited_text && !strcmp (expected_cite, cited_text), + cited_text = modest_text_utils_cite (text, "text/plain", "SIGNATURE", "foo@bar", 0); + fail_unless (cited_text == NULL, "modest_text_utils_cite failed:\nOriginal text:\nNULL\n" \ - "Expected cite:\n\"%s\"\nCite obtained:\n\"%s\"", - expected_cite, cited_text); + "Expected cite:\nNULL\nCite obtained:\n\"%s\"", + cited_text); g_free (expected_cite); g_free (cited_text); /* Test 2 */ text = g_strdup ("This is some text"); - expected_cite = g_strdup ("On Thu Jan 1 01:00:00 1970, (null) wrote:\nThis is some text\n"); - cited_text = modest_text_utils_cite (text, "text/plain", NULL, NULL, 0); + expected_cite = g_strdup ("This is some text\n--\nSIGNATURE"); + cited_text = modest_text_utils_cite (text, "text/plain", "SIGNATURE", NULL, 0); + fail_unless (cited_text && !strcmp (expected_cite, cited_text), + "modest_text_utils_cite failed:\nOriginal text:\n\"%s\"\n" \ + "Expected cite:\n\"%s\"\nCite obtained:\n\"%s\"", + text, expected_cite, cited_text); + g_free (text); + g_free (expected_cite); + g_free (cited_text); + + /* Test 3 */ + text = g_strdup ("This is some text"); + expected_cite = g_strdup ("This is some text"); + cited_text = modest_text_utils_cite (text, "text/plain", NULL, "foo@bar", 0); fail_unless (cited_text && !strcmp (expected_cite, cited_text), "modest_text_utils_cite failed:\nOriginal text:\n\"%s\"\n" \ "Expected cite:\n\"%s\"\nCite obtained:\n\"%s\"", @@ -340,25 +357,25 @@ START_TEST (test_inline_regular) gchar *inlined_text = NULL; const StringPair tests[] = { { "", - "-----Forwarded Message-----\n" \ + "\n----- Original message -----\n" \ "From: foo@bar\n" \ - "Sent: Thu Jan 1 01:00:00 1970\n" \ + "Sent: Thu, 1 Jan 1970, 01:00:00 CET\n" \ "To: bar@foo\n" \ - "Subject: Any subject\n\n" }, + "Subject: Any subject\n\n> \n" }, { "Some text\nto inline", - "-----Forwarded Message-----\n" \ + "\n----- Original message -----\n" \ "From: foo@bar\n" \ - "Sent: Thu Jan 1 01:00:00 1970\n" \ + "Sent: Thu, 1 Jan 1970, 01:00:00 CET\n" \ "To: bar@foo\n" \ "Subject: Any subject\n\n" \ - "Some text\nto inline" }, + "> Some text\n> to inline\n" }, { "áéíÍÓÚäëïÏÖÜñÑçÇŽÊîš", - "-----Forwarded Message-----\n" \ + "\n----- Original message -----\n" \ "From: foo@bar\n" \ - "Sent: Thu Jan 1 01:00:00 1970\n" \ + "Sent: Thu, 1 Jan 1970, 01:00:00 CET\n" \ "To: bar@foo\n" \ "Subject: Any subject\n\n" \ - "áéíÍÓÚäëïÏÖÜñÑçÇŽÊîš" }, + "> áéíÍÓÚäëïÏÖÜñÑçÇŽÊîš\n" }, }; /* Tests 1, 2, 3 */ @@ -410,6 +427,7 @@ START_TEST (test_inline_invalid) "Any subject"); fail_unless (inlined_text == NULL, "modest_text_utils_inline failed: it should return NULL"); + g_free (expected_inline); g_free (inlined_text); /* Test 2 (Fault) */ @@ -429,16 +447,17 @@ START_TEST (test_inline_invalid) "Any subject"); fail_unless (inlined_text == NULL, "modest_text_utils_inline failed: it should return NULL"); + g_free (expected_inline); g_free (inlined_text); /* Test 3 */ text = g_strdup ("Some text"); - expected_inline = g_strdup("-----Forwarded Message-----\n" \ - "From: (null)\n" \ - "Sent: Thu Jan 1 01:00:00 1970\n" \ + expected_inline = g_strdup("\n----- Original message -----\n" \ + "From: \n" \ + "Sent: Thu, 1 Jan 1970, 01:00:00 CET\n" \ "To: bar@foo\n" \ "Subject: Any subject\n\n" \ - "Some text"); + "> Some text\n"); inlined_text = modest_text_utils_inline (text, "text/plain", NULL, @@ -446,19 +465,21 @@ START_TEST (test_inline_invalid) 0, "bar@foo", "Any subject"); - fail_unless (inlined_text == NULL, - "modest_text_utils_inline failed: it should return NULL"); + fail_unless (inlined_text && strcmp (inlined_text, expected_inline) == 0, + "modest_text_utils_inline failed: it should return %s and returned %s", + expected_inline, inlined_text); + g_free (expected_inline); g_free (inlined_text); /* Test 4 */ text = g_strdup ("Some text"); - expected_inline = g_strdup("-----Forwarded Message-----\n" \ + expected_inline = g_strdup("\n----- Original message -----\n" \ "From: foo@bar\n" \ - "Sent: Thu Jan 1 01:00:00 1970\n" \ - "To: (null)\n" \ + "Sent: Thu, 1 Jan 1970, 01:00:00 CET\n" \ + "To: \n" \ "Subject: Any subject\n\n" \ - "Some text"); + "> Some text\n"); inlined_text = modest_text_utils_inline (text, "text/plain", NULL, @@ -466,18 +487,20 @@ START_TEST (test_inline_invalid) 0, NULL, "Any subject"); - fail_unless (inlined_text == NULL, - "modest_text_utils_inline failed: it should return NULL"); + fail_unless (inlined_text && strcmp (inlined_text, expected_inline) == 0, + "modest_text_utils_inline failed: it should return %s and returned %s", + expected_inline, inlined_text); + g_free (expected_inline); g_free (inlined_text); /* Test 5 */ text = g_strdup ("Some text"); - expected_inline = g_strdup("-----Forwarded Message-----\n" \ + expected_inline = g_strdup("\n----- Original message -----\n" \ "From: foo@bar\n" \ - "Sent: Thu Jan 1 01:00:00 1970\n" \ + "Sent: Thu, 1 Jan 1970, 01:00:00 CET\n" \ "To: bar@foo\n" \ - "Subject: (null)\n\n" \ - "Some text"); + "Subject: \n\n" \ + "> Some text\n"); inlined_text = modest_text_utils_inline (text, "text/plain", NULL, @@ -485,9 +508,11 @@ START_TEST (test_inline_invalid) 0, "bar@foo", NULL); - fail_unless (inlined_text == NULL, - "modest_text_utils_inline failed: it should return NULL"); + fail_unless (inlined_text && strcmp (inlined_text, expected_inline) == 0, + "modest_text_utils_inline failed: it should return %s and returned %s", + expected_inline, inlined_text); + g_free (expected_inline); g_free (inlined_text); } END_TEST @@ -718,11 +743,11 @@ START_TEST (test_convert_to_html_regular) const StringPair tests[] = { { "This is some text.", - "This is some text." }, + "This is some text." }, { "http://xxx.yyy.zzz/myfile", - "http://xxx.yyy.zzz/myfile" }, + "http://xxx.yyy.zzz/myfile" }, { "\n\tx", - "<a  "  b>
\n    x
" }, + "<a  &  b>
\n    x" }, }; /* Tests 1, 2, 3 */ @@ -732,15 +757,17 @@ START_TEST (test_convert_to_html_regular) "modest_text_utils_convert_to_html failed:" \ "Original text:\n\"%s\"\nExpected html:\n\"%s\"\nObtained html:\nNULL", tests[i].original, tests[i].expected); - html_start = strstr (html, ""); + html_start = strstr (html, ""); html_end = strstr (html, ""); + if (html_end != NULL) + html_end += strlen (""); bytes = html_end - html_start; text_in_html = g_strndup (html_start, bytes); fail_unless (strstr (html, tests[i].expected) != NULL, "modest_text_utils_convert_to_html failed:" \ - "Original text:\n\"%s\"\nExpected html:\n\"%s\"\nObtained html:\n\"%s\"", - tests[i].original, tests[i].expected, text_in_html); + "Original text:\n\"%s\"\nExpected html:\n\"%s\"\n\nObtained string:\n\"%s\"\nObtained html:\n\"%s\"", + tests[i].original, tests[i].expected, html, text_in_html); // g_free (html_start); // g_free (text_in_html); // g_free (html); @@ -775,36 +802,54 @@ text_utils_suite (void) /* Tests case for "display adress" */ tc = tcase_create ("display_adress"); + tcase_add_checked_fixture (tc, + fx_setup_i18n, + NULL); tcase_add_test (tc, test_get_display_address_regular); tcase_add_test (tc, test_get_display_address_invalid); suite_add_tcase (suite, tc); /* Test case for "derived subject" */ tc = tcase_create ("derived_subject"); + tcase_add_checked_fixture (tc, + fx_setup_i18n, + NULL); tcase_add_test (tc, test_derived_subject_regular); tcase_add_test (tc, test_derived_subject_invalid); suite_add_tcase (suite, tc); /* Test case for "quote" */ tc = tcase_create ("quote"); + tcase_add_checked_fixture (tc, + fx_setup_i18n, + NULL); tcase_add_test (tc, test_quote_regular); tcase_add_test (tc, test_quote_invalid); suite_add_tcase (suite, tc); /* Test case for "cite" */ tc = tcase_create ("cite"); + tcase_add_checked_fixture (tc, + fx_setup_i18n, + NULL); tcase_add_test (tc, test_cite_regular); tcase_add_test (tc, test_cite_invalid); suite_add_tcase (suite, tc); /* Test case for "inline" */ tc = tcase_create ("inline"); + tcase_add_checked_fixture (tc, + fx_setup_i18n, + NULL); tcase_add_test (tc, test_inline_regular); tcase_add_test (tc, test_inline_invalid); suite_add_tcase (suite, tc); /* Test case for "remove address" */ tc = tcase_create ("remove_address"); + tcase_add_checked_fixture (tc, + fx_setup_i18n, + NULL); tcase_add_test (tc, test_remove_address_regular); tcase_add_test (tc, test_remove_address_limits); tcase_add_test (tc, test_remove_address_invalid); @@ -812,6 +857,9 @@ text_utils_suite (void) /* Test case for "convert to html" */ tc = tcase_create ("convert_to_html"); + tcase_add_checked_fixture (tc, + fx_setup_i18n, + NULL); tcase_add_test (tc, test_convert_to_html_regular); tcase_add_test (tc, test_convert_to_html_invalid); suite_add_tcase (suite, tc); @@ -829,6 +877,8 @@ main () int failures; setenv ("TZ", "Europe/Paris", 1); + setenv ("LANG", "en_GB", 1); + setenv ("LC_MESSAGES", "en_GB", 1); suite = text_utils_suite (); srunner = srunner_create (suite); -- 1.7.9.5