From 548d50fb19cd66dbe153e4d7e879501bab58c0aa Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Wed, 15 Sep 2010 00:38:16 +0300 Subject: Rewrite libmailutils testsuite in Autotest. * configure.ac: Create libmailutils/tests/atlocal and libmailutils/tests/Makefile. Remove libmailutils/testsuite. * examples/Makefile.am (noinst_PROGRAMS): Remove programs moved to libmailutils/tests. * examples/argcv.c -> libmailutils/tests/argcv.c * libmailutils/testsuite/Decode -> libmailutils/tests/Decode * libmailutils/testsuite/Encode -> libmailutils/tests/Encode * examples/decode2047.c: Move to libmailutils/tests * examples/encode2047.c: Move to libmailutils/tests * examples/mailcap.c: Likewise. * examples/url-parse.c: Likewise. * include/mailutils/Makefile.am: Minor changes. * libmailutils/Makefile.am (SUBDIRS): Replace testsuite with tests. * libmailutils/tests/Makefile.am: New file. * libmailutils/tests/addr.c: New file. * libmailutils/tests/address.at: New file. * libmailutils/tests/argcv.at: New file. * libmailutils/tests/atlocal.in: New file. * libmailutils/tests/base64d.at: New file. * libmailutils/tests/base64e.at: New file. * libmailutils/tests/decode2047.at: New file. * libmailutils/tests/encode2047.at: New file. * libmailutils/tests/fltst.c: New file. * libmailutils/tests/mailcap.at: New file. * libmailutils/tests/mime.at: New file. * libmailutils/tests/testsuite.at: New file. * libmailutils/tests/url.at: New file. * libmailutils/testsuite/: Delete. * frm/tests/Makefile.am: Prefix package.m4 creation commands with $(AM_V_GEN). * readmsg/tests/Makefile.am: Likewise. * sieve/tests/Makefile.am: Likewise. * frm/tests/testsuite.at: Minor changes. * readmsg/tests/testsuite.at: Include testsuite.inc. * sieve/tests/testsuite.at: Likewise. * sieve/tests/version.at: Comment out inclusion of testsuite.inc. * testsuite/testsuite.inc: Add m4_version_prereq. --- libmailutils/Makefile.am | 2 +- libmailutils/tests/Decode | 5 + libmailutils/tests/Encode | Bin 0 -> 256 bytes libmailutils/tests/Makefile.am | 100 +++ libmailutils/tests/addr.c | 103 +++ libmailutils/tests/address.at | 1080 +++++++++++++++++++++++++ libmailutils/tests/argcv.at | 91 +++ libmailutils/tests/argcv.c | 60 ++ libmailutils/tests/atlocal.in | 9 + libmailutils/tests/base64d.at | 39 + libmailutils/tests/base64e.at | 39 + libmailutils/tests/decode2047.at | 60 ++ libmailutils/tests/decode2047.c | 82 ++ libmailutils/tests/encode2047.at | 32 + libmailutils/tests/encode2047.c | 207 +++++ libmailutils/tests/fltst.c | 195 +++++ libmailutils/tests/mailcap.at | 279 +++++++ libmailutils/tests/mailcap.c | 102 +++ libmailutils/tests/mime.at | 220 +++++ libmailutils/tests/mimetest.c | 296 +++++++ libmailutils/tests/testsuite.at | 30 + libmailutils/tests/url-parse.c | 142 ++++ libmailutils/tests/url.at | 776 ++++++++++++++++++ libmailutils/testsuite/.gitignore | 7 - libmailutils/testsuite/Addrs | 644 --------------- libmailutils/testsuite/Argcv | 52 -- libmailutils/testsuite/Decode | 5 - libmailutils/testsuite/Decode2047 | 36 - libmailutils/testsuite/Encode | Bin 256 -> 0 bytes libmailutils/testsuite/Encode2047 | 27 - libmailutils/testsuite/Mailcap | 195 ----- libmailutils/testsuite/Makefile.am | 92 --- libmailutils/testsuite/Mime | 212 ----- libmailutils/testsuite/Urls | 629 -------------- libmailutils/testsuite/lib/DISTFILES | 1 - libmailutils/testsuite/lib/mailbox.exp | 243 ------ libmailutils/testsuite/mailbox/DISTFILES | 9 - libmailutils/testsuite/mailbox/address.exp | 48 -- libmailutils/testsuite/mailbox/argcv.exp | 55 -- libmailutils/testsuite/mailbox/base64.exp | 37 - libmailutils/testsuite/mailbox/decode2047.exp | 50 -- libmailutils/testsuite/mailbox/encode2047.exp | 62 -- libmailutils/testsuite/mailbox/list.exp | 330 -------- libmailutils/testsuite/mailbox/mailcap.exp | 71 -- libmailutils/testsuite/mailbox/mime.exp | 39 - libmailutils/testsuite/mailbox/url.exp | 48 -- 46 files changed, 3948 insertions(+), 2893 deletions(-) create mode 100644 libmailutils/tests/Decode create mode 100644 libmailutils/tests/Encode create mode 100644 libmailutils/tests/Makefile.am create mode 100644 libmailutils/tests/addr.c create mode 100644 libmailutils/tests/address.at create mode 100644 libmailutils/tests/argcv.at create mode 100644 libmailutils/tests/argcv.c create mode 100644 libmailutils/tests/atlocal.in create mode 100644 libmailutils/tests/base64d.at create mode 100644 libmailutils/tests/base64e.at create mode 100644 libmailutils/tests/decode2047.at create mode 100644 libmailutils/tests/decode2047.c create mode 100644 libmailutils/tests/encode2047.at create mode 100644 libmailutils/tests/encode2047.c create mode 100644 libmailutils/tests/fltst.c create mode 100644 libmailutils/tests/mailcap.at create mode 100644 libmailutils/tests/mailcap.c create mode 100644 libmailutils/tests/mime.at create mode 100644 libmailutils/tests/mimetest.c create mode 100644 libmailutils/tests/testsuite.at create mode 100644 libmailutils/tests/url-parse.c create mode 100644 libmailutils/tests/url.at delete mode 100644 libmailutils/testsuite/.gitignore delete mode 100644 libmailutils/testsuite/Addrs delete mode 100644 libmailutils/testsuite/Argcv delete mode 100644 libmailutils/testsuite/Decode delete mode 100644 libmailutils/testsuite/Decode2047 delete mode 100644 libmailutils/testsuite/Encode delete mode 100644 libmailutils/testsuite/Encode2047 delete mode 100644 libmailutils/testsuite/Mailcap delete mode 100644 libmailutils/testsuite/Makefile.am delete mode 100644 libmailutils/testsuite/Mime delete mode 100644 libmailutils/testsuite/Urls delete mode 100644 libmailutils/testsuite/lib/DISTFILES delete mode 100644 libmailutils/testsuite/lib/mailbox.exp delete mode 100644 libmailutils/testsuite/mailbox/DISTFILES delete mode 100644 libmailutils/testsuite/mailbox/address.exp delete mode 100644 libmailutils/testsuite/mailbox/argcv.exp delete mode 100644 libmailutils/testsuite/mailbox/base64.exp delete mode 100644 libmailutils/testsuite/mailbox/decode2047.exp delete mode 100644 libmailutils/testsuite/mailbox/encode2047.exp delete mode 100644 libmailutils/testsuite/mailbox/list.exp delete mode 100644 libmailutils/testsuite/mailbox/mailcap.exp delete mode 100644 libmailutils/testsuite/mailbox/mime.exp delete mode 100644 libmailutils/testsuite/mailbox/url.exp (limited to 'libmailutils') diff --git a/libmailutils/Makefile.am b/libmailutils/Makefile.am index f28b1bdbc..ea8d7389d 100644 --- a/libmailutils/Makefile.am +++ b/libmailutils/Makefile.am @@ -24,7 +24,7 @@ YLWRAP = $(SHELL) $(mu_aux_dir)/gylwrap AM_YFLAGS=-vt AM_LFLAGS=-dvp -SUBDIRS = testsuite +SUBDIRS = tests lib_LTLIBRARIES = libmailutils.la diff --git a/libmailutils/tests/Decode b/libmailutils/tests/Decode new file mode 100644 index 000000000..da6724734 --- /dev/null +++ b/libmailutils/tests/Decode @@ -0,0 +1,5 @@ +AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4 +OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx +cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmq +q6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj +5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w== diff --git a/libmailutils/tests/Encode b/libmailutils/tests/Encode new file mode 100644 index 000000000..c86626638 Binary files /dev/null and b/libmailutils/tests/Encode differ diff --git a/libmailutils/tests/Makefile.am b/libmailutils/tests/Makefile.am new file mode 100644 index 000000000..4cee19cfb --- /dev/null +++ b/libmailutils/tests/Makefile.am @@ -0,0 +1,100 @@ +# This file is part of GNU Mailutils. +# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# +# GNU Mailutils is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mailutils. If not, see . + +EXTRA_DIST = $(TESTSUITE_AT) testsuite package.m4 +DISTCLEANFILES = atconfig $(check_SCRIPTS) +MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE) + +## ------------ ## +## package.m4. ## +## ------------ ## + +$(srcdir)/package.m4: $(top_srcdir)/configure.ac + $(AM_V_GEN){ \ + echo '# Signature of the current package.'; \ + echo 'm4_define([AT_PACKAGE_NAME], [@PACKAGE_NAME@])'; \ + echo 'm4_define([AT_PACKAGE_TARNAME], [@PACKAGE_TARNAME@])'; \ + echo 'm4_define([AT_PACKAGE_VERSION], [@PACKAGE_VERSION@])'; \ + echo 'm4_define([AT_PACKAGE_STRING], [@PACKAGE_STRING@])'; \ + echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \ + } >$(srcdir)/package.m4 + +# + +## -------------------------- ## +## Non-installable programs +## -------------------------- ## + +INCLUDES = @MU_LIB_COMMON_INCLUDES@ +noinst_PROGRAMS = \ + addr\ + argcv\ + decode2047\ + encode2047\ + fltst\ + mailcap\ + mimetest\ + url-parse + +LDADD =\ + ../../lib/libmuaux.la\ + ${MU_LIB_MBOX}\ + ${MU_LIB_IMAP}\ + ${MU_LIB_POP}\ + ${MU_LIB_AUTH}\ + @MU_AUTHLIBS@\ + ${MU_LIB_MAILUTILS} + +EXTRA_DIST += Encode Decode + +## ------------ ## +## Test suite. ## +## ------------ ## + +TESTSUITE_AT = \ + address.at\ + argcv.at\ + base64d.at\ + base64e.at\ + decode2047.at\ + encode2047.at\ + mailcap.at\ + mime.at\ + testsuite.at\ + url.at + +TESTSUITE = $(srcdir)/testsuite +M4=m4 + +AUTOTEST = $(AUTOM4TE) --language=autotest +$(TESTSUITE): package.m4 $(TESTSUITE_AT) + $(AM_V_GEN)$(AUTOTEST) -I $(srcdir) -I $(top_srcdir)/testsuite testsuite.at -o $@.tmp + $(AM_V_at)mv $@.tmp $@ + +atconfig: $(top_builddir)/config.status + cd $(top_builddir) && ./config.status tests/$@ + +clean-local: + @test ! -f $(TESTSUITE) || $(SHELL) $(TESTSUITE) --clean + +check-local: atconfig atlocal $(TESTSUITE) + @$(SHELL) $(TESTSUITE) + +# Run the test suite on the *installed* tree. +#installcheck-local: +# $(SHELL) $(TESTSUITE) AUTOTEST_PATH=$(exec_prefix)/bin + + diff --git a/libmailutils/tests/addr.c b/libmailutils/tests/addr.c new file mode 100644 index 000000000..7e91f9953 --- /dev/null +++ b/libmailutils/tests/addr.c @@ -0,0 +1,103 @@ +/* GNU Mailutils -- a suite of utilities for electronic mail + Copyright (C) 1999, 2000, 2001, 2004, 2005, 2007, 2010 Free Software + Foundation, Inc. + + GNU Mailutils is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Mailutils is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Mailutils; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301 USA */ + +#ifdef HAVE_CONFIG_H +# include +#endif +#include +#include +#include + +#include +#include +#include +#include + +#define EPARSE MU_ERR_NOENT + +int +main (int argc, char *argv[]) +{ + char *str; + size_t i; + size_t pcount = 0; + int status; + const char *buf; + mu_address_t address = NULL; + struct mu_address hint; + + if (argc != 2) + { + fprintf (stderr, "usage: %s address\n", argv[0]); + return 2; + } + str = argv[1]; + + hint.domain = "localhost"; + status = mu_address_create_hint (&address, str, &hint, MU_ADDR_HINT_DOMAIN); + mu_address_get_count (address, &pcount); + + if (status) + { + fprintf (stderr, "%s\n", mu_errname (status)); + return 1; + } + else + printf ("naddr: %lu\n", (unsigned long) pcount); + + for (i = 1; i <= pcount; i++) + { + int isgroup; + + mu_address_is_group (address, i, &isgroup); + printf ("%lu. ", (unsigned long) i); + + if (isgroup) + { + mu_address_sget_personal (address, i, &buf); + printf ("group <%s>:\n", buf); + } + else + { + mu_address_sget_email (address, i, &buf); + printf ("email <%s>:\n", buf); + } + + if (mu_address_sget_personal (address, i, &buf) == 0 && buf && !isgroup) + printf ("personal <%s>\n", buf); + + if (mu_address_sget_comments (address, i, &buf) == 0 && buf) + printf ("comments <%s>\n", buf); + + if (mu_address_sget_local_part (address, i, &buf) == 0 && buf) + { + printf ("local-part <%s>", buf); + + if (mu_address_sget_domain (address, i, &buf) == 0 && buf) + printf (" domain <%s>", buf); + + printf ("\n"); + } + + if (mu_address_sget_route (address, i, &buf) == 0 && buf) + printf ("route <%s>\n", buf); + } + mu_address_destroy (&address); + return 0; +} diff --git a/libmailutils/tests/address.at b/libmailutils/tests/address.at new file mode 100644 index 000000000..9ce9fa3ae --- /dev/null +++ b/libmailutils/tests/address.at @@ -0,0 +1,1080 @@ +# This file is part of GNU Mailutils. -*- Autotest -*- +# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# +# GNU Mailutils is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mailutils. If not, see . +# This file is part of Mailfromd testsuite. + +dnl ------------------------------------------------------------ +dnl TESTADDR(ADDR, [KW = `'], [STATUS = `0'], [STDOUT = `'], +dnl [STDERR = `'], [RUN-IF-FAIL], [RUN-IF-PASS]) +dnl +m4_define([TESTADDR],[ +AT_SETUP([Address: [$1]]) +AT_KEYWORDS([address $2]) +AT_CHECK([addr '[$1]'],m4_shift(m4_shift($@))) +AT_CLEANUP +]) + +TESTADDR([Sam <@[matrix (smtp)], @[nexus: [node 12]]:sroberts@[10].[1]>],[], +[1], +[], +[MU_ERR_BAD_822_FORMAT +]) + +TESTADDR([a@b,z@y],[], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([,a@b,z@y],[], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([a@b,z@y,],[], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([,a@b,z@y,],[], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([a@b,,z@y],[], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([a@b,,,z@y],[], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([,,,a@b,,,],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([,a@b],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([a@b,],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([,],[], +[1], +[], +[MU_ERR_EMPTY_ADDRESS +]) + +TESTADDR([,,],[], +[1], +[], +[MU_ERR_EMPTY_ADDRESS +]) + +TESTADDR([,,],[], +[1], +[], +[MU_ERR_EMPTY_ADDRESS +]) + +TESTADDR([a group: a@b,z@y;],[group], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([a group: ,a@b,z@y;],[group], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([a group: a@b,z@y,;],[group], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([a group: ,a@b,z@y,;],[group], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([a group: a@b,,z@y;],[group], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([a group: a@b,,,z@y;],[group], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([a group: ,,,a@b,,, ;],[group], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([a group: ,a@b ;],[group], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([a group: a@b, ;],[group], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([a group: , ;],[group], +[1], +[], +[MU_ERR_EMPTY_ADDRESS +]) + +TESTADDR([a group: ,, ;],[group], +[1], +[], +[MU_ERR_EMPTY_ADDRESS +]) + +TESTADDR([a group: ,, ;],[group], +[1], +[], +[MU_ERR_EMPTY_ADDRESS +]) + +TESTADDR([Sam <@[matrix (smtp)], @[nexus: [node 12]]:sroberts@[10].[1]> ;],[], +[1], +[], +[MU_ERR_BAD_822_FORMAT +]) + +TESTADDR([Aliens: Sam <@[matrix (smtp)]: sam@sam>, sroberts@[10].[1];],[], +[0], +[[naddr: 2 +1. email : +personal +local-part domain +route <@[matrix (smtp)]> +2. email : +local-part domain <[10].[1]> +]]) + +TESTADDR([lo@hi, Aliens: Sam <@[matrix (smtp)]: sam@sam>, sroberts@[10].[1];], +[], +[0], +[[naddr: 3 +1. email : +local-part domain +2. email : +personal +local-part domain +route <@[matrix (smtp)]> +3. email : +local-part domain <[10].[1]> +]]) + +TESTADDR([Aliens: Sam <@[matrix (smtp)]: sam@sam>, sroberts@[10].[1];, hi@lo], +[], +[0], +[[naddr: 3 +1. email : +personal +local-part domain +route <@[matrix (smtp)]> +2. email : +local-part domain <[10].[1]> +3. email : +local-part domain +]]) + +TESTADDR([lo@hi, Aliens: Sam <@[matrix (smtp)]: sam@sam>, sroberts@[10].[1];, hi@lo], +[], +[0], +[[naddr: 4 +1. email : +local-part domain +2. email : +personal +local-part domain +route <@[matrix (smtp)]> +3. email : +local-part domain <[10].[1]> +4. email : +local-part domain +]]) + +TESTADDR([Sam <@mail2.uniserve.com:sroberts@uniserve.com>],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +route <@mail2.uniserve.com> +]) + +TESTADDR([< (hey) @ (hey, )smtp1.sympatico.ca, mail2.uniserve.com (hoo!):sroberts@uniserve.com>],[], +[1], +[], +[MU_ERR_BAD_822_FORMAT +]) + +TESTADDR([hw@570.com (Hardware Support Account)],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain <570.com> +]) + +TESTADDR([list-ietf-wg-apps-drums@faerber.muc.de (=?ISO-8859-1?Q?Claus_F=E4rber?=)],[], +[0], +[naddr: 1 +1. email : +personal <=?ISO-8859-1?Q?Claus_F=E4rber?=> +local-part domain +]) + +TESTADDR([(mutt #369), guug-bugs-closed@guug.de (#369)],[], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +personal <#369> +local-part domain +]) + +dnl -------------------------------------------------------------------------- +dnl FIXME: +m4_if([TESTADDR(["'Aernoudt Bottemanne'" ],[], +[0], +[naddr: 1 +1. email : +personal <'Aernoudt Bottemanne'> +local-part domain +]) + +TESTADDR(["'Haag, Ullrich - MBDC'" ,],[], +[0], +[naddr: 1 +1. email : +personal <'Haag, Ullrich - MBDC'> +local-part domain +]) + +TESTADDR(["'Michael C. Ibarra'" , arl@q7.net, Al ], +[], +[0], +[naddr: 3 +1. email : +personal <'Michael C. Ibarra'> +local-part domain +2. email : +local-part domain +3. email : +personal +local-part domain +]) + +TESTADDR(["'Sam Roberts'" ],[], +[0], +[naddr: 1 +1. email : +personal <'Sam Roberts'> +local-part domain +]) + +TESTADDR(["'paul@pitbull-productions.com'" ,],[], +[0], +[naddr: 1 +1. email : +personal <'paul@pitbull-productions.com'> +local-part domain +]) + +TESTADDR(["'sam@cogent.ca'" , "'sroberts@uniserve.com'"],[], +[1], +[], +[MU_ERR_BAD_822_FORMAT +]) + +TESTADDR(["'sroberts\@certicom\.ca'" ],[] +[0], +[naddr: 1 +1. email : +personal <'sroberts@certicom.ca'> +local-part domain +]) + +]) +dnl -------------------------------------------------------------------------- + +TESTADDR(["=?iso-8859-1?Q?Juan_Carlos_Marcos_Rodr=EDguez?=" ],[], +[0], +[naddr: 1 +1. email : +personal <=?iso-8859-1?Q?Juan_Carlos_Marcos_Rodr=EDguez?=> +local-part domain +]) + +TESTADDR(["Christian Edward Gruber" ,],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["D. J. Bernstein" <"djb- "@cr.yp.to>],[], +[0], +[naddr: 1 +1. email <"djb- "@cr.yp.to>: +personal +local-part domain +]) + +TESTADDR(["D. J. Bernstein" , drums@cs.utk.edu],[], +[0], +[naddr: 2 +1. email : +personal +local-part domain +2. email : +local-part domain +]) + +TESTADDR(["Dave Sill ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["Dave \(work\) Baerg \(E-mail\)" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["Demian" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["Detailed Revision/Update of Message Standards" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["Fred" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain <__nowhere__.users.sourceforge.net> +]) + +TESTADDR(["Haag, Ullrich - MBDC" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["Jacob Palme" , ],[], +[0], +[naddr: 2 +1. email : +personal +local-part domain +2. email : +local-part domain +]) + +dnl FIXME +m4_if([ +TESTADDR(["Jakob 'sparky' Kaivo" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) +]) + +TESTADDR(["Lee R. Copp" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["Lionel Johnson" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["Martin [Keso] Keseg" ],[], +[0], +[[naddr: 1 +1. email : +personal +local-part domain +]]) + +TESTADDR(["}{ristoph" ],[], +[0], +[naddr: 1 +1. email : +personal <}{ristoph> +local-part domain +]) + +TESTADDR(["fmartens-2000" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +dnl FIXME +m4_if([ +TESTADDR(["g'o'tz ohnesorge" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +]) + +TESTADDR(["gao jie" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["gnupg-devel@gnupg.org" ], +[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["gpg-devel" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["jigang" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["misc@openbsd.org" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["misc@openbsd.org" , brian@Awfulhak.org],[], +[0], +[naddr: 2 +1. email : +personal +local-part domain +2. email : +local-part domain +]) + +TESTADDR(["mutt-dev @ mutt . orgThomas Roessler" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["zwk@f36.n480.z2.fidonet.org" ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +dnl FIXME +m4_if([ +TESTADDR(['Dan Dall'Acqua' , 'Dave Shyong'],[], +[1], +[], +[MU_ERR_BAD_822_FORMAT +]) + +]) + +TESTADDR([0xdeadbeef-request@petting-zoo.net],[], +[0], +[naddr: 1 +1. email <0xdeadbeef-request@petting-zoo.net>: +local-part <0xdeadbeef-request> domain +]) + +TESTADDR([102023-00406421@cnxt19932218.conexant.com],[], +[0], +[naddr: 1 +1. email <102023-00406421@cnxt19932218.conexant.com>: +local-part <102023-00406421> domain +]) + +TESTADDR([218164.24.43@jobcontrolcenter.com],[], +[0], +[naddr: 1 +1. email <218164.24.43@jobcontrolcenter.com>: +local-part <218164.24.43> domain +]) + +TESTADDR([<0xdeadbeef-request@petting-zoo.net>],[], +[0], +[naddr: 1 +1. email <0xdeadbeef-request@petting-zoo.net>: +local-part <0xdeadbeef-request> domain +]) + +TESTADDR([<>],[], +[0], +[naddr: 1 +1. email <>: +]) + +TESTADDR([],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([],[], +[1], +[], +[MU_ERR_BAD_822_FORMAT +]) + +TESTADDR([],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([, ,],[], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([=?ISO-8859-1?Q?Kolbj=F8rn_Barmen?= ],[], +[0], +[naddr: 1 +1. email : +personal <=?ISO-8859-1?Q?Kolbj=F8rn_Barmen?=> +local-part domain +]) + +TESTADDR([=?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= ],[], +[0], +[naddr: 1 +1. email : +personal <=?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?=> +local-part domain +]) + +TESTADDR([=?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= ,],[], +[0], +[naddr: 1 +1. email : +personal <=?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?=> +local-part domain +]) + +TESTADDR([=?US-ASCII?Q?gary=5Fc?= ],[], +[0], +[naddr: 1 +1. email : +personal <=?US-ASCII?Q?gary=5Fc?=> +local-part domain +]) + +TESTADDR([=?iso-8859-1?Q?Fr=E9d=E9ric_L_=2E_W_=2E?= Meunier <0@pervalidus.net>],[], +[0], +[naddr: 1 +1. email <0@pervalidus.net>: +personal <=?iso-8859-1?Q?Fr=E9d=E9ric_L_=2E_W_=2E?= Meunier> +local-part <0> domain +]) + +TESTADDR([=?iso-8859-1?Q?Fr=E9d=E9ric_L_=2E_W_=2E?= Meunier <0@pervalidus.net>,],[], +[0], +[naddr: 1 +1. email <0@pervalidus.net>: +personal <=?iso-8859-1?Q?Fr=E9d=E9ric_L_=2E_W_=2E?= Meunier> +local-part <0> domain +]) + +TESTADDR([=?iso-8859-1?Q?Fr=E9d=E9ric_L_=2E_W_=2E_Meunier?= <0@pervalidus.net>],[], +[0], +[naddr: 1 +1. email <0@pervalidus.net>: +personal <=?iso-8859-1?Q?Fr=E9d=E9ric_L_=2E_W_=2E_Meunier?=> +local-part <0> domain +]) + +TESTADDR([=?iso-8859-1?Q?J=F8rgen_Thomsen?= ],[], +[0], +[naddr: 1 +1. email : +personal <=?iso-8859-1?Q?J=F8rgen_Thomsen?=> +local-part domain +]) + +TESTADDR([=?iso-8859-1?Q?Jos=3F_C=2E_Garc=EDa_Sogo?= ],[], +[0], +[naddr: 1 +1. email : +personal <=?iso-8859-1?Q?Jos=3F_C=2E_Garc=EDa_Sogo?=> +local-part domain +]) + +TESTADDR([=?iso-8859-1?Q?Mikko_H=E4nninen?= ],[], +[0], +[naddr: 1 +1. email : +personal <=?iso-8859-1?Q?Mikko_H=E4nninen?=> +local-part domain +]) + +TESTADDR([=?iso-8859-1?Q?Mikko_H=E4nninen?= ],[], +[0], +[naddr: 1 +1. email : +personal <=?iso-8859-1?Q?Mikko_H=E4nninen?=> +local-part domain +]) + +TESTADDR([=?iso-8859-1?Q?R=E9mi_Guyomarch?= ],[], +[0], +[naddr: 1 +1. email : +personal <=?iso-8859-1?Q?R=E9mi_Guyomarch?=> +local-part domain <321.net> +]) + +TESTADDR([=?iso-8859-1?Q?Ulf_M=F6ller?= ],[], +[0], +[naddr: 1 +1. email : +personal <=?iso-8859-1?Q?Ulf_M=F6ller?=> +local-part domain +]) + +TESTADDR([ANDREW MARTIN ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([Abhay Ghaisas , mutt-dev@mutt.org],[], +[0], +[naddr: 2 +1. email : +personal +local-part domain +2. email : +local-part domain +]) + +TESTADDR([Brian Salter-Duke ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([Catharine Shyong ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([DRUMS-Last-Call:;],[], +[1], +[], +[MU_ERR_EMPTY_ADDRESS +]) + +TESTADDR([Detailed Revision/Update of Message Standards ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([Eric Allman ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([Gary ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([IETF working group on revision of mail standards ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([IETF-Announce:;],[], +[1], +[], +[MU_ERR_EMPTY_ADDRESS +]) + +TESTADDR([IETF-Announce:;, drums@cs.utk.edu],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([Jean-Baptiste Marchand ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([Jonathan Rozes ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([Jose "C." Garcia Sogo],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +dnl FIXME +m4_if([ +TESTADDR([Marco d'Itri ,[], +[0], +1. email : +personal +local-part domain +]) +]) + +TESTADDR([No_Reply-To@mapquest.com],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([OSULLIE@rte.ie, skidswam@hotmail.com, boot],[], +[0], +[naddr: 3 +1. email : +local-part domain +2. email : +local-part domain +3. email : +local-part domain +]) + +TESTADDR([Paul Hoffman / IMC ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([Sam],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([Sam Roberts ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([Sam_Roberts/Certicom%Certicom@certicom.com],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([Thomas Roessler , 490@bugs.guug.de],[], +[0], +[naddr: 2 +1. email : +personal +local-part domain +2. email <490@bugs.guug.de>: +local-part <490> domain +]) + +TESTADDR([Thomas Roessler , g10@gnupg.org],[], +[0], +[naddr: 2 +1. email : +personal +local-part domain +2. email : +local-part domain +]) + +TESTADDR([ddickey@ip-12-22-50-150.hqglobal.net],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +TESTADDR([ktb ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +dnl FIXME +m4_if([ +TESTADDR([mcaustin@eudoramail.com, aposner@usaid.gov, Kieran.O'Leary@anpost.ie],[], +[0], +[naddr: 3 +1. email : +local-part domain +2. email : +local-part domain +3. email : +local-part domain +]) +]) + +TESTADDR([rfunk@wks.uts.ohio-state.eduofflinemailer-bounce@dikke.penguin.nl],[], +[1], +[], +[MU_ERR_BAD_822_FORMAT +]) + +TESTADDR([root],[], +[0], +[naddr: 1 +1. email : +local-part domain +]) + +dnl FIXME srr => error MU_ERR_BAD_822_FORMAT + +TESTADDR([whom it may concern: ;;whom.it.may.concern: ;],[], +[1], +[], +[MU_ERR_BAD_822_FORMAT +]) + +TESTADDR([whom it may concern: mutt-dev@mutt.org, mutt-users@mutt.org;],[], +[0], +[naddr: 2 +1. email : +local-part domain +2. email : +local-part domain +]) + +TESTADDR([Sergey V. Poznyakoff ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR([P. D. Q. Bach ],[], +[0], +[naddr: 1 +1. email : +personal +local-part domain +]) + +TESTADDR(["A bad quote\" ],[], +[1], +[], +[MU_ERR_BAD_822_FORMAT +]) + + + + + + diff --git a/libmailutils/tests/argcv.at b/libmailutils/tests/argcv.at new file mode 100644 index 000000000..5e40527ba --- /dev/null +++ b/libmailutils/tests/argcv.at @@ -0,0 +1,91 @@ +# This file is part of GNU Mailutils. -*- Autotest -*- +# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# +# GNU Mailutils is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mailutils. If not, see . +# This file is part of Mailfromd testsuite. + +dnl ------------------------------------------------------------ +dnl TESTARGS([NAME], [KW = `'], [INPUT], [STDOUT = `'], +dnl [STDERR = `'], [RUN-IF-FAIL], [RUN-IF-PASS]) +dnl +m4_define([TESTARGS],[ +AT_SETUP([Argcv: $1]) +AT_KEYWORDS([argcv $2]) +AT_CHECK([ +AT_DATA([input],[$3 +]) +argcv < input],[0],m4_shift(m4_shift(m4_shift($@)))) +AT_CLEANUP +]) + +dnl ------------------------------------------------------------ +TESTARGS([simple input],[], +[1 2 3], +[3: 1 2 3 +]) + +TESTARGS([quoted space],[], +[quoted\ space], +[1: "quoted space" +]) + +TESTARGS([tab character],[], +[a "tab character"], +[2: a tab\tcharacter +]) + +TESTARGS([octal and hex escapes],[], +[\157\143\164\141\154\40and\x20\x68\x65\x78], +[1: "octal and hex" +]) + +TESTARGS([octal and hex escapes 2],[], +[\157\143\164\141\154\40 and \x20\x68\x65\x78], +[3: "octal " and " hex" +]) + +TESTARGS([escape representation],[], +[A\x3-\48\39], +[1: A\003-\0048\0039 +]) + +TESTARG([8-bit input],[], +[верхняя половина таблицы], +[3: \327\305\322\310\316\321\321 \320\317\314\317\327\311\316\301 \324\301\302\314\311\303\331]) + +TESTARG([misquoted input],[], +[messed up'quotations ' in "a single'" "command" lin"e], +[6: messed "upquotations " in "a single'" command "lin\"e" +]) + +TESTARG([unbalanced quote],[], +['unbalanced "quote], +[2: 'unbalanced "\"quote" +]) + +TESTARG([unbalanced quote 2],[], +[unbalanced "quote], +[2: unbalanced "\"quote" +]) + +TESTARG([unbalanced quote 3],[], +["], +[1: "\"" +]) + + + + + + diff --git a/libmailutils/tests/argcv.c b/libmailutils/tests/argcv.c new file mode 100644 index 000000000..3253feb70 --- /dev/null +++ b/libmailutils/tests/argcv.c @@ -0,0 +1,60 @@ +/* GNU Mailutils -- a suite of utilities for electronic mail + Copyright (C) 2005, 2007, 2009, 2010 Free Software Foundation, Inc. + + GNU Mailutils is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Mailutils is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Mailutils; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301 USA */ + +#ifdef HAVE_CONFIG_H +# include +#endif +#include +#include +#include +#include +#include +#include +#include + +int +main (int argc, char **argv) +{ + char *delim = ""; + char *comment = "#"; + char buf[512]; + + while (fgets (buf, sizeof buf, stdin)) + { + int status, c; + char **v; + char *s; + + status = mu_argcv_get (buf, delim, comment, &c, &v); + if (status) + { + fprintf (stderr, "cannot parse: %s\n", mu_strerror (status)); + continue; + } + status = mu_argcv_string (c, v, &s); + if (status) + fprintf (stderr, "cannot create string: %s\n", mu_strerror (status)); + else + { + printf ("%d: %s\n", c, s); + free (s); + } + mu_argcv_free (c, v); + } + exit (0); +} diff --git a/libmailutils/tests/atlocal.in b/libmailutils/tests/atlocal.in new file mode 100644 index 000000000..7e81e439c --- /dev/null +++ b/libmailutils/tests/atlocal.in @@ -0,0 +1,9 @@ +# @configure_input@ -*- shell-script -*- +# Configurable variable values for Mailutils test suite. +# Copyright (C) 2004, 2010 Free Software Foundation, Inc. + +PATH=@abs_builddir@:@abs_top_builddir@/frm:$top_srcdir:$srcdir:$PATH +top_srcdir=@abs_top_srcdir@ +top_builddir=@abs_top_builddir@ + + \ No newline at end of file diff --git a/libmailutils/tests/base64d.at b/libmailutils/tests/base64d.at new file mode 100644 index 000000000..7483dd660 --- /dev/null +++ b/libmailutils/tests/base64d.at @@ -0,0 +1,39 @@ +# This file is part of GNU Mailutils. -*- Autotest -*- +# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# +# GNU Mailutils is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mailutils. If not, see . +# This file is part of Mailfromd testsuite. + +AT_SETUP([base64 decoding (read)]) +AT_KEYWORDS([base64 base64d base64dr decode]) + +AT_CHECK([ +cp $top_srcdir/libmailutils/tests/Encode expout +fltst base64 decode read linelen=0 < $top_srcdir/libmailutils/tests/Decode], +[0], +[expout]) + +AT_CLEANUP + + +AT_SETUP([base64 decoding (write)]) +AT_KEYWORDS([base64 base64d base64dw decode]) + +AT_CHECK([ +cp $top_srcdir/libmailutils/tests/Encode expout +fltst base64 decode write linelen=0 < $top_srcdir/libmailutils/tests/Decode], +[0], +[expout]) + +AT_CLEANUP diff --git a/libmailutils/tests/base64e.at b/libmailutils/tests/base64e.at new file mode 100644 index 000000000..452ed8f19 --- /dev/null +++ b/libmailutils/tests/base64e.at @@ -0,0 +1,39 @@ +# This file is part of GNU Mailutils. -*- Autotest -*- +# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# +# GNU Mailutils is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mailutils. If not, see . +# This file is part of Mailfromd testsuite. + +AT_SETUP([base64 encoding (read)]) +AT_KEYWORDS([base64 base64e base64er encode]) + +AT_CHECK([ +cp $top_srcdir/libmailutils/tests/Decode expout +fltst base64 encode read nl < $top_srcdir/libmailutils/tests/Encode], +[0], +[expout]) + +AT_CLEANUP + + +AT_SETUP([base64 encoding (write)]) +AT_KEYWORDS([base64 base64e base64ew encode]) + +AT_CHECK([ +cp $top_srcdir/libmailutils/tests/Decode expout +fltst base64 encode write nl < $top_srcdir/libmailutils/tests/Encode], +[0], +[expout]) + +AT_CLEANUP \ No newline at end of file diff --git a/libmailutils/tests/decode2047.at b/libmailutils/tests/decode2047.at new file mode 100644 index 000000000..4f52d8dc9 --- /dev/null +++ b/libmailutils/tests/decode2047.at @@ -0,0 +1,60 @@ +# This file is part of GNU Mailutils. -*- Autotest -*- +# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# +# GNU Mailutils is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mailutils. If not, see . +# This file is part of Mailfromd testsuite. + +dnl ------------------------------------------------------------ +dnl TESTDEC2047([NAME], [KW = `'], [INPUT], [STDOUT = `'], +dnl [STDERR = `'], [RUN-IF-FAIL], [RUN-IF-PASS]) +dnl +m4_define([TESTDEC2047],[ +AT_SETUP([Decode 2047: m4_if([$1],[],[$3],[$1])]) +AT_KEYWORDS([decode2047 decode $2]) +AT_CHECK([ +AT_DATA([input],[$3 +]) +decode2047 -p < input],[0],m4_shift(m4_shift(m4_shift($@)))) +AT_CLEANUP +]) + +dnl ------------------------------------------------------------ +TESTDEC2047([],[decode01], +[=?US-ASCII?Q?Keith_Moore?= ], +[Keith Moore +]) + +TESTDEC2047([],[decode02], +[=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ], +[Keld J\370rn Simonsen +]) + +TESTDEC2047([],[decode03], +[=?ISO-8859-1?Q?Andr=E9?= Pirard ], +[Andr\351 Pirard +]) + +TESTDEC2047([],[decode04], +[=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= ... =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=], +[If you can read this yo ... u understand the example. +]) + +# Malformed input string: lacks trailing =. MU 0.6.90 hanged on it. +TESTDEC2047([malformed input],[decode05], +[=?koi8-r?B?RndkOiDSxcfJ09TSwcPJ0SDEz83FzsE?=], +[Fwd: \322\305\307\311\323\324\322\301\303\311\321 \304\317\315\305 +]) + + + diff --git a/libmailutils/tests/decode2047.c b/libmailutils/tests/decode2047.c new file mode 100644 index 000000000..f7c36a917 --- /dev/null +++ b/libmailutils/tests/decode2047.c @@ -0,0 +1,82 @@ +/* GNU Mailutils -- a suite of utilities for electronic mail + Copyright (C) 2003, 2007, 2010 Free Software Foundation, Inc. + + GNU Mailutils is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Mailutils is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Mailutils; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301 USA */ + +#ifdef HAVE_CONFIG_H +# include +#endif +#include +#include +#include +#include + +#include + +#define ISPRINT(c) ((c)=='\t'||(c)==' '||(c)=='\n'||\ + ((unsigned char)(c)>' '&&(unsigned char)(c)<128)) + +void +print (char *p, int printable) +{ + for (; *p; p++) + { + if (printable && *p != '\n' && !ISPRINT (*p)) + printf ("\\%03o", *(unsigned char *) p); + else + putchar (*p); + } +} + +int +main (int argc, char *argv[]) +{ + char buf[256]; + int c, printable = 0; + char *charset = "iso-8859-1"; + + while ((c = getopt (argc, argv, "c:p")) != EOF) + switch (c) + { + case 'c': + charset = optarg; + break; + case 'p': + printable = 1; + break; + + default: + exit (1); + } + + while (fgets (buf, sizeof (buf), stdin)) + { + char *p = NULL; + int rc, len; + + len = strlen (buf); + if (len > 0 && buf[len - 1] == '\n') + buf[len - 1] = 0; + rc = mu_rfc2047_decode (charset, buf, &p); + if (rc) + fprintf (stderr, "%s", mu_strerror (rc)); + else if (p) + print (p, printable); + putchar ('\n'); + free (p); + } + return 0; +} diff --git a/libmailutils/tests/encode2047.at b/libmailutils/tests/encode2047.at new file mode 100644 index 000000000..3b914e6ab --- /dev/null +++ b/libmailutils/tests/encode2047.at @@ -0,0 +1,32 @@ +# This file is part of GNU Mailutils. -*- Autotest -*- +# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# +# GNU Mailutils is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mailutils. If not, see . +# This file is part of Mailfromd testsuite. + +AT_SETUP([encode2047]) +AT_KEYWORDS([encode]) + +AT_CHECK([ +AT_DATA(input,[dnl +\\345\326\305\304\316\305\327\316\331\312\040\317\324\336\305\324 +]) + +encode2047 -c koi8-r -eB -o < input], +[0], +[=?koi8-r?B?5dbFxM7F187ZyiDP1N7F1A==?= +]) + +AT_CLEANUP + diff --git a/libmailutils/tests/encode2047.c b/libmailutils/tests/encode2047.c new file mode 100644 index 000000000..dbf362030 --- /dev/null +++ b/libmailutils/tests/encode2047.c @@ -0,0 +1,207 @@ +/* GNU Mailutils -- a suite of utilities for electronic mail + Copyright (C) 2005, 2006, 2007, 2010 Free Software Foundation, Inc. + + GNU Mailutils is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Mailutils is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Mailutils; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301 USA */ + +#ifdef HAVE_CONFIG_H +# include +#endif +#include +#include +#include +#include + +#include + +/* Replace all octal escapes in BUF with the corresponding characters. */ +static void +decode_octal (char *buf) +{ + char *p; + unsigned i, n; + + for (p = buf; *p;) + { + if (*buf == '\\') + { + buf++; + switch (*buf) + { + case 'a': + *p++ = '\a'; + buf++; + break; + + case 'b': + *p++ = '\b'; + buf++; + break; + + case 'f': + *p++ = '\f'; + buf++; + break; + + case 'n': + *p++ = '\n'; + buf++; + break; + + case 'r': + *p++ = '\r'; + buf++; + break; + + case 't': + *p++ = '\t'; + buf++; + break; + + case '0': case '1': case '2': case '3': + case '4': case '5': case '6': case '7': + n = 0; + for (i = 0; i < 3; i++, buf++) + { + unsigned x = *(unsigned char*)buf - '0'; + if (x > 7) + break; + n <<= 3; + n += x; + } + if (i != 3) + { + buf -= i; + *p++ = '\\'; + } + else + *p++ = n; + break; + + default: + *p++ = '\\'; + *p++ = *buf++; + break; + } + } + else + *p++ = *buf++; + } + *p = 0; +} + +int +main (int argc, char *argv[]) +{ + int c; + char buf[256]; + char vbuf[256]; + char *charset = strdup ("iso-8859-1"); + char *encoding = strdup ("quoted-printable"); + int octal = 0; + + while ((c = getopt (argc, argv, "c:e:hot")) != EOF) + switch (c) + { + case 'c': + free (charset); + charset = strdup (optarg); + break; + + case 'e': + free (encoding); + encoding = strdup (optarg); + break; + + case 'o': + octal = 1; + break; + + case 't': + octal = 0; + break; + + case 'h': + printf ("usage: %s [-c charset] [-e encoding] [-ot]\n", argv[0]); + exit (0); + + default: + exit (1); + } + + while (fgets (buf, sizeof (buf), stdin)) + { + int len; + char *p = NULL; + char *cmd; + int rc; + + len = strlen (buf); + if (len > 0 && buf[len - 1] == '\n') + buf[len - 1] = 0; + strncpy(vbuf, buf, sizeof vbuf); + cmd = vbuf; + if (cmd[0] == '\\') + { + if (cmd[1] == 0) + { + fprintf (stderr, "Unfinished command\n"); + continue; + } + + for (p = cmd + 2; *p && *p == ' '; p++) + ; + switch (cmd[1]) + { + case 'c': + free (charset); + charset = strdup (p); + continue; + + case 'e': + free (encoding); + encoding = strdup (p); + continue; + + case 'o': + octal = 1; + continue; + + case 't': + octal = 0; + continue; + + case '\\': + cmd++; + break; + + default: + fprintf (stderr, "Unknown command\n"); + continue; + } + } + + if (octal) + decode_octal (cmd); + + rc = mu_rfc2047_encode (charset, encoding, cmd, &p); + if (rc) + fprintf (stderr, "%s", mu_strerror (rc)); + else if (p) + printf ("%s\n", p); + free (p); + } + return 0; +} diff --git a/libmailutils/tests/fltst.c b/libmailutils/tests/fltst.c new file mode 100644 index 000000000..6e36edec5 --- /dev/null +++ b/libmailutils/tests/fltst.c @@ -0,0 +1,195 @@ +/* GNU Mailutils -- a suite of utilities for electronic mail + Copyright (C) 1999, 2000, 2001, 2002, 2005, 2007, 2010 Free Software + Foundation, Inc. + + GNU Mailutils is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Mailutils is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Mailutils; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301 USA */ + +#ifdef HAVE_CONFIG_H +# include +#endif +#include +#include +#include +#include +#include +#include + +#define ISPRINT(c) ((c)>=' '&&(c)<127) + +int verbose = 0; +int printable = 0; + +static void +c_copy (mu_stream_t out, mu_stream_t in) +{ + if (printable) + { + char c; + size_t size; + + while (mu_stream_read (in, &c, 1, &size) == 0 && size > 0) + { + int rc; + + if (printable && !ISPRINT (c)) + { + char outbuf[24]; + sprintf (outbuf, "\\%03o", (unsigned char) c); + rc = mu_stream_write (out, outbuf, strlen (outbuf), NULL); + } + else + rc = mu_stream_write (out, &c, 1, NULL); + } + } + else + MU_ASSERT (mu_stream_copy (out, in, 0, NULL)); + + if (verbose) + fprintf (stderr, "\ntotal: %lu/%lu bytes\n", + (unsigned long) mu_stream_bytes_in (in), + (unsigned long) mu_stream_bytes_out (out)); + +} + +/* Set the maximum line length for the filter NAME to LENGTH. + FIXME: This is a kludge. Perhaps API should provide a function + for that. */ +static void +reset_line_length (const char *name, size_t length) +{ + mu_list_t list; + int status; + mu_filter_record_t frec; + + mu_filter_get_list (&list); + status = mu_list_locate (list, (void*)name, (void**)&frec); + if (status == 0) + frec->max_line_length = length; + /* don't bail out, leave that to mu_filter_create */ +} + +void +usage (const char *diag) +{ + FILE *fp; + + if (diag) + { + fp = stderr; + fprintf (fp, "%s\n", diag); + } + else + fp = stdout; + + fprintf (fp, "%s", + "usage: fltst FILTER {encode|decode} {read|write} [shift=N] [linelen=N] [verbose] [printable] [nl]\n"); + exit (diag ? 1 : 0); +} + +int +main (int argc, char * argv []) +{ + mu_stream_t in, out, flt; + int i; + int mode = MU_FILTER_ENCODE; + int flags = MU_STREAM_READ; + char *fltname; + mu_off_t shift = 0; + size_t line_length; + int line_length_option = 0; + int newline_option = 0; + + if (argc == 1) + usage (NULL); + if (argc < 3) + usage ("not enough arguments"); + + fltname = argv[1]; + + if (strcmp (argv[2], "encode") == 0) + mode = MU_FILTER_ENCODE; + else if (strcmp (argv[2], "decode") == 0) + mode = MU_FILTER_DECODE; + else + usage ("2nd arg is wrong"); + + if (strcmp (argv[3], "read") == 0) + flags = MU_STREAM_READ; + else if (strcmp (argv[3], "write") == 0) + flags = MU_STREAM_WRITE; + else + usage ("3rd arg is wrong"); + + for (i = 4; i < argc; i++) + { + if (strncmp (argv[i], "shift=", 6) == 0) + shift = strtoul (argv[i] + 6, NULL, 0); + else if (strncmp (argv[i], "linelen=", 8) == 0) + { + line_length = strtoul (argv[i] + 8, NULL, 10); + line_length_option = 1; + } + else if (strcmp (argv[i], "verbose") == 0) + verbose++; + else if (strcmp (argv[i], "printable") == 0) + printable++; + else if (strcmp (argv[i], "nl") == 0) + newline_option++; + else + usage ("wrong option"); + } + + MU_ASSERT (mu_stdio_stream_create (&in, MU_STDIN_FD, 0)); + MU_ASSERT (mu_stream_open (in)); + + MU_ASSERT (mu_stdio_stream_create (&out, MU_STDOUT_FD, 0)); + MU_ASSERT (mu_stream_open (out)); + + if (line_length_option) + reset_line_length (fltname, line_length); + + if (flags == MU_STREAM_READ) + { + MU_ASSERT (mu_filter_create (&flt, in, fltname, mode, + MU_STREAM_READ|MU_STREAM_SEEK| + MU_STREAM_AUTOCLOSE)); + if (shift) + MU_ASSERT (mu_stream_seek (flt, shift, MU_SEEK_SET, NULL)); + c_copy (out, flt); + } + else + { + MU_ASSERT (mu_filter_create (&flt, out, fltname, mode, + MU_STREAM_WRITE)); + if (shift) + MU_ASSERT (mu_stream_seek (in, shift, MU_SEEK_SET, NULL)); + c_copy (flt, in); + + mu_stream_close (in); + mu_stream_destroy (&in); + } + + mu_stream_close (flt); + mu_stream_destroy (&flt); + + if (newline_option) + mu_stream_write (out, "\n", 1, NULL); + + mu_stream_close (out); + mu_stream_destroy (&out); + + return 0; +} diff --git a/libmailutils/tests/mailcap.at b/libmailutils/tests/mailcap.at new file mode 100644 index 000000000..fa9a767ae --- /dev/null +++ b/libmailutils/tests/mailcap.at @@ -0,0 +1,279 @@ +# This file is part of GNU Mailutils. -*- Autotest -*- +# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# +# GNU Mailutils is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mailutils. If not, see . +# This file is part of Mailfromd testsuite. + +dnl ------------------------------------------------------------ +dnl MAILCAP([NAME], [KW = `'], [INPUT], [STDOUT = `'], +dnl [STDERR = `'], [RUN-IF-FAIL], [RUN-IF-PASS]) +dnl +m4_define([MAILCAP],[ +AT_SETUP([Mailcap: [$1]]) +AT_KEYWORDS([mailcap $2]) +AT_CHECK([ +AT_DATA([input],[$3 +]) +mailcap input],[0],m4_shift(m4_shift(m4_shift($@)))) +AT_CLEANUP +]) + +dnl ------------------------------------------------------------ + +MAILCAP([1],[mailcap01], +[text/plain; less '%s'; needsterminal], +[[entry[1] + typefield: text/plain + view-command: less '%s' + fields[1]: needsterminal + +]]) + +MAILCAP([2],[mailcap02], +[text/html; gnome-help-browser '%s'; nametemplate=%s.html; test=test -n "$DISPLAY"], +[[entry[1] + typefield: text/html + view-command: gnome-help-browser '%s' + fields[1]: nametemplate=%s.html + fields[2]: test=test -n "$DISPLAY" + +]]) + +MAILCAP([3],[mailcap03], +[application/x-troff-man; /usr/bin/nroff -mandoc -Tlatin1; \ +copiousoutput; print=/usr/bin/nroff -mandoc -Tlatin1 | print text/plain:- +], +[[entry[1] + typefield: application/x-troff-man + view-command: /usr/bin/nroff -mandoc -Tlatin1 + fields[1]: copiousoutput + fields[2]: print=/usr/bin/nroff -mandoc -Tlatin1 | print text/plain:- + +]]) + +MAILCAP([4],[mailcap04], +[text/plain; shownonascii iso-8859-1 '%s'; description="Plain ASCII Text"; \ +test=te