diff options
54 files changed, 2891 insertions, 2743 deletions
diff --git a/configure.ac b/configure.ac index 2b097f7d0..27ffc544b 100644 --- a/configure.ac +++ b/configure.ac @@ -1211,7 +1211,9 @@ AC_ARG_WITH([mh-bindir], # Initialize the (autotest) test suite. AC_CONFIG_TESTDIR(tests) -AC_CONFIG_FILES([frm/tests/Makefile +AC_CONFIG_FILES([libmailutils/tests/Makefile + libmailutils/tests/atlocal + frm/tests/Makefile frm/tests/atlocal readmsg/tests/Makefile readmsg/tests/atlocal @@ -1362,7 +1364,6 @@ AC_CONFIG_FILES([ mail/Makefile mail/testsuite/Makefile libmailutils/Makefile - libmailutils/testsuite/Makefile messages/Makefile messages/testsuite/Makefile mh/Makefile diff --git a/examples/Makefile.am b/examples/Makefile.am index 7e858d78a..c283d0db3 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -35,18 +35,13 @@ SUBDIRS = config $(CPP_DIR) python scheme noinst_PROGRAMS = \ aclck\ addr\ - argcv\ base64\ - decode2047\ echosrv\ - encode2047\ header\ http\ iconv\ listop\ lsf\ - mailcap\ - mimetest\ msg-send\ mta\ mucat\ @@ -56,8 +51,7 @@ noinst_PROGRAMS = \ musocio\ $(NNTPCLIENT)\ $(POP3CLIENT)\ - sfrom\ - url-parse + sfrom EXTRA_PROGRAMS = pop3client nntpclient @@ -79,15 +73,6 @@ numaddr_la_SOURCES = numaddr.c numaddr_la_LIBADD = ${MU_LIB_SIEVE} numaddr_la_LDFLAGS = -module -avoid-version -no-undefined -rpath '$(moddir)' -mimetest_LDADD =\ - ../lib/libmuaux.la\ - ${MU_LIB_MBOX}\ - ${MU_LIB_IMAP}\ - ${MU_LIB_POP}\ - ${MU_LIB_AUTH}\ - @MU_AUTHLIBS@\ - ${MU_LIB_MAILUTILS} - msg_send_LDADD =\ ../lib/libmuaux.la\ ${MU_LIB_MAILER}\ diff --git a/frm/tests/Makefile.am b/frm/tests/Makefile.am index 647d10843..be7ac1011 100644 --- a/frm/tests/Makefile.am +++ b/frm/tests/Makefile.am @@ -23,7 +23,7 @@ MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE) ## ------------ ## $(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@])'; \ diff --git a/frm/tests/testsuite.at b/frm/tests/testsuite.at index eae8fc1bc..0afd41542 100644 --- a/frm/tests/testsuite.at +++ b/frm/tests/testsuite.at @@ -15,10 +15,7 @@ # along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. # This file is part of Mailfromd testsuite. -# Require a reasonably recent autotest. -m4_version_prereq([2.52g]) - -m4_define([AT_SKIP_TEST],[exit 77]) +m4_include([testsuite.inc]) dnl ------------------------------------------------------------ dnl FRM_MAILBOX -- mailbox used for testing @@ -47,8 +44,6 @@ AT_INIT AT_TESTED([frm]) -m4_include([testsuite.inc]) - MUT_VERSION(frm) FRMTEST([no options],[frm00], diff --git a/include/mailutils/Makefile.am b/include/mailutils/Makefile.am index 098a9faef..9839c0a8b 100644 --- a/include/mailutils/Makefile.am +++ b/include/mailutils/Makefile.am @@ -20,7 +20,7 @@ BUILT_SOURCES=errno.h debug.h EXTRA_DIST=errno.hin debug.hm4 types.hin -errno.h: $(top_srcdir)/mailbox/errors errno.hin +errno.h: $(top_srcdir)/libmailutils/errors errno.hin $(AM_V_GEN)$(AWK) -f $(mu_aux_dir)/generr.awk $^ > $@ debug.h: $(mu_aux_dir)/debugdef.m4 debug.hm4 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/testsuite/Decode b/libmailutils/tests/Decode index da6724734..da6724734 100644 --- a/libmailutils/testsuite/Decode +++ b/libmailutils/tests/Decode diff --git a/libmailutils/testsuite/Encode b/libmailutils/tests/Encode Binary files differindex c86626638..c86626638 100644 --- a/libmailutils/testsuite/Encode +++ b/libmailutils/tests/Encode 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 <http://www.gnu.org/licenses/>. + +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 <config.h> +#endif +#include <stdio.h> +#include <string.h> +#include <errno.h> + +#include <mailutils/address.h> +#include <mailutils/errno.h> +#include <mailutils/kwd.h> +#include <mailutils/mutil.h> + +#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 <http://www.gnu.org/licenses/>. +# 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 <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([,a@b,z@y],[], +[0], +[naddr: 2 +1. email <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([a@b,z@y,],[], +[0], +[naddr: 2 +1. email <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([,a@b,z@y,],[], +[0], +[naddr: 2 +1. email <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([a@b,,z@y],[], +[0], +[naddr: 2 +1. email <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([a@b,,,z@y],[], +[0], +[naddr: 2 +1. email <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([,,,a@b,,,],[], +[0], +[naddr: 1 +1. email <a@b>: +local-part <a> domain <b> +]) + +TESTADDR([,a@b],[], +[0], +[naddr: 1 +1. email <a@b>: +local-part <a> domain <b> +]) + +TESTADDR([a@b,],[], +[0], +[naddr: 1 +1. email <a@b>: +local-part <a> domain <b> +]) + +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 <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([a group: ,a@b,z@y;],[group], +[0], +[naddr: 2 +1. email <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([a group: a@b,z@y,;],[group], +[0], +[naddr: 2 +1. email <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([a group: ,a@b,z@y,;],[group], +[0], +[naddr: 2 +1. email <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([a group: a@b,,z@y;],[group], +[0], +[naddr: 2 +1. email <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([a group: a@b,,,z@y;],[group], +[0], +[naddr: 2 +1. email <a@b>: +local-part <a> domain <b> +2. email <z@y>: +local-part <z> domain <y> +]) + +TESTADDR([a group: ,,,a@b,,, ;],[group], +[0], +[naddr: 1 +1. email <a@b>: +local-part <a> domain <b> +]) + +TESTADDR([a group: ,a@b ;],[group], +[0], +[naddr: 1 +1. email <a@b>: +local-part <a> domain <b> +]) + +TESTADDR([a group: a@b, ;],[group], +[0], +[naddr: 1 +1. email <a@b>: +local-part <a> domain <b> +]) + +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 <sam@sam>: +personal <Sam> +local-part <sam> domain <sam> +route <@[matrix (smtp)]> +2. email <sroberts@[10].[1]>: +local-part <sroberts> domain <[10].[1]> +]]) + +TESTADDR([lo@hi, Aliens: Sam <@[matrix (smtp)]: sam@sam>, sroberts@[10].[1];], +[], +[0], +[[naddr: 3 +1. email <lo@hi>: +local-part <lo> domain <hi> +2. email <sam@sam>: +personal <Sam> +local-part <sam> domain <sam> +route <@[matrix (smtp)]> +3. email <sroberts@[10].[1]>: +local-part <sroberts> domain <[10].[1]> +]]) + +TESTADDR([Aliens: Sam <@[matrix (smtp)]: sam@sam>, sroberts@[10].[1];, hi@lo], +[], +[0], +[[naddr: 3 +1. email <sam@sam>: +personal <Sam> +local-part <sam> domain <sam> +route <@[matrix (smtp)]> +2. email <sroberts@[10].[1]>: +local-part <sroberts> domain <[10].[1]> +3. email <hi@lo>: +local-part <hi> domain <lo> +]]) + +TESTADDR([lo@hi, Aliens: Sam <@[matrix (smtp)]: sam@sam>, sroberts@[10].[1];, hi@lo], +[], +[0], +[[naddr: 4 +1. email <lo@hi>: +local-part <lo> domain <hi> +2. email <sam@sam>: +personal <Sam> +local-part <sam> domain <sam> +route <@[matrix (smtp)]> +3. email <sroberts@[10].[1]>: +local-part <sroberts> domain <[10].[1]> +4. email <hi@lo>: +local-part <hi> domain <lo> +]]) + +TESTADDR([Sam <@mail2.uniserve.com:sroberts@uniserve.com>],[], +[0], +[naddr: 1 +1. email <sroberts@uniserve.com>: +personal <Sam> +local-part <sroberts> domain <uniserve.com> +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 <hw@570.com>: +personal <Hardware Support Account> +local-part <hw> domain <570.com> +]) + +TESTADDR([list-ietf-wg-apps-drums@faerber.muc.de (=?ISO-8859-1?Q?Claus_F=E4rber?=)],[], +[0], +[naddr: 1 +1. email <list-ietf-wg-apps-drums@faerber.muc.de>: +personal <=?ISO-8859-1?Q?Claus_F=E4rber?=> +local-part <list-ietf-wg-apps-drums> domain <faerber.muc.de> +]) + +TESTADDR([<mutt-dev@mutt.org>(mutt #369), guug-bugs-closed@guug.de (#369)],[], +[0], +[naddr: 2 +1. email <mutt-dev@mutt.org>: +local-part <mutt-dev> domain <mutt.org> +2. email <guug-bugs-closed@guug.de>: +personal <#369> +local-part <guug-bugs-closed> domain <guug.de> +]) + +dnl -------------------------------------------------------------------------- +dnl FIXME: +m4_if([TESTADDR(["'Aernoudt Bottemanne'" <Aernoudt.Bottemanne@Informix.com>],[], +[0], +[naddr: 1 +1. email <Aernoudt.Bottemanne@Informix.com>: +personal <'Aernoudt Bottemanne'> +local-part <Aernoudt.Bottemanne> domain <Informix.com> +]) + +TESTADDR(["'Haag, Ullrich - MBDC'" <Ullrich.Haag@MBDC.com>,],[], +[0], +[naddr: 1 +1. email <Ullrich.Haag@MBDC.com>: +personal <'Haag, Ullrich - MBDC'> +local-part <Ullrich.Haag> domain <MBDC.com> +]) + +TESTADDR(["'Michael C. Ibarra'" <ibarra@hawk.com>, arl@q7.net, Al <arl@q7.net>], +[], +[0], +[naddr: 3 +1. email <ibarra@hawk.com>: +personal <'Michael C. Ibarra'> +local-part <ibarra> domain <hawk.com> +2. email <arl@q7.net>: +local-part <arl> domain <q7.net> +3. email <arl@q7.net>: +personal <Al> +local-part <arl> domain <q7.net> +]) + +TESTADDR(["'Sam Roberts'" <sam@cogent.ca>],[], +[0], +[naddr: 1 +1. email <sam@cogent.ca>: +personal <'Sam Roberts'> +local-part <sam> domain <cogent.ca> +]) + +TESTADDR(["'paul@pitbull-productions.com'" <paul@pitbull-productions.com>,],[], +[0], +[naddr: 1 +1. email <paul@pitbull-productions.com>: +personal <'paul@pitbull-productions.com'> |