#! /bin/sh # Generated from testsuite.at by GNU Autoconf 2.69. # # Copyright (C) 2009-2012 Free Software Foundation, Inc. # # This test suite is free software; the Free Software Foundation gives # unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} # How were we run? at_cli_args="$@" # Not all shells have the 'times' builtin; the subshell is needed to make # sure we discard the 'times: not found' message from the shell. at_times_p=false (times) >/dev/null 2>&1 && at_times_p=: # CLI Arguments to pass to the debugging scripts. at_debug_args= # -e sets to true at_errexit_p=false # Shall we be verbose? ':' means no, empty means yes. at_verbose=: at_quiet= # Running several jobs in parallel, 0 means as many as test groups. at_jobs=1 at_traceon=: at_trace_echo=: at_check_filter_trace=: # Shall we keep the debug scripts? Must be `:' when the suite is # run by a debug script, so that the script doesn't remove itself. at_debug_p=false # Display help message? at_help_p=false # Display the version message? at_version_p=false # List test groups? at_list_p=false # --clean at_clean=false # Test groups to run at_groups= # Whether to rerun failed tests. at_recheck= # Whether a write failure occurred at_write_fail=0 # The directory we run the suite in. Default to . if no -C option. at_dir=`pwd` # An absolute reference to this testsuite script. case $as_myself in [\\/]* | ?:[\\/]* ) at_myself=$as_myself ;; * ) at_myself=$at_dir/$as_myself ;; esac # Whether -C is in effect. at_change_dir=false # Whether to enable colored test results. at_color=no # List of the tested programs. at_tested='mailfromd' # As many question marks as there are digits in the last test group number. # Used to normalize the test group numbers so that `ls' lists them in # numerical order. at_format='???' # Description of all the test groups. at_help_all="1;version.at:17;mailfromd version;; 2;vercmp.at:17;vercmp;vercmp00; 3;vercmp01.at:17;vercmp: invalid 1st argument;vercmp vercmp01; 4;vercmp02.at:17;vercmp: invalid 2nd argument;vercmp vercmp02; 5;resolv_a.at:17;A lookup;dns resolv resolv_a; 6;resolv_ptr.at:17;PTR lookup;dns resolv resolv_ptr; 7;resolv_txt.at:17;TXT lookup;dns resolv resolv_txt; 8;resolv_mx.at:17;MX lookup;dns resolv resolv_mx; 9;resolv_spf.at:17;SPF lookup;dns resolv resolv_spf; 10;resolv_ptr_val.at:17;PTR validate;dns resolv resolv_ptr_val; 11;module01.at:17;module: require;module module01 require variable variables; 12;module02.at:17;module: import literal;module module02 import import01 variable variables; 13;module03.at:17;module: import regex;module module03 import import02 variable variables; 14;module04.at:17;module: import regex (not matching);module module04 import import03 variable variables; 15;module05.at:17;module: import + xform;module module05 import import04 variable variables; 16;module06.at:17;module: clean namespace;module module06 import import05 variable variables; 17;module07.at:17;module: variable allocation;module module07 import import06 variable variables; 18;static01.at:17;static variables visibility;module static static01 variable variables; 19;static02.at:17;implicit static functions;module static static02 variable variables; 20;public.at:17;public variables visibility;module public variable variables; 21;enum.at:17;enumerations;const enum; 22;ack.at:17;Ackerman function;ack; 23;arg.at:17;Function arguments;arg; 24;alias.at:17;Function aliases;alias; 25;bctx00.at:17;Builtin in wrong context;context builtin-context bctx bctx00; 26;bctx01.at:17;Builtin in correct context;context builtin-context bctx bctx01; 27;fctx00.at:17;Function in wrong context;context function-context fctx fctx00; 28;fctx01.at:17;Function in correct context;context function-context fctx fctx01; 29;ml.at:17;Multiline strings;ml multiline multi-line; 30;ml01.at:17;var refs in multiline;ml multiline multi-line ml01; 31;declvar.at:17;Declared variables;declvar variable variables; 32;macros.at:17;Built-in macros;macros builtin built-in macros00; 33;expstr.at:17;macro expansion in strings within pragma;pragma macros macros01; 34;miltermacros.at:17;pragma miltermacros;pragma miltermacros; 35;catch.at:17;Setting exceptions;exceptions catch setex; 36;invip.at:17;Catching exceptions: invip;exceptions catch invip; 37;invcidr.at:17;Catching exceptions: invcidr;exceptions catch invcidr; 38;catch01.at:17;Setting exceptions (2);exceptions catch setex2; 39;invip2.at:17;Catching exceptions: invip (2);exceptions catch invip2; 40;invcidr2.at:17;Catching exceptions: invcidr (2);exceptions catch invcidr2; 41;trycatch01.at:17;Try-catch: returning from try;try catch return try-catch trycatch try-catch01 trycatch01; 42;trycatch02.at:17;Try-catch: returning from catch;try catch return try-catch trycatch try-catch02 trycatch02; 43;trycatch03.at:17;Try-catch: passing through try;try catch try-catch trycatch try-catch03 trycatch03; 44;trycatch04.at:17;Try-catch: passing through catch;try catch try-catch trycatch try-catch04 trycatch04; 45;trycatch05.at:17;Try-catch: break from try;try catch break try-catch trycatch try-catch05 trycatch05; 46;trycatch06.at:17;Try-catch: break from catch;try catch break try-catch trycatch try-catch06 trycatch06; 47;trycatch07.at:17;Try-catch: next from try;try catch next loop try-catch trycatch try-catch07 trycatch07; 48;trycatch08.at:17;Try-catch: next from catch;try catch next loop try-catch trycatch try-catch08 trycatch08; 49;trycatch09.at:17;Try-catch: break from nested try;try catch break try-catch trycatch try-catch09 trycatch09; 50;trycatch10.at:17;Try-catch: break from nested catch;try catch break try-catch trycatch try-catch10 trycatch10; 51;trycatch11.at:17;Try-catch: next from nested try;try catch next loop try-catch trycatch try-catch11 trycatch11; 52;trycatch12.at:17;Try-catch: next from nested catch;try catch next loop try-catch trycatch try-catch12 trycatch12; 53;trycatch13.at:17;Try-catch: break from a loop within try;try catch break try-catch trycatch try-catch13 trycatch13; 54;trycatch14.at:17;Try-catch: break from a loop within catch;try catch break try-catch trycatch try-catch14 trycatch14; 55;trycatch15.at:17;Try-catch: next in a loop within try;try catch next loop try-catch trycatch try-catch15 trycatch15; 56;trycatch16.at:17;Try-catch: next in a loop within catch;try catch break loop try-catch trycatch try-catch16 trycatch16; 57;cidr1.at:17;cidr: 10.10.0.1 matches 10.10.0.0/19;cidr cidr1; 58;cidr2.at:17;cidr: 10.10.31.255 matches 10.10.0.0/19;cidr cidr2; 59;cidr3.at:17;cidr: 10.10.32.1 does not match 10.10.0.0/19;cidr cidr3; 60;cond01.at:17;String equality;cond cond01; 61;cond02.at:17;Fnmatch;cond cond02 fnmatch fnmatch1; 62;cond03.at:17;Fnmatch (2);cond cond02 fnmatch fnmatch2; 63;cond04.at:17;Regex match;cond cond04 regex regex1; 64;cond05.at:17;Regex match (5);cond cond05 regex regex2; 65;cond06.at:17;Nested if;cond cond06 nested; 66;next01.at:17;next01;next01 next loop; 67;next02.at:17;next02;next02 next loop; 68;next03.at:17;Next in a do-while loop;next03 loop next; 69;resolve.at:17;Resolve;dns resolve; 70;rescname.at:17;Resolve cname;dns rescname; 71;hostname.at:17;Resolve hostname;dns hostname; 72;hasmx.at:17;Hasmx call;dns hasmx; 73;ismx.at:17;Ismx call;dns ismx; 74;strings.at:17;String functions;string strings string-functions strfunc; 75;greylist.at:17;Greylisting (traditional style);greylist greylist-gray; 76;greylist-ct.at:17;Greylisting (new style);greylist greylist-ct; 77;numrcpt.at:17;rcpt_count;rcpt_count numrcpt; 78;rset.at:20;rset;rset; 79;poll.at:17;poll: Existing sender;poll exist poll00; 80;poll01.at:17;poll: Non-existing sender;poll non-exist poll01; 81;poll02.at:17;poll: Tempfail;poll tempfail poll02; 82;poll03.at:17;poll: Multiple from addresses;poll multiple poll03; 83;poll04.at:17;on poll without address;poll poll04; 84;accept.at:17;Accept action;actions accept; 85;reject.at:17;Reject action;actions reject; 86;tempfail.at:17;Tempfail action;actions tempfail; 87;relayed01.at:17;Relayed: Not a relayed host;relayed relayed01; 88;relayed02.at:17;Relayed: Relayed host;relayed relayed02; 89;shadow.at:17;variable shadowing;variable variables shadow; 90;ashadow.at:17;duplicate declarations of automatic variables;variable variables shadow auto ashadow; 91;switchn1.at:17;Numeric switch: Branch 1,2 val 1;switch numswitch switchn1; 92;switchn2.at:17;Numeric switch: Branch 1,2 val 1;switch numswitch switchn2; 93;switchn3.at:17;Numeric switch: Branch 3;switch numswitch switchn3; 94;switchn4.at:17;Numeric switch: Default branch;switch numswitch switchn4; 95;switchs1.at:17;String switch: Branch 1,2 val jeden;switch strswitch switchs1; 96;switchs2.at:17;String switch: Branch 1,2 val dwa;switch strswitch switchs2; 97;switchs3.at:17;String switch: Branch 3;switch strswitch switchs3; 98;switchs4.at:17;String switch: Default branch;switch strswitch switchs4; 99;fromargs.at:17;Arguments to envfrom;envfrom arguments; 100;rcptargs.at:17;Arguments to envrcpt;envrcpt arguments; 101;curmsg.at:25;Working current_message;curmsg; 102;nulmsg.at:17;message_body_is_empty;nullmsg nulmsg message_body_is_empty; 103;hdr-count.at:17;current_header_count;curhdr; 104;hdr-get.at:17;current_header;curhdr current_header_0; 105;hdr-getn.at:17;current_header(name,ind);curhdr current_header_n; 106;hdr-gete.at:17;current_header(name,ind) - exception;curhdr current_header_e; 107;hdr-itr.at:17;current_header(name,ind) - iteration;curhdr current_header_i; 108;hdr-all.at:17;current_header(name,ind) - iteration over all;curhdr current_header_a; 109;hdr-cap.at:17;current_header vs. capturing;curhdr current_header_cap; 110;hdr-mul.at:17;multiple message capturing;curhdr current_header_mul; 111;eof.at:17;EOF exception;; 112;regopt0.at:17;regex on optimization level 0;regex regopt regopt0; 113;setvar.at:17;setvar;setvar variable variables; 114;shellmagic.at:17;Initial shell comment;shellmagic; 115;connect00.at:17;Connect: stdio;handler connect connect-stdio stdio connect00; 116;connect01.at:17;Connect: unix;handler connect connect-unix stdio connect01; 117;connect02.at:17;Connect: inet;handler connect connect-inet stdio connect02; 118;connect03.at:17;Connect: inet6;handler connect connect-inet6 stdio connect03; " # List of the all the test groups. at_groups_all=`$as_echo "$at_help_all" | sed 's/;.*//'` # at_fn_validate_ranges NAME... # ----------------------------- # Validate and normalize the test group number contained in each variable # NAME. Leading zeroes are treated as decimal. at_fn_validate_ranges () { for at_grp do eval at_value=\$$at_grp if test $at_value -lt 1 || test $at_value -gt 118; then $as_echo "invalid test group: $at_value" >&2 exit 1 fi case $at_value in 0*) # We want to treat leading 0 as decimal, like expr and test, but # AS_VAR_ARITH treats it as octal if it uses $(( )). # With XSI shells, ${at_value#${at_value%%[1-9]*}} avoids the # expr fork, but it is not worth the effort to determine if the # shell supports XSI when the user can just avoid leading 0. eval $at_grp='`expr $at_value + 0`' ;; esac done } at_prev= for at_option do # If the previous option needs an argument, assign it. if test -n "$at_prev"; then at_option=$at_prev=$at_option at_prev= fi case $at_option in *=?*) at_optarg=`expr "X$at_option" : '[^=]*=\(.*\)'` ;; *) at_optarg= ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $at_option in --help | -h ) at_help_p=: ;; --list | -l ) at_list_p=: ;; --version | -V ) at_version_p=: ;; --clean | -c ) at_clean=: ;; --color ) at_color=always ;; --color=* ) case $at_optarg in no | never | none) at_color=never ;; auto | tty | if-tty) at_color=auto ;; always | yes | force) at_color=always ;; *) at_optname=`echo " $at_option" | sed 's/^ //; s/=.*//'` as_fn_error $? "unrecognized argument to $at_optname: $at_optarg" ;; esac ;; --debug | -d ) at_debug_p=: ;; --errexit | -e ) at_debug_p=: at_errexit_p=: ;; --verbose | -v ) at_verbose=; at_quiet=: ;; --trace | -x ) at_traceon='set -x' at_trace_echo=echo at_check_filter_trace=at_fn_filter_trace ;; [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9]) at_fn_validate_ranges at_option as_fn_append at_groups "$at_option$as_nl" ;; # Ranges [0-9]- | [0-9][0-9]- | [0-9][0-9][0-9]- | [0-9][0-9][0-9][0-9]-) at_range_start=`echo $at_option |tr -d X-` at_fn_validate_ranges at_range_start at_range=`$as_echo "$at_groups_all" | \ sed -ne '/^'$at_range_start'$/,$p'` as_fn_append at_groups "$at_range$as_nl" ;; -[0-9] | -[0-9][0-9] | -[0-9][0-9][0-9] | -[0-9][0-9][0-9][0-9]) at_range_end=`echo $at_option |tr -d X-` at_fn_validate_ranges at_range_end at_range=`$as_echo "$at_groups_all" | \ sed -ne '1,/^'$at_range_end'$/p'` as_fn_append at_groups "$at_range$as_nl" ;; [0-9]-[0-9] | [0-9]-[0-9][0-9] | [0-9]-[0-9][0-9][0-9] | \ [0-9]-[0-9][0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9] | \ [0-9][0-9]-[0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9][0-9][0-9] | \ [0-9][0-9][0-9]-[0-9][0-9][0-9] | \ [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] | \ [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] ) at_range_start=`expr $at_option : '\(.*\)-'` at_range_end=`expr $at_option : '.*-\(.*\)'` if test $at_range_start -gt $at_range_end; then at_tmp=$at_range_end at_range_end=$at_range_start at_range_start=$at_tmp fi at_fn_validate_ranges at_range_start at_range_end at_range=`$as_echo "$at_groups_all" | \ sed -ne '/^'$at_range_start'$/,/^'$at_range_end'$/p'` as_fn_append at_groups "$at_range$as_nl" ;; # Directory selection. --directory | -C ) at_prev=--directory ;; --directory=* ) at_change_dir=: at_dir=$at_optarg if test x- = "x$at_dir" ; then at_dir=./- fi ;; # Parallel execution. --jobs | -j ) at_jobs=0 ;; --jobs=* | -j[0-9]* ) if test -n "$at_optarg"; then at_jobs=$at_optarg else at_jobs=`expr X$at_option : 'X-j\(.*\)'` fi case $at_jobs in *[!0-9]*) at_optname=`echo " $at_option" | sed 's/^ //; s/[0-9=].*//'` as_fn_error $? "non-numeric argument to $at_optname: $at_jobs" ;; esac ;; # Keywords. --keywords | -k ) at_prev=--keywords ;; --keywords=* ) at_groups_selected=$at_help_all at_save_IFS=$IFS IFS=, set X $at_optarg shift IFS=$at_save_IFS for at_keyword do at_invert= case $at_keyword in '!'*) at_invert="-v" at_keyword=`expr "X$at_keyword" : 'X!\(.*\)'` ;; esac # It is on purpose that we match the test group titles too. at_groups_selected=`$as_echo "$at_groups_selected" | grep -i $at_invert "^[1-9][^;]*;.*[; ]$at_keyword[ ;]"` done # Smash the keywords. at_groups_selected=`$as_echo "$at_groups_selected" | sed 's/;.*//'` as_fn_append at_groups "$at_groups_selected$as_nl" ;; --recheck) at_recheck=: ;; *=*) at_envvar=`expr "x$at_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $at_envvar in '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$at_envvar'" ;; esac at_value=`$as_echo "$at_optarg" | sed "s/'/'\\\\\\\\''/g"` # Export now, but save eval for later and for debug scripts. export $at_envvar as_fn_append at_debug_args " $at_envvar='$at_value'" ;; *) $as_echo "$as_me: invalid option: $at_option" >&2 $as_echo "Try \`$0 --help' for more information." >&2 exit 1 ;; esac done # Verify our last option didn't require an argument if test -n "$at_prev"; then : as_fn_error $? "\`$at_prev' requires an argument" fi # The file containing the suite. at_suite_log=$at_dir/$as_me.log # Selected test groups. if test -z "$at_groups$at_recheck"; then at_groups=$at_groups_all else if test -n "$at_recheck" && test -r "$at_suite_log"; then at_oldfails=`sed -n ' /^Failed tests:$/,/^Skipped tests:$/{ s/^[ ]*\([1-9][0-9]*\):.*/\1/p } /^Unexpected passes:$/,/^## Detailed failed tests/{ s/^[ ]*\([1-9][0-9]*\):.*/\1/p } /^## Detailed failed tests/q ' "$at_suite_log"` as_fn_append at_groups "$at_oldfails$as_nl" fi # Sort the tests, removing duplicates. at_groups=`$as_echo "$at_groups" | sort -nu | sed '/^$/d'` fi if test x"$at_color" = xalways \ || { test x"$at_color" = xauto && test -t 1; }; then at_red=`printf '\033[0;31m'` at_grn=`printf '\033[0;32m'` at_lgn=`printf '\033[1;32m'` at_blu=`printf '\033[1;34m'` at_std=`printf '\033[m'` else at_red= at_grn= at_lgn= at_blu= at_std= fi # Help message. if $at_help_p; then cat <<_ATEOF || at_write_fail=1 Usage: $0 [OPTION]... [VARIABLE=VALUE]... [TESTS] Run all the tests, or the selected TESTS, given by numeric ranges, and save a detailed log file. Upon failure, create debugging scripts. Do not change environment variables directly. Instead, set them via command line arguments. Set \`AUTOTEST_PATH' to select the executables to exercise. Each relative directory is expanded as build and source directories relative to the top level of this distribution. E.g., from within the build directory /tmp/foo-1.0, invoking this: $ $0 AUTOTEST_PATH=bin is equivalent to the following, assuming the source directory is /src/foo-1.0: PATH=/tmp/foo-1.0/bin:/src/foo-1.0/bin:\$PATH $0 _ATEOF cat <<_ATEOF || at_write_fail=1 Operation modes: -h, --help print the help message, then exit -V, --version print version number, then exit -c, --clean remove all the files this test suite might create and exit -l, --list describes all the tests, or the selected TESTS _ATEOF cat <<_ATEOF || at_write_fail=1 Execution tuning: -C, --directory=DIR change to directory DIR before starting --color[=never|auto|always] enable colored test results on terminal, or always -j, --jobs[=N] Allow N jobs at once; infinite jobs with no arg (default 1) -k, --keywords=KEYWORDS select the tests matching all the comma-separated KEYWORDS multiple \`-k' accumulate; prefixed \`!' negates a KEYWORD --recheck select all tests that failed or passed unexpectedly last time -e, --errexit abort as soon as a test fails; implies --debug -v, --verbose force more detailed output default for debugging scripts -d, --debug inhibit clean up and top-level logging default for debugging scripts -x, --trace enable tests shell tracing _ATEOF cat <<_ATEOF || at_write_fail=1 Report bugs to . _ATEOF exit $at_write_fail fi # List of tests. if $at_list_p; then cat <<_ATEOF || at_write_fail=1 mailfromd 8.8 test suite test groups: NUM: FILE-NAME:LINE TEST-GROUP-NAME KEYWORDS _ATEOF # Pass an empty line as separator between selected groups and help. $as_echo "$at_groups$as_nl$as_nl$at_help_all" | awk 'NF == 1 && FS != ";" { selected[$ 1] = 1 next } /^$/ { FS = ";" } NF > 0 { if (selected[$ 1]) { printf " %3d: %-18s %s\n", $ 1, $ 2, $ 3 if ($ 4) { lmax = 79 indent = " " line = indent len = length (line) n = split ($ 4, a, " ") for (i = 1; i <= n; i++) { l = length (a[i]) + 1 if (i > 1 && len + l > lmax) { print line line = indent " " a[i] len = length (line) } else { line = line " " a[i] len += l } } if (n) print line } } }' || at_write_fail=1 exit $at_write_fail fi if $at_version_p; then $as_echo "$as_me (mailfromd 8.8)" && cat <<\_ATEOF || at_write_fail=1 Copyright (C) 2012 Free Software Foundation, Inc. This test suite is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ATEOF exit $at_write_fail fi # Should we print banners? Yes if more than one test is run. case $at_groups in #( *$as_nl* ) at_print_banners=: ;; #( * ) at_print_banners=false ;; esac # Text for banner N, set to a single space once printed. # Banner 1. testsuite.at:145 # Category starts at test group 1. at_banner_text_1="Version" # Banner 2. testsuite.at:151 # Category starts at test group 5. at_banner_text_2="DNS lookups" # Banner 3. testsuite.at:159 # Category starts at test group 11. at_banner_text_3="Modules" # Banner 4. testsuite.at:168 # Category starts at test group 18. at_banner_text_4="Scope of Visibility" # Banner 5. testsuite.at:173 # Category starts at test group 21. at_banner_text_5="MFL" # Banner 6. testsuite.at:192 # Category starts at test group 32. at_banner_text_6="Macros" # Banner 7. testsuite.at:197 # Category starts at test group 35. at_banner_text_7="Exception handling" # Banner 8. testsuite.at:222 # Category starts at test group 57. at_banner_text_8="CIDR Matching" # Banner 9. testsuite.at:227 # Category starts at test group 60. at_banner_text_9="Conditionals" # Banner 10. testsuite.at:235 # Category starts at test group 66. at_banner_text_10="Breaking Loops" # Banner 11. testsuite.at:240 # Category starts at test group 69. at_banner_text_11="Individual Functions" # Banner 12. testsuite.at:248 # Category starts at test group 75. at_banner_text_12="Greylisting" # Banner 13. testsuite.at:252 # Category starts at test group 77. at_banner_text_13="Engine Features" # Banner 14. testsuite.at:257 # Category starts at test group 79. at_banner_text_14="Poll" # Banner 15. testsuite.at:264 # Category starts at test group 84. at_banner_text_15="Actions" # Banner 16. testsuite.at:269 # Category starts at test group 87. at_banner_text_16="Relayed" # Banner 17. testsuite.at:273 # Category starts at test group 89. at_banner_text_17="Variable Shadowing" # Banner 18. testsuite.at:277 # Category starts at test group 91. at_banner_text_18="Switch" # Banner 19. testsuite.at:288 # Category starts at test group 99. at_banner_text_19="Handler Arguments" # Banner 20. testsuite.at:292 # Category starts at test group 101. at_banner_text_20="Current Message" # Banner 21. testsuite.at:296 # Category starts at test group 103. at_banner_text_21="Header Functions" # Banner 22. testsuite.at:306 # Category starts at test group 111. at_banner_text_22="Assorted Checks" # Banner 23. testsuite.at:314 # Category starts at test group 115. at_banner_text_23="Connect Handler" # Take any -C into account. if $at_change_dir ; then test x != "x$at_dir" && cd "$at_dir" \ || as_fn_error $? "unable to change directory" at_dir=`pwd` fi # Load the config files for any default variable assignments. for at_file in atconfig atlocal do test -r $at_file || continue . ./$at_file || as_fn_error $? "invalid content: $at_file" done # Autoconf <=2.59b set at_top_builddir instead of at_top_build_prefix: : "${at_top_build_prefix=$at_top_builddir}" # Perform any assignments requested during argument parsing. eval "$at_debug_args" # atconfig delivers names relative to the directory the test suite is # in, but the groups themselves are run in testsuite-dir/group-dir. if test -n "$at_top_srcdir"; then builddir=../.. for at_dir_var in srcdir top_srcdir top_build_prefix do eval at_val=\$at_$at_dir_var case $at_val in [\\/$]* | ?:[\\/]* ) at_prefix= ;; *) at_prefix=../../ ;; esac eval "$at_dir_var=\$at_prefix\$at_val" done fi ## -------------------- ## ## Directory structure. ## ## -------------------- ## # This is the set of directories and files used by this script # (non-literals are capitalized): # # TESTSUITE - the testsuite # TESTSUITE.log - summarizes the complete testsuite run # TESTSUITE.dir/ - created during a run, remains after -d or failed test # + at-groups/ - during a run: status of all groups in run # | + NNN/ - during a run: meta-data about test group NNN # | | + check-line - location (source file and line) of current AT_CHECK # | | + status - exit status of current AT_CHECK # | | + stdout - stdout of current AT_CHECK # | | + stder1 - stderr, including trace # | | + stderr - stderr, with trace filtered out # | | + test-source - portion of testsuite that defines group # | | + times - timestamps for computing duration # | | + pass - created if group passed # | | + xpass - created if group xpassed # | | + fail - created if group failed # | | + xfail - created if group xfailed # | | + skip - created if group skipped # + at-stop - during a run: end the run if this file exists # + at-source-lines - during a run: cache of TESTSUITE line numbers for extraction # + 0..NNN/ - created for each group NNN, remains after -d or failed test # | + TESTSUITE.log - summarizes the group results # | + ... - files created during the group # The directory the whole suite works in. # Should be absolute to let the user `cd' at will. at_suite_dir=$at_dir/$as_me.dir # The file containing the suite ($at_dir might have changed since earlier). at_suite_log=$at_dir/$as_me.log # The directory containing helper files per test group. at_helper_dir=$at_suite_dir/at-groups # Stop file: if it exists, do not start new jobs. at_stop_file=$at_suite_dir/at-stop # The fifo used for the job dispatcher. at_job_fifo=$at_suite_dir/at-job-fifo if $at_clean; then test -d "$at_suite_dir" && find "$at_suite_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \; rm -f -r "$at_suite_dir" "$at_suite_log" exit $? fi # Don't take risks: use only absolute directories in PATH. # # For stand-alone test suites (ie. atconfig was not found), # AUTOTEST_PATH is relative to `.'. # # For embedded test suites, AUTOTEST_PATH is relative to the top level # of the package. Then expand it into build/src parts, since users # may create executables in both places. AUTOTEST_PATH=`$as_echo "$AUTOTEST_PATH" | sed "s|:|$PATH_SEPARATOR|g"` at_path= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $AUTOTEST_PATH $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -n "$at_path" && as_fn_append at_path $PATH_SEPARATOR case $as_dir in [\\/]* | ?:[\\/]* ) as_fn_append at_path "$as_dir" ;; * ) if test -z "$at_top_build_prefix"; then # Stand-alone test suite. as_fn_append at_path "$as_dir" else # Embedded test suite. as_fn_append at_path "$at_top_build_prefix$as_dir$PATH_SEPARATOR" as_fn_append at_path "$at_top_srcdir/$as_dir" fi ;; esac done IFS=$as_save_IFS # Now build and simplify PATH. # # There might be directories that don't exist, but don't redirect # builtins' (eg., cd) stderr directly: Ultrix's sh hates that. at_new_path= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $at_path do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -d "$as_dir" || continue case $as_dir in [\\/]* | ?:[\\/]* ) ;; * ) as_dir=`(cd "$as_dir" && pwd) 2>/dev/null` ;; esac case $PATH_SEPARATOR$at_new_path$PATH_SEPARATOR in *$PATH_SEPARATOR$as_dir$PATH_SEPARATOR*) ;; $PATH_SEPARATOR$PATH_SEPARATOR) at_new_path=$as_dir ;; *) as_fn_append at_new_path "$PATH_SEPARATOR$as_dir" ;; esac done IFS=$as_save_IFS PATH=$at_new_path export PATH # Setting up the FDs. # 5 is the log file. Not to be overwritten if `-d'. if $at_debug_p; then at_suite_log=/dev/null else : >"$at_suite_log" fi exec 5>>"$at_suite_log" # Banners and logs. $as_echo "## ------------------------- ## ## mailfromd 8.8 test suite. ## ## ------------------------- ##" { $as_echo "## ------------------------- ## ## mailfromd 8.8 test suite. ## ## ------------------------- ##" echo $as_echo "$as_me: command line was:" $as_echo " \$ $0 $at_cli_args" echo # If ChangeLog exists, list a few lines in case it might help determining # the exact version. if test -n "$at_top_srcdir" && test -f "$at_top_srcdir/ChangeLog"; then $as_echo "## ---------- ## ## ChangeLog. ## ## ---------- ##" echo sed 's/^/| /;10q' "$at_top_srcdir/ChangeLog" echo fi { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } echo # Contents of the config files. for at_file in atconfig atlocal do test -r $at_file || continue $as_echo "$as_me: $at_file:" sed 's/^/| /' $at_file echo done } >&5 ## ------------------------- ## ## Autotest shell functions. ## ## ------------------------- ## # at_fn_banner NUMBER # ------------------- # Output banner NUMBER, provided the testsuite is running multiple groups and # this particular banner has not yet been printed. at_fn_banner () { $at_print_banners || return 0 eval at_banner_text=\$at_banner_text_$1 test "x$at_banner_text" = "x " && return 0 eval "at_banner_text_$1=\" \"" if test -z "$at_banner_text"; then $at_first || echo else $as_echo "$as_nl$at_banner_text$as_nl" fi } # at_fn_banner # at_fn_check_prepare_notrace REASON LINE # --------------------------------------- # Perform AT_CHECK preparations for the command at LINE for an untraceable # command; REASON is the reason for disabling tracing. at_fn_check_prepare_notrace () { $at_trace_echo "Not enabling shell tracing (command contains $1)" $as_echo "$2" >"$at_check_line_file" at_check_trace=: at_check_filter=: : >"$at_stdout"; : >"$at_stderr" } # at_fn_check_prepare_trace LINE # ------------------------------ # Perform AT_CHECK preparations for the command at LINE for a traceable # command. at_fn_check_prepare_trace () { $as_echo "$1" >"$at_check_line_file" at_check_trace=$at_traceon at_check_filter=$at_check_filter_trace : >"$at_stdout"; : >"$at_stderr" } # at_fn_check_prepare_dynamic COMMAND LINE # ---------------------------------------- # Decide if COMMAND at LINE is traceable at runtime, and call the appropriate # preparation function. at_fn_check_prepare_dynamic () { case $1 in *$as_nl*) at_fn_check_prepare_notrace 'an embedded newline' "$2" ;; *) at_fn_check_prepare_trace "$2" ;; esac } # at_fn_filter_trace # ------------------ # Remove the lines in the file "$at_stderr" generated by "set -x" and print # them to stderr. at_fn_filter_trace () { mv "$at_stderr" "$at_stder1" grep '^ *+' "$at_stder1" >&2 grep -v '^ *+' "$at_stder1" >"$at_stderr" } # at_fn_log_failure FILE-LIST # --------------------------- # Copy the files in the list on stdout with a "> " prefix, and exit the shell # with a failure exit code. at_fn_log_failure () { for file do $as_echo "$file:"; sed 's/^/> /' "$file"; done echo 1 > "$at_status_file" exit 1 } # at_fn_check_skip EXIT-CODE LINE # ------------------------------- # Check whether EXIT-CODE is a special exit code (77 or 99), and if so exit # the test group subshell with that same exit code. Use LINE in any report # about test failure. at_fn_check_skip () { case $1 in 99) echo 99 > "$at_status_file"; at_failed=: $as_echo "$2: hard failure"; exit 99;; 77) echo 77 > "$at_status_file"; exit 77;; esac } # at_fn_check_status EXPECTED EXIT-CODE LINE # ------------------------------------------ # Check whether EXIT-CODE is the EXPECTED exit code, and if so do nothing. # Otherwise, if it is 77 or 99, exit the test group subshell with that same # exit code; if it is anything else print an error message referring to LINE, # and fail the test. at_fn_check_status () { case $2 in $1 ) ;; 77) echo 77 > "$at_status_file"; exit 77;; 99) echo 99 > "$at_status_file"; at_failed=: $as_echo "$3: hard failure"; exit 99;; *) $as_echo "$3: exit code was $2, expected $1" at_failed=:;; esac } # at_fn_diff_devnull FILE # ----------------------- # Emit a diff between /dev/null and FILE. Uses "test -s" to avoid useless diff # invocations. at_fn_diff_devnull () { test -s "$1" || return 0 $at_diff "$at_devnull" "$1" } # at_fn_test NUMBER # ----------------- # Parse out test NUMBER from the tail of this file. at_fn_test () { eval at_sed=\$at_sed$1 sed "$at_sed" "$at_myself" > "$at_test_source" } # at_fn_create_debugging_script # ----------------------------- # Create the debugging script $at_group_dir/run which will reproduce the # current test group. at_fn_create_debugging_script () { { echo "#! /bin/sh" && echo 'test "${ZSH_VERSION+set}" = set && alias -g '\''${1+"$@"}'\''='\''"$@"'\''' && $as_echo "cd '$at_dir'" && $as_echo "exec \${CONFIG_SHELL-$SHELL} \"$at_myself\" -v -d $at_debug_args $at_group \${1+\"\$@\"}" && echo 'exit 1' } >"$at_group_dir/run" && chmod +x "$at_group_dir/run" } ## -------------------------------- ## ## End of autotest shell functions. ## ## -------------------------------- ## { $as_echo "## ---------------- ## ## Tested programs. ## ## ---------------- ##" echo } >&5 # Report what programs are being tested. for at_program in : $at_tested do test "$at_program" = : && continue case $at_program in [\\/]* | ?:[\\/]* ) $at_program_=$at_program ;; * ) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -f "$as_dir/$at_program" && break done IFS=$as_save_IFS at_program_=$as_dir/$at_program ;; esac if test -f "$at_program_"; then { $as_echo "$at_srcdir/testsuite.at:141: $at_program_ --version" "$at_program_" --version &5 2>&1 else as_fn_error $? "cannot find $at_program" "$LINENO" 5 fi done { $as_echo "## ------------------ ## ## Running the tests. ## ## ------------------ ##" } >&5 at_start_date=`date` at_start_time=`date +%s 2>/dev/null` $as_echo "$as_me: starting at: $at_start_date" >&5 # Create the master directory if it doesn't already exist. as_dir="$at_suite_dir"; as_fn_mkdir_p || as_fn_error $? "cannot create \`$at_suite_dir'" "$LINENO" 5 # Can we diff with `/dev/null'? DU 5.0 refuses. if diff /dev/null /dev/null >/dev/null 2>&1; then at_devnull=/dev/null else at_devnull=$at_suite_dir/devnull >"$at_devnull" fi # Use `diff -u' when possible. if at_diff=`diff -u "$at_devnull" "$at_devnull" 2>&1` && test -z "$at_diff" then at_diff='diff -u' else at_diff=diff fi # Get the last needed group. for at_group in : $at_groups; do :; done # Extract the start and end lines of each test group at the tail # of this file awk ' BEGIN { FS="" } /^#AT_START_/ { start = NR } /^#AT_STOP_/ { test = substr ($ 0, 10) print "at_sed" test "=\"1," start "d;" (NR-1) "q\"" if (test == "'"$at_group"'") exit }' "$at_myself" > "$at_suite_dir/at-source-lines" && . "$at_suite_dir/at-source-lines" || as_fn_error $? "cannot create test line number cache" "$LINENO" 5 rm -f "$at_suite_dir/at-source-lines" # Set number of jobs for `-j'; avoid more jobs than test groups. set X $at_groups; shift; at_max_jobs=$# if test $at_max_jobs -eq 0; then at_jobs=1 fi if test $at_jobs -ne 1 && { test $at_jobs -eq 0 || test $at_jobs -gt $at_max_jobs; }; then at_jobs=$at_max_jobs fi # If parallel mode, don't output banners, don't split summary lines. if test $at_jobs -ne 1; then at_print_banners=false at_quiet=: fi # Set up helper dirs. rm -rf "$at_helper_dir" && mkdir "$at_helper_dir" && cd "$at_helper_dir" && { test -z "$at_groups" || mkdir $at_groups; } || as_fn_error $? "testsuite directory setup failed" "$LINENO" 5 # Functions for running a test group. We leave the actual # test group execution outside of a shell function in order # to avoid hitting zsh 4.x exit status bugs. # at_fn_group_prepare # ------------------- # Prepare for running a test group. at_fn_group_prepare () { # The directory for additional per-group helper files. at_job_dir=$at_helper_dir/$at_group # The file containing the location of the last AT_CHECK. at_check_line_file=$at_job_dir/check-line # The file containing the exit status of the last command. at_status_file=$at_job_dir/status # The files containing the output of the tested commands. at_stdout=$at_job_dir/stdout at_stder1=$at_job_dir/stder1 at_stderr=$at_job_dir/stderr # The file containing the code for a test group. at_test_source=$at_job_dir/test-source # The file containing dates. at_times_file=$at_job_dir/times # Be sure to come back to the top test directory. cd "$at_suite_dir" # Clearly separate the test groups when verbose. $at_first || $at_verbose echo at_group_normalized=$at_group eval 'while :; do case $at_group_normalized in #( '"$at_format"'*) break;; esac at_group_normalized=0$at_group_normalized done' # Create a fresh directory for the next test group, and enter. # If one already exists, the user may have invoked ./run from # within that directory; we remove the contents, but not the # directory itself, so that we aren't pulling the rug out from # under the shell's notion of the current directory. at_group_dir=$at_suite_dir/$at_group_normalized at_group_log=$at_group_dir/$as_me.log if test -d "$at_group_dir"; then find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx {} \; rm -fr "$at_group_dir"/* "$at_group_dir"/.[!.] "$at_group_dir"/.??* fi || { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: test directory for $at_group_normalized could not be cleaned" >&5 $as_echo "$as_me: WARNING: test directory for $at_group_normalized could not be cleaned" >&2;} # Be tolerant if the above `rm' was not able to remove the directory. as_dir="$at_group_dir"; as_fn_mkdir_p echo 0 > "$at_status_file" # In verbose mode, append to the log file *and* show on # the standard output; in quiet mode only write to the log. if test -z "$at_verbose"; then at_tee_pipe='tee -a "$at_group_log"' else at_tee_pipe='cat >> "$at_group_log"' fi } # at_fn_group_banner ORDINAL LINE DESC PAD [BANNER] # ------------------------------------------------- # Declare the test group ORDINAL, located at LINE with group description DESC, # and residing under BANNER. Use PAD to align the status column. at_fn_group_banner () { at_setup_line="$2" test -n "$5" && at_fn_banner $5 at_desc="$3" case $1 in [0-9]) at_desc_line=" $1: ";; [0-9][0-9]) at_desc_line=" $1: " ;; *) at_desc_line="$1: " ;; esac as_fn_append at_desc_line "$3$4" $at_quiet $as_echo_n "$at_desc_line" echo "# -*- compilation -*-" >> "$at_group_log" } # at_fn_group_postprocess # ----------------------- # Perform cleanup after running a test group. at_fn_group_postprocess () { # Be sure to come back to the suite directory, in particular # since below we might `rm' the group directory we are in currently. cd "$at_suite_dir" if test ! -f "$at_check_line_file"; then sed "s/^ */$as_me: WARNING: /" <<_ATEOF A failure happened in a test group before any test could be run. This means that test suite is improperly designed. Please report this failure to . _ATEOF $as_echo "$at_setup_line" >"$at_check_line_file" at_status=99 fi $at_verbose $as_echo_n "$at_group. $at_setup_line: " $as_echo_n "$at_group. $at_setup_line: " >> "$at_group_log" case $at_xfail:$at_status in yes:0) at_msg="UNEXPECTED PASS" at_res=xpass at_errexit=$at_errexit_p at_color=$at_red ;; no:0) at_msg="ok" at_res=pass at_errexit=false at_color=$at_grn ;; *:77) at_msg='skipped ('`cat "$at_check_line_file"`')' at_res=skip at_errexit=false at_color=$at_blu ;; no:* | *:99) at_msg='FAILED ('`cat "$at_check_line_file"`')' at_res=fail at_errexit=$at_errexit_p at_color=$at_red ;; yes:*) at_msg='expected failure ('`cat "$at_check_line_file"`')' at_res=xfail at_errexit=false at_color=$at_lgn ;; esac echo "$at_res" > "$at_job_dir/$at_res" # In parallel mode, output the summary line only afterwards. if test $at_jobs -ne 1 && test -n "$at_verbose"; then $as_echo "$at_desc_line $at_color$at_msg$at_std" else # Make sure there is a separator even with long titles. $as_echo " $at_color$at_msg$at_std" fi at_log_msg="$at_group. $at_desc ($at_setup_line): $at_msg" case $at_status in 0|77) # $at_times_file is only available if the group succeeded. # We're not including the group log, so the success message # is written in the global log separately. But we also # write to the group log in case they're using -d. if test -f "$at_times_file"; then at_log_msg="$at_log_msg ("`sed 1d "$at_times_file"`')' rm -f "$at_times_file" fi $as_echo "$at_log_msg" >> "$at_group_log" $as_echo "$at_log_msg" >&5 # Cleanup the group directory, unless the user wants the files # or the success was unexpected. if $at_debug_p || test $at_res = xpass; then at_fn_create_debugging_script if test $at_res = xpass && $at_errexit; then echo stop > "$at_stop_file" fi else if test -d "$at_group_dir"; then find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \; rm -fr "$at_group_dir" fi rm -f "$at_test_source" fi ;; *) # Upon failure, include the log into the testsuite's global # log. The failure message is written in the group log. It # is later included in the global log. $as_echo "$at_log_msg" >> "$at_group_log" # Upon failure, keep the group directory for autopsy, and create # the debugging script. With -e, do not start any further tests. at_fn_create_debugging_script if $at_errexit; then echo stop > "$at_stop_file" fi ;; esac } ## ------------ ## ## Driver loop. ## ## ------------ ## if (set -m && set +m && set +b) >/dev/null 2>&1; then set +b at_job_control_on='set -m' at_job_control_off='set +m' at_job_group=- else at_job_control_on=: at_job_control_off=: at_job_group= fi for at_signal in 1 2 15; do trap 'set +x; set +e $at_job_control_off at_signal='"$at_signal"' echo stop > "$at_stop_file" trap "" $at_signal at_pgids= for at_pgid in `jobs -p 2>/dev/null`; do at_pgids="$at_pgids $at_job_group$at_pgid" done test -z "$at_pgids" || kill -$at_signal $at_pgids 2>/dev/null wait if test "$at_jobs" -eq 1 || test -z "$at_verbose"; then echo >&2 fi at_signame=`kill -l $at_signal 2>&1 || echo $at_signal` set x $at_signame test 0 -gt 2 && at_signame=$at_signal { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: caught signal $at_signame, bailing out" >&5 $as_echo "$as_me: WARNING: caught signal $at_signame, bailing out" >&2;} as_fn_arith 128 + $at_signal && exit_status=$as_val as_fn_exit $exit_status' $at_signal done rm -f "$at_stop_file" at_first=: if test $at_jobs -ne 1 && rm -f "$at_job_fifo" && test -n "$at_job_group" && ( mkfifo "$at_job_fifo" && trap 'exit 1' PIPE STOP TSTP ) 2>/dev/null then # FIFO job dispatcher. trap 'at_pids= for at_pid in `jobs -p`; do at_pids="$at_pids $at_job_group$at_pid" done if test -n "$at_pids"; then at_sig=TSTP test "${TMOUT+set}" = set && at_sig=STOP kill -$at_sig $at_pids 2>/dev/null fi kill -STOP $$ test -z "$at_pids" || kill -CONT $at_pids 2>/dev/null' TSTP echo # Turn jobs into a list of numbers, starting from 1. at_joblist=`$as_echo "$at_groups" | sed -n 1,${at_jobs}p` set X $at_joblist shift for at_group in $at_groups; do $at_job_control_on 2>/dev/null ( # Start one test group. $at_job_control_off if $at_first; then exec 7>"$at_job_fifo" else exec 6<&- fi trap 'set +x; set +e trap "" PIPE echo stop > "$at_stop_file" echo >&7 as_fn_exit 141' PIPE at_fn_group_prepare if cd "$at_group_dir" && at_fn_test $at_group && . "$at_test_source" then :; else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5 $as_echo "$as_me: WARNING: unable to parse test group: $at_group" >&2;} at_failed=: fi at_fn_group_postprocess echo >&7 ) & $at_job_control_off if $at_first; then at_first=false exec 6<"$at_job_fifo" 7>"$at_job_fifo" fi shift # Consume one token. if test $# -gt 0; then :; else read at_token <&6 || break set x $* fi test -f "$at_stop_file" && break done exec 7>&- # Read back the remaining ($at_jobs - 1) tokens. set X $at_joblist shift if test $# -gt 0; then shift for at_job do read at_token done <&6 fi exec 6<&- wait else # Run serially, avoid forks and other potential surprises. for at_group in $at_groups; do at_fn_group_prepare if cd "$at_group_dir" && at_fn_test $at_group && . "$at_test_source"; then :; else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5 $as_echo "$as_me: WARNING: unable to parse test group: $at_group" >&2;} at_failed=: fi at_fn_group_postprocess test -f "$at_stop_file" && break at_first=false done fi # Wrap up the test suite with summary statistics. cd "$at_helper_dir" # Use ?..???? when the list must remain sorted, the faster * otherwise. at_pass_list=`for f in */pass; do echo $f; done | sed '/\*/d; s,/pass,,'` at_skip_list=`for f in */skip; do echo $f; done | sed '/\*/d; s,/skip,,'` at_xfail_list=`for f in */xfail; do echo $f; done | sed '/\*/d; s,/xfail,,'` at_xpass_list=`for f in ?/xpass ??/xpass ???/xpass ????/xpass; do echo $f; done | sed '/?/d; s,/xpass,,'` at_fail_list=`for f in ?/fail ??/fail ???/fail ????/fail; do echo $f; done | sed '/?/d; s,/fail,,'` set X $at_pass_list $at_xpass_list $at_xfail_list $at_fail_list $at_skip_list shift; at_group_count=$# set X $at_xpass_list; shift; at_xpass_count=$#; at_xpass_list=$* set X $at_xfail_list; shift; at_xfail_count=$# set X $at_fail_list; shift; at_fail_count=$#; at_fail_list=$* set X $at_skip_list; shift; at_skip_count=$# as_fn_arith $at_group_count - $at_skip_count && at_run_count=$as_val as_fn_arith $at_xpass_count + $at_fail_count && at_unexpected_count=$as_val as_fn_arith $at_xfail_count + $at_fail_count && at_total_fail_count=$as_val # Back to the top directory. cd "$at_dir" rm -rf "$at_helper_dir" # Compute the duration of the suite. at_stop_date=`date` at_stop_time=`date +%s 2>/dev/null` $as_echo "$as_me: ending at: $at_stop_date" >&5 case $at_start_time,$at_stop_time in [0-9]*,[0-9]*) as_fn_arith $at_stop_time - $at_start_time && at_duration_s=$as_val as_fn_arith $at_duration_s / 60 && at_duration_m=$as_val as_fn_arith $at_duration_m / 60 && at_duration_h=$as_val as_fn_arith $at_duration_s % 60 && at_duration_s=$as_val as_fn_arith $at_duration_m % 60 && at_duration_m=$as_val at_duration="${at_duration_h}h ${at_duration_m}m ${at_duration_s}s" $as_echo "$as_me: test suite duration: $at_duration" >&5 ;; esac echo $as_echo "## ------------- ## ## Test results. ## ## ------------- ##" echo { echo $as_echo "## ------------- ## ## Test results. ## ## ------------- ##" echo } >&5 if test $at_run_count = 1; then at_result="1 test" at_were=was else at_result="$at_run_count tests" at_were=were fi if $at_errexit_p && test $at_unexpected_count != 0; then if test $at_xpass_count = 1; then at_result="$at_result $at_were run, one passed" else at_result="$at_result $at_were run, one failed" fi at_result="$at_result unexpectedly and inhibited subsequent tests." at_color=$at_red else # Don't you just love exponential explosion of the number of cases? at_color=$at_red case $at_xpass_count:$at_fail_count:$at_xfail_count in # So far, so good. 0:0:0) at_result="$at_result $at_were successful." at_color=$at_grn ;; 0:0:*) at_result="$at_result behaved as expected." at_color=$at_lgn ;; # Some unexpected failures 0:*:0) at_result="$at_result $at_were run, $at_fail_count failed unexpectedly." ;; # Some failures, both expected and unexpected 0:*:1) at_result="$at_result $at_were run, $at_total_fail_count failed ($at_xfail_count expected failure)." ;; 0:*:*) at_result="$at_result $at_were run, $at_total_fail_count failed ($at_xfail_count expected failures)." ;; # No unexpected failures, but some xpasses *:0:*) at_result="$at_result $at_were run, $at_xpass_count passed unexpectedly." ;; # No expected failures, but failures and xpasses *:1:0) at_result="$at_result $at_were run, $at_unexpected_count did not behave as expected ($at_fail_count unexpected failure)." ;; *:*:0) at_result="$at_result $at_were run, $at_unexpected_count did not behave as expected ($at_fail_count unexpected failures)." ;; # All of them. *:*:1) at_result="$at_result $at_were run, $at_xpass_count passed unexpectedly, $at_total_fail_count failed ($at_xfail_count expected failure)." ;; *:*:*) at_result="$at_result $at_were run, $at_xpass_count passed unexpectedly, $at_total_fail_count failed ($at_xfail_count expected failures)." ;; esac if test $at_skip_count = 0 && test $at_run_count -gt 1; then at_result="All $at_result" fi fi # Now put skips in the mix. case $at_skip_count in 0) ;; 1) at_result="$at_result 1 test was skipped." ;; *) at_result="$at_result $at_skip_count tests were skipped." ;; esac if test $at_unexpected_count = 0; then echo "$at_color$at_result$at_std" echo "$at_result" >&5 else echo "${at_color}ERROR: $at_result$at_std" >&2 echo "ERROR: $at_result" >&5 { echo $as_echo "## ------------------------ ## ## Summary of the failures. ## ## ------------------------ ##" # Summary of failed and skipped tests. if test $at_fail_count != 0; then echo "Failed tests:" $SHELL "$at_myself" $at_fail_list --list echo fi if test $at_skip_count != 0; then echo "Skipped tests:" $SHELL "$at_myself" $at_skip_list --list echo fi if test $at_xpass_count != 0; then echo "Unexpected passes:" $SHELL "$at_myself" $at_xpass_list --list echo fi if test $at_fail_count != 0; then $as_echo "## ---------------------- ## ## Detailed failed tests. ## ## ---------------------- ##" echo for at_group in $at_fail_list do at_group_normalized=$at_group eval 'while :; do case $at_group_normalized in #( '"$at_format"'*) break;; esac at_group_normalized=0$at_group_normalized done' cat "$at_suite_dir/$at_group_normalized/$as_me.log" echo done echo fi if test -n "$at_top_srcdir"; then sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## ${at_top_build_prefix}config.log ## _ASBOX sed 's/^/| /' ${at_top_build_prefix}config.log echo fi } >&5 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## $as_me.log was created. ## _ASBOX echo if $at_debug_p; then at_msg='per-test log files' else at_msg="\`${at_testdir+${at_testdir}/}$as_me.log'" fi $as_echo "Please send $at_msg and all information you think might help: To: Subject: [mailfromd 8.8] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly} You may investigate any problem if you feel able to do so, in which case the test suite provides a good starting point. Its output may be found below \`${at_testdir+${at_testdir}/}$as_me.dir'. " exit 1 fi exit 0 ## ------------- ## ## Actual tests. ## ## ------------- ## #AT_START_1 at_fn_group_banner 1 'version.at:17' \ "mailfromd version" " " 1 at_xfail=no ( $as_echo "1. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/version.at:19: mailfromd --version | sed '1{s/ *\\[.*\\]//;q;}' " at_fn_check_prepare_notrace 'a shell pipeline' "version.at:19" ( $at_check_trace; mailfromd --version | sed '1{s/ *\[.*\]//;q;}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "mailfromd (mailfromd) 8.8 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/version.at:19" if $at_failed; then : cat >$XFAILFILE <<'_EOT' ============================================================== WARNING: Not using the proper version, *all* checks dubious... ============================================================== _EOT else rm -f $XFAILFILE fi $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_1 #AT_START_2 at_fn_group_banner 2 'vercmp.at:17' \ "vercmp" " " 1 at_xfail=no ( $as_echo "2. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' func main(...) returns number do echo vercmp("1", "1") echo vercmp("1", "2") echo vercmp("2", "1") echo vercmp("1.0", "2.0") echo vercmp("2.0", "1.0") echo vercmp("1.1", "2.0") echo vercmp("1.1", "1.0") echo vercmp("1.0", "1.1") echo vercmp("2.0.87", "2.0") echo vercmp("2.0.87", "2.0.86") echo vercmp("2.0.87", "2.0.87") echo vercmp("2.0.87", "2.0.88") done _ATEOF { set +x $as_echo "$at_srcdir/vercmp.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog " "vercmp.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "0 -1 1 -1 1 -1 1 -1 1 1 0 -1 " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/vercmp.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_2 #AT_START_3 at_fn_group_banner 3 'vercmp01.at:17' \ "vercmp: invalid 1st argument" " " 1 at_xfail=no ( $as_echo "3. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' require 'status' func main(...) returns number do echo vercmp("", "1") done _ATEOF { set +x $as_echo "$at_srcdir/vercmp01.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog " "vercmp01.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: RUNTIME ERROR near prog:6: uncaught exception e_range: vercmp: not a valid version number: (argument 1) " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/vercmp01.at:20" $at_failed && at_fn_log_failure $at_traceon; } cat >prog <<'_ATEOF' require 'status' func main(...) returns number do echo vercmp("1.a", "1") done _ATEOF { set +x $as_echo "$at_srcdir/vercmp01.at:34: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog " "vercmp01.at:34" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: RUNTIME ERROR near prog:6: uncaught exception e_range: vercmp: not a valid version number: 1.a (argument 1) " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/vercmp01.at:34" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_3 #AT_START_4 at_fn_group_banner 4 'vercmp02.at:17' \ "vercmp: invalid 2nd argument" " " 1 at_xfail=no ( $as_echo "4. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' require 'status' func main(...) returns number do echo vercmp("1.0", "") done _ATEOF { set +x $as_echo "$at_srcdir/vercmp02.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog " "vercmp02.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: RUNTIME ERROR near prog:6: uncaught exception e_range: vercmp: not a valid version number: (argument 2) " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/vercmp02.at:20" $at_failed && at_fn_log_failure $at_traceon; } cat >prog <<'_ATEOF' require 'status' func main(...) returns number do echo vercmp("1.0", "1.a") done _ATEOF { set +x $as_echo "$at_srcdir/vercmp02.at:34: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog " "vercmp02.at:34" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: RUNTIME ERROR near prog:6: uncaught exception e_range: vercmp: not a valid version number: 1.a (argument 2) " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/vercmp02.at:34" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_4 #AT_START_5 at_fn_group_banner 5 'resolv_a.at:17' \ "A lookup" " " 2 at_xfail=no ( $as_echo "5. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/resolv_a.at:19: at_resolv_conf || exit 77 resolv -f resolv.conf a bkmx.test1.\$MF_TOPDOMAIN " at_fn_check_prepare_notrace 'an embedded newline' "resolv_a.at:19" ( $at_check_trace; at_resolv_conf || exit 77 resolv -f resolv.conf a bkmx.test1.$MF_TOPDOMAIN ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "OK 192.0.2.3 192.0.2.4 192.0.2.5 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/resolv_a.at:19" $at_failed && at_fn_log_failure $at_traceon; } { set +x $as_echo "$at_srcdir/resolv_a.at:30: at_resolv_conf || exit 77 resolv -f resolv.conf a nonexistent.\$MF_TOPDOMAIN " at_fn_check_prepare_notrace 'an embedded newline' "resolv_a.at:30" ( $at_check_trace; at_resolv_conf || exit 77 resolv -f resolv.conf a nonexistent.$MF_TOPDOMAIN ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "NOTFOUND " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 1 $at_status "$at_srcdir/resolv_a.at:30" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_5 #AT_START_6 at_fn_group_banner 6 'resolv_ptr.at:17' \ "PTR lookup" " " 2 at_xfail=no ( $as_echo "6. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/resolv_ptr.at:19: at_resolv_conf || exit 77 resolv -f resolv.conf -S .\$MF_TOPDOMAIN ptr 192.0.2.1 resolv -f resolv.conf -S .\$MF_TOPDOMAIN ptr 192.0.2.2 resolv -f resolv.conf -S .\$MF_TOPDOMAIN ptr 192.0.2.3 " at_fn_check_prepare_notrace 'an embedded newline' "resolv_ptr.at:19" ( $at_check_trace; at_resolv_conf || exit 77 resolv -f resolv.conf -S .$MF_TOPDOMAIN ptr 192.0.2.1 resolv -f resolv.conf -S .$MF_TOPDOMAIN ptr 192.0.2.2 resolv -f resolv.conf -S .$MF_TOPDOMAIN ptr 192.0.2.3 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "OK test1 OK mail.test1 OK mail1.test1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/resolv_ptr.at:19" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_6 #AT_START_7 at_fn_group_banner 7 'resolv_txt.at:17' \ "TXT lookup" " " 2 at_xfail=no ( $as_echo "7. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/resolv_txt.at:19: at_resolv_conf || exit 77 resolv -f resolv.conf txt test1.\$MF_TOPDOMAIN " at_fn_check_prepare_notrace 'an embedded newline' "resolv_txt.at:19" ( $at_check_trace; at_resolv_conf || exit 77 resolv -f resolv.conf txt test1.$MF_TOPDOMAIN ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "OK Mailfromd test domain 1 v=spf1 -all " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/resolv_txt.at:19" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_7 #AT_START_8 at_fn_group_banner 8 'resolv_mx.at:17' \ "MX lookup" " " 2 at_xfail=no ( $as_echo "8. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/resolv_mx.at:19: at_resolv_conf || exit 77 resolv -f resolv.conf -S .\$MF_TOPDOMAIN mx test1.\$MF_TOPDOMAIN " at_fn_check_prepare_notrace 'an embedded newline' "resolv_mx.at:19" ( $at_check_trace; at_resolv_conf || exit 77 resolv -f resolv.conf -S .$MF_TOPDOMAIN mx test1.$MF_TOPDOMAIN ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "OK mail.test1 mail.test2 bkmx.test1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/resolv_mx.at:19" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_8 #AT_START_9 at_fn_group_banner 9 'resolv_spf.at:17' \ "SPF lookup" " " 2 at_xfail=no ( $as_echo "9. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/resolv_spf.at:19: at_resolv_conf || exit 77 resolv -f resolv.conf spf test1.\$MF_TOPDOMAIN " at_fn_check_prepare_notrace 'an embedded newline' "resolv_spf.at:19" ( $at_check_trace; at_resolv_conf || exit 77 resolv -f resolv.conf spf test1.$MF_TOPDOMAIN ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "OK v=spf1 -all " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/resolv_spf.at:19" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_9 #AT_START_10 at_fn_group_banner 10 'resolv_ptr_val.at:17' \ "PTR validate" " " 2 at_xfail=no ( $as_echo "10. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/resolv_ptr_val.at:19: at_resolv_conf || exit 77 resolv -f resolv.conf -S .\$MF_TOPDOMAIN ptr_val 192.0.2.4 " at_fn_check_prepare_notrace 'an embedded newline' "resolv_ptr_val.at:19" ( $at_check_trace; at_resolv_conf || exit 77 resolv -f resolv.conf -S .$MF_TOPDOMAIN ptr_val 192.0.2.4 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "OK bkmx.test1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/resolv_ptr_val.at:19" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_10 #AT_START_11 at_fn_group_banner 11 'module01.at:17' \ "module: require" " " 3 at_xfail=no ( $as_echo "11. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' require 'mod2' prog envfrom do mod_print2() done _ATEOF { set +x $as_echo "$at_srcdir/module01.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "module01.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mod2:5: mod_print2 called " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/module01.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_11 #AT_START_12 at_fn_group_banner 12 'module02.at:17' \ "module: import literal" " " 3 at_xfail=no ( $as_echo "12. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' from 'mod2' import mod_print2. prog envfrom do mod_print2() done _ATEOF { set +x $as_echo "$at_srcdir/module02.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "module02.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mod2:5: mod_print2 called " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/module02.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_12 #AT_START_13 at_fn_group_banner 13 'module03.at:17' \ "module: import regex" " " 3 at_xfail=no ( $as_echo "13. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' from 'mod2' import '/.*/'. prog envfrom do mod_print2() done _ATEOF { set +x $as_echo "$at_srcdir/module03.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "module03.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mod2:5: mod_print2 called " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/module03.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_13 #AT_START_14 at_fn_group_banner 14 'module04.at:17' \ "module: import regex (not matching)" " " 3 at_xfail=no ( $as_echo "14. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' from 'mod2' import '/^foo.*/'. prog envfrom do mod_print2() done _ATEOF { set +x $as_echo "$at_srcdir/module04.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "module04.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: prog:6.3-12: syntax error, unexpected identifier, expecting const or precious or static or public " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 78 $at_status "$at_srcdir/module04.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_14 #AT_START_15 at_fn_group_banner 15 'module05.at:17' \ "module: import + xform" " " 3 at_xfail=no ( $as_echo "15. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' #pragma regex +extended from 'mod1' import '/^mod[12]_.*/s/^mod([12])_(.+)/\2\1/'. prog envfrom do print1() print2() done _ATEOF { set +x $as_echo "$at_srcdir/module05.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "module05.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mod1:6: mod1_print called mod2:5: mod_print2 called " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/module05.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_15 #AT_START_16 at_fn_group_banner 16 'module06.at:17' \ "module: clean namespace" " " 3 at_xfail=no ( $as_echo "16. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' #pragma regex +extended from 'mod1' import '/.*/'. prog envfrom do mod1_print() mod2_print() mod_print2() done _ATEOF { set +x $as_echo "$at_srcdir/module06.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "module06.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: prog:9.3-12: syntax error, unexpected identifier, expecting const or precious or static or public " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 78 $at_status "$at_srcdir/module06.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_16 #AT_START_17 at_fn_group_banner 17 'module07.at:17' \ "module: variable allocation" " " 3 at_xfail=no ( $as_echo "17. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Mailfromd 7.0 would fail to allocate static variables # from required modules as well as public variables not accessed directly # from the uplevel module. For example, given the included prog, v7.0 # would produce: # foo # foo # foo # qux # Affected-versions: < 7.0 # Additional-info: cat >prog <<'_ATEOF' #pragma regex +extended require 'vmod2' prog envfrom do vmod2_init() done _ATEOF { set +x $as_echo "$at_srcdir/module07.at:31: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "module07.at:31" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "foo bar baz qux " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/module07.at:31" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_17 #AT_START_18 at_fn_group_banner 18 'static01.at:17' \ "static variables visibility" " " 4 at_xfail=no ( $as_echo "18. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' require 'static' string stringval "bar" prog envfrom do echo "stringval=%stringval" echo "static:stringval=" . get_stringval() set_stringval("baz") echo "modified static:stringval=" . get_stringval() done _ATEOF { set +x $as_echo "$at_srcdir/static01.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "static01.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "stringval=bar static:stringval=foo modified static:stringval=baz " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/static01.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_18 #AT_START_19 at_fn_group_banner 19 'static02.at:17' \ "implicit static functions" " " 4 at_xfail=no ( $as_echo "19. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' require 'public' prog envfrom do __append("test") done _ATEOF { set +x $as_echo "$at_srcdir/static02.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "static02.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: prog:6.3-10: syntax error, unexpected identifier, expecting const or precious or static or public " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 78 $at_status "$at_srcdir/static02.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_19 #AT_START_20 at_fn_group_banner 20 'public.at:17' \ "public variables visibility" " " 4 at_xfail=no ( $as_echo "20. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' require 'public' string stringval "bar" prog envfrom do echo "stringval=%stringval" echo "static:stringval=" . get_stringval() append_stringval("baz") echo "modified static:stringval=" . get_stringval() done _ATEOF { set +x $as_echo "$at_srcdir/public.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "public.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "stringval=bar static:stringval=foo modified static:stringval=foobaz " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/public.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_20 #AT_START_21 at_fn_group_banner 21 'enum.at:17' \ "enumerations" " " 5 at_xfail=no ( $as_echo "21. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/enum.at:20: cat >prog <<'_ATEOF' const do A B C D done func main(...) returns number do echo \"A=\".A echo \"B=\".B echo \"C=\".C echo \"D=\".D done _ATEOF mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_notrace 'an embedded newline' "enum.at:20" ( $at_check_trace; cat >prog <<'_ATEOF' const do A B C D done func main(...) returns number do echo "A=".A echo "B=".B echo "C=".C echo "D=".D done _ATEOF mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "A=0 B=1 C=2 D=3 " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/enum.at:20" $at_failed && at_fn_log_failure $at_traceon; } { set +x $as_echo "$at_srcdir/enum.at:48: cat >prog <<'_ATEOF' const do A 25/5 + 1 B C D done func main(...) returns number do echo \"A=\".A echo \"B=\".B echo \"C=\".C echo \"D=\".D done _ATEOF mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_notrace 'an embedded newline' "enum.at:48" ( $at_check_trace; cat >prog <<'_ATEOF' const do A 25/5 + 1 B C D done func main(...) returns number do echo "A=".A echo "B=".B echo "C=".C echo "D=".D done _ATEOF mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "A=6 B=7 C=8 D=9 " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/enum.at:48" $at_failed && at_fn_log_failure $at_traceon; } { set +x $as_echo "$at_srcdir/enum.at:76: cat >prog <<'_ATEOF' const do A B C 15 D done func main(...) returns number do echo \"A=\".A echo \"B=\".B echo \"C=\".C echo \"D=\".D done _ATEOF mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_notrace 'an embedded newline' "enum.at:76" ( $at_check_trace; cat >prog <<'_ATEOF' const do A B C 15 D done func main(...) returns number do echo "A=".A echo "B=".B echo "C=".C echo "D=".D done _ATEOF mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "A=0 B=1 C=15 D=16 " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/enum.at:76" $at_failed && at_fn_log_failure $at_traceon; } { set +x $as_echo "$at_srcdir/enum.at:104: cat >prog <<'_ATEOF' const do A \"one\" B \"two\" C \"three\" D \"four\" done func main(...) returns number do echo \"A=\".A echo \"B=\".B echo \"C=\".C echo \"D=\".D done _ATEOF mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_notrace 'an embedded newline' "enum.at:104" ( $at_check_trace; cat >prog <<'_ATEOF' const do A "one" B "two" C "three" D "four" done func main(...) returns number do echo "A=".A echo "B=".B echo "C=".C echo "D=".D done _ATEOF mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "A=one B=two C=three D=four " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/enum.at:104" $at_failed && at_fn_log_failure $at_traceon; } { set +x $as_echo "$at_srcdir/enum.at:132: cat >prog <<'_ATEOF' const do A B C \"two\" D \"three\" done func main(...) returns number do echo \"A=\".A echo \"B=\".B echo \"C=\".C echo \"D=\".D done _ATEOF mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_notrace 'an embedded newline' "enum.at:132" ( $at_check_trace; cat >prog <<'_ATEOF' const do A B C "two" D "three" done func main(...) returns number do echo "A=".A echo "B=".B echo "C=".C echo "D=".D done _ATEOF mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "A=0 B=1 C=two D=three " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/enum.at:132" $at_failed && at_fn_log_failure $at_traceon; } { set +x $as_echo "$at_srcdir/enum.at:160: cat >prog <<'_ATEOF' const do A B \"one\" C D done func main(...) returns number do echo \"A=\".A echo \"B=\".B echo \"C=\".C echo \"D=\".D done _ATEOF mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_notrace 'an embedded newline' "enum.at:160" ( $at_check_trace; cat >prog <<'_ATEOF' const do A B "one" C D done func main(...) returns number do echo "A=".A echo "B=".B echo "C=".C echo "D=".D done _ATEOF mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: prog:6.3: initializer element is not numeric " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 78 $at_status "$at_srcdir/enum.at:160" $at_failed && at_fn_log_failure $at_traceon; } { set +x $as_echo "$at_srcdir/enum.at:185: cat >prog <<'_ATEOF' precious const do A B C D done func main(...) returns number do echo \"A=\".A echo \"B=\".B echo \"C=\".C echo \"D=\".D done _ATEOF mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_notrace 'an embedded newline' "enum.at:185" ( $at_check_trace; cat >prog <<'_ATEOF' precious const do A B C D done func main(...) returns number do echo "A=".A echo "B=".B echo "C=".C echo "D=".D done _ATEOF mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: prog:1.1-8: \`precious' used with const " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 78 $at_status "$at_srcdir/enum.at:185" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_21 #AT_START_22 at_fn_group_banner 22 'ack.at:17' \ "Ackerman function" " " 5 at_xfail=no ( $as_echo "22. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/ack.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/ack.mf " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/ack.mf " "ack.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/ack.mf ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "ack(3,8)=2045 " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/ack.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_22 #AT_START_23 at_fn_group_banner 23 'arg.at:17' \ "Function arguments" " " 5 at_xfail=no ( $as_echo "23. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog envfrom do if $1 = "gray@localhost" reject 550 5.7.1 "We do not accept mail from that address" fi done _ATEOF cat >script <<'_ATEOF' \E250 HELO localhost \E550 MAIL FROM: gray@localhost \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/arg.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "arg.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/arg.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_23 #AT_START_24 at_fn_group_banner 24 'alias.at:17' \ "Function aliases" " " 5 at_xfail=no ( $as_echo "24. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' func foo(string a) alias bar alias baz returns string do return "%a.%__function__" done prog envfrom do echo foo("a") echo bar("b") echo baz("c") done _ATEOF { set +x $as_echo "$at_srcdir/alias.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "alias.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "a.foo b.foo c.foo " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/alias.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_24 #AT_START_25 at_fn_group_banner 25 'bctx00.at:17' \ "Builtin in wrong context" " " 5 at_xfail=no ( $as_echo "25. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' prog envfrom do echo current_message() done _ATEOF { set +x $as_echo "$at_srcdir/bctx00.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "bctx00.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: prog:4.8-22: built-in function \`current_message' cannot be used in prog \`envfrom' " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 78 $at_status "$at_srcdir/bctx00.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_25 #AT_START_26 at_fn_group_banner 26 'bctx01.at:17' \ "Builtin in correct context" " " 5 at_xfail=no ( $as_echo "26. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' prog eom do echo current_message() done _ATEOF { set +x $as_echo "$at_srcdir/bctx01.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "bctx01.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/bctx01.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_26 #AT_START_27 at_fn_group_banner 27 'fctx00.at:17' \ "Function in wrong context" " " 5 at_xfail=no ( $as_echo "27. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' func current_message_wrap() returns number do return current_message() done prog envfrom do echo current_message_wrap() done _ATEOF { set +x $as_echo "$at_srcdir/fctx00.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "fctx00.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: prog:10.8-27: function \`current_message_wrap' cannot be used in prog \`envfrom' " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 78 $at_status "$at_srcdir/fctx00.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_27 #AT_START_28 at_fn_group_banner 28 'fctx01.at:17' \ "Function in correct context" " " 5 at_xfail=no ( $as_echo "28. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' func current_message_wrap() returns number do return current_message() done prog eom do echo current_message_wrap() done _ATEOF { set +x $as_echo "$at_srcdir/fctx01.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "fctx01.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/fctx01.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_28 #AT_START_29 at_fn_group_banner 29 'ml.at:17' \ "Multiline strings" " " 5 at_xfail=no ( $as_echo "29. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' prog envfrom do reject 550 5.0.0 <. EOT done _ATEOF { set +x $as_echo "$at_srcdir/ml.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "ml.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 550 5.0.0 This program 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 this program. If not, see . State envfrom: reject " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/ml.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_29 #AT_START_30 at_fn_group_banner 30 'ml01.at:17' \ "var refs in multiline" " " 5 at_xfail=no ( $as_echo "30. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' prog envfrom do string where "Xanadu" string who "Kubla-Khan" string what "pleasure-dome" set s <>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "In Xanadu did Kubla-Khan a stately pleasure-dome decree " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/ml01.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_30 #AT_START_31 at_fn_group_banner 31 'declvar.at:17' \ "Declared variables" " " 5 at_xfail=no ( $as_echo "31. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' set str "String" prog envfrom do echo str done _ATEOF { set +x $as_echo "$at_srcdir/declvar.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "declvar.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "String " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/declvar.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_31 #AT_START_32 at_fn_group_banner 32 'macros.at:17' \ "Built-in macros" " " 6 at_xfail=no ( $as_echo "32. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' func patchstring() returns string do if __patch__ return ".%__patch__" else return "" fi done prog envfrom do echo "%__file__:%__line__: this is %__package__ %__major__.%__minor__" . patchstring() done _ATEOF { set +x $as_echo "$at_srcdir/macros.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "macros.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "prog:13: this is mailfromd 8.8 " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/macros.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_32 #AT_START_33 at_fn_group_banner 33 'expstr.at:17' \ "macro expansion in strings within pragma" " " 6 at_xfail=no ( $as_echo "33. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' #pragma dbprop "%__statedir__/file.db" null 640 prog envfrom do pass done _ATEOF { set +x $as_echo "$at_srcdir/expstr.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "expstr.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/expstr.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_33 #AT_START_34 at_fn_group_banner 34 'miltermacros.at:17' \ "pragma miltermacros" " " 6 at_xfail=no ( $as_echo "34. $at_setup_line: testing $at_desc ..." $at_traceon # Affected versions: < 7.0.92-20101120 # Description: #pragma miltermacros did not add curly brackets around # macro names longer than 1 character, as the rest of mailfromd code # did. { set +x $as_echo "$at_srcdir/miltermacros.at:25: cat >prog <<'_ATEOF' #pragma miltermacros envfrom auth_type prog envfrom do echo \$f done _ATEOF mailfromd \$MFOPTS \$MFADDOPTS --dump-macros ./prog " at_fn_check_prepare_notrace 'an embedded newline' "miltermacros.at:25" ( $at_check_trace; cat >prog <<'_ATEOF' #pragma miltermacros envfrom auth_type prog envfrom do echo $f done _ATEOF mailfromd $MFOPTS $MFADDOPTS --dump-macros ./prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "envfrom {auth_type}, f " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/miltermacros.at:25" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_34 #AT_START_35 at_fn_group_banner 35 'catch.at:17' \ "Setting exceptions" " " 7 at_xfail=no ( $as_echo "35. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/catch.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/catch.mf s=127.0.0.1" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch.mf s=127.0.0.1" "catch.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch.mf s=127.0.0.1 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: accept " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/catch.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_35 #AT_START_36 at_fn_group_banner 36 'invip.at:17' \ "Catching exceptions: invip" " " 7 at_xfail=no ( $as_echo "36. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/invip.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/catch.mf s=127.0.0.a" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch.mf s=127.0.0.a" "invip.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch.mf s=127.0.0.a ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 450 Caught condition 7 State envfrom: tempfail " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/invip.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_36 #AT_START_37 at_fn_group_banner 37 'invcidr.at:17' \ "Catching exceptions: invcidr" " " 7 at_xfail=no ( $as_echo "37. $at_setup_line: testing $at_desc ..." $at_traceon cat > experr <:1: warning: variable \`network' already initialized mailfromd: $ETCDIR/catch.mf:20.5-11: warning: this is the location of the previous initialization EOT { set +x $as_echo "$at_srcdir/invcidr.at:25: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/catch.mf s=10.0.0.1 -v network=10-10" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch.mf s=10.0.0.1 -v network=10-10" "invcidr.at:25" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch.mf s=10.0.0.1 -v network=10-10 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter $at_diff experr "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 450 Caught condition 8 State envfrom: tempfail " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/invcidr.at:25" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_37 #AT_START_38 at_fn_group_banner 38 'catch01.at:17' \ "Setting exceptions (2)" " " 7 at_xfail=no ( $as_echo "38. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/catch01.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/catch01.mf s=127.0.0.1" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch01.mf s=127.0.0.1" "catch01.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch01.mf s=127.0.0.1 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: accept " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/catch01.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_38 #AT_START_39 at_fn_group_banner 39 'invip2.at:17' \ "Catching exceptions: invip (2)" " " 7 at_xfail=no ( $as_echo "39. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/invip2.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/catch01.mf s=127.0.0.a" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch01.mf s=127.0.0.a" "invip2.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch01.mf s=127.0.0.a ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "safe_cidr: invalid IP address " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: reject " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/invip2.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_39 #AT_START_40 at_fn_group_banner 40 'invcidr2.at:17' \ "Catching exceptions: invcidr (2)" " " 7 at_xfail=no ( $as_echo "40. $at_setup_line: testing $at_desc ..." $at_traceon cat > experr <:1: warning: variable \`network' already initialized mailfromd: $ETCDIR/catch01.mf:20.5-11: warning: this is the location of the previous initialization EOT { set +x $as_echo "$at_srcdir/invcidr2.at:25: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/catch01.mf s=10.0.0.1 -v network=10-10" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch01.mf s=10.0.0.1 -v network=10-10" "invcidr2.at:25" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/catch01.mf s=10.0.0.1 -v network=10-10 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter $at_diff experr "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 450 Caught condition 8 State envfrom: tempfail " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/invcidr2.at:25" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_40 #AT_START_41 at_fn_group_banner 41 'trycatch01.at:17' \ "Try-catch: returning from try" " " 7 at_xfail=no ( $as_echo "41. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check returning from the try branch of a `try-catch' # construct. cat >prog <<'_ATEOF' func throwcheck() returns number do try do return 0 done catch * do echo "Caught exception: $1, $2" return 1 done return 2 done func main(...) returns number do echo throwcheck() done _ATEOF { set +x $as_echo "$at_srcdir/trycatch01.at:23: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog " "trycatch01.at:23" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "0 " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch01.at:23" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_41 #AT_START_42 at_fn_group_banner 42 'trycatch02.at:17' \ "Try-catch: returning from catch" " " 7 at_xfail=no ( $as_echo "42. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check returning from the catch branch of a `try-catch' # construct. cat >prog <<'_ATEOF' dclex ex0 dclex ex1 func throwcheck() returns number do try do throw ex1 "text" return 0 done catch * do echo "Caught exception: $1, $2" return 1 done return 2 done func main(...) returns number do echo throwcheck() done _ATEOF { set +x $as_echo "$at_srcdir/trycatch02.at:23: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog " "trycatch02.at:23" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "Caught exception: 1, text 1 " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 1 $at_status "$at_srcdir/trycatch02.at:23" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_42 #AT_START_43 at_fn_group_banner 43 'trycatch03.at:17' \ "Try-catch: passing through try" " " 7 at_xfail=no ( $as_echo "43. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether passing through the try branch of a `try-catch' # construct works correctly. cat >prog <<'_ATEOF' func throwcheck() returns number do try do echo "try: pass" done catch * do echo "Caught exception: $1, $2" return 1 done return 2 done func main(...) returns number do echo throwcheck() done _ATEOF { set +x $as_echo "$at_srcdir/trycatch03.at:23: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog " "trycatch03.at:23" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "try: pass 2 " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 2 $at_status "$at_srcdir/trycatch03.at:23" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_43 #AT_START_44 at_fn_group_banner 44 'trycatch04.at:17' \ "Try-catch: passing through catch" " " 7 at_xfail=no ( $as_echo "44. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether passing through the catch branch of a `try-catch' # construct works correctly. cat >prog <<'_ATEOF' dclex ex0 dclex ex1 func throwcheck() returns number do try do echo "try: throw" throw ex1 "text" return 0 done catch * do echo "Caught exception: $1, $2" done return 2 done func main(...) returns number do echo throwcheck() done _ATEOF { set +x $as_echo "$at_srcdir/trycatch04.at:23: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog " "trycatch04.at:23" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "try: throw Caught exception: 1, text 2 " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 2 $at_status "$at_srcdir/trycatch04.at:23" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_44 #AT_START_45 at_fn_group_banner 45 'trycatch05.at:17' \ "Try-catch: break from try" " " 7 at_xfail=no ( $as_echo "45. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether break from a try branch does not clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) loop do try do break done catch usr1 do pass done done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch05.at:45: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? wc -l err | awk '{print \$1}' sort err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch05.at:45" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? wc -l err | awk '{print $1}' sort err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "2 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch05.at:45" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_45 #AT_START_46 at_fn_group_banner 46 'trycatch06.at:17' \ "Try-catch: break from catch" " " 7 at_xfail=no ( $as_echo "46. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether break from a catch branch does not clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) loop do try do throw usr1 "break" done catch usr1 do break done done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch06.at:45: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? wc -l err | awk '{print \$1}' sort err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch06.at:45" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? wc -l err | awk '{print $1}' sort err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "2 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch06.at:45" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_46 #AT_START_47 at_fn_group_banner 47 'trycatch07.at:17' \ "Try-catch: next from try" " " 7 at_xfail=no ( $as_echo "47. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether next from a try branch does not clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) loop for number i 0, while i < 5, set i i + 1 do try do next done catch usr1 do pass done done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch07.at:45: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? wc -l err | awk '{print \$1}' sort err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch07.at:45" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? wc -l err | awk '{print $1}' sort err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "2 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch07.at:45" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_47 #AT_START_48 at_fn_group_banner 48 'trycatch08.at:17' \ "Try-catch: next from catch" " " 7 at_xfail=no ( $as_echo "48. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether next from a catch branch does not clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) loop for number i 0, while i < 5, set i i + 1 do try do throw usr1 "break" done catch usr1 do next done done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch08.at:45: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? wc -l err | awk '{print \$1}' sort err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch08.at:45" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? wc -l err | awk '{print $1}' sort err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "2 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch08.at:45" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_48 #AT_START_49 at_fn_group_banner 49 'trycatch09.at:17' \ "Try-catch: break from nested try" " " 7 at_xfail=no ( $as_echo "49. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether break from a nested try branch does not # clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) loop do try do try do break done catch usr1 do pass done done catch usr1 do pass done done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch09.at:52: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? wc -l err | awk '{print \$1}' sort err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch09.at:52" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? wc -l err | awk '{print $1}' sort err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "2 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch09.at:52" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_49 #AT_START_50 at_fn_group_banner 50 'trycatch10.at:17' \ "Try-catch: break from nested catch" " " 7 at_xfail=no ( $as_echo "50. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether break from a nested catch branch does not # clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) loop do try do try do throw usr1 "break" done catch usr1 do break done done catch * do echo "outer catch" pass done done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch10.at:54: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? wc -l err | awk '{print \$1}' sort err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch10.at:54" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? wc -l err | awk '{print $1}' sort err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "2 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch10.at:54" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_50 #AT_START_51 at_fn_group_banner 51 'trycatch11.at:17' \ "Try-catch: next from nested try" " " 7 at_xfail=no ( $as_echo "51. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether next from a nested try branch does not # clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) loop for number i 0, while i < 5, set i i + 1 do try do try do next done catch usr1 do pass done done catch usr1 do echo "outer catch" done done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch11.at:53: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? wc -l err | awk '{print \$1}' sort err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch11.at:53" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? wc -l err | awk '{print $1}' sort err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "2 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch11.at:53" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_51 #AT_START_52 at_fn_group_banner 52 'trycatch12.at:17' \ "Try-catch: next from nested catch" " " 7 at_xfail=no ( $as_echo "52. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether next from a nested catch branch does not # clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) loop for number i 0, while i < 5, set i i + 1 do try do try do throw usr1 "break" done catch usr1 do next done done catch * do echo "external catch" done done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch12.at:53: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? wc -l err | awk '{print \$1}' sort err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch12.at:53" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? wc -l err | awk '{print $1}' sort err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "2 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch12.at:53" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_52 #AT_START_53 at_fn_group_banner 53 'trycatch13.at:17' \ "Try-catch: break from a loop within try" " " 7 at_xfail=no ( $as_echo "53. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether break from a try branch does not clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) try do loop do break done done catch usr1 do pass done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch13.at:45: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? wc -l err | awk '{print \$1}' sort err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch13.at:45" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? wc -l err | awk '{print $1}' sort err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "2 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch13.at:45" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_53 #AT_START_54 at_fn_group_banner 54 'trycatch14.at:17' \ "Try-catch: break from a loop within catch" " " 7 at_xfail=no ( $as_echo "54. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether break from a try branch does not clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) try do throw usr1 "break" done catch usr1 do loop do break done done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch14.at:45: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? wc -l err | awk '{print \$1}' sort err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch14.at:45" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? wc -l err | awk '{print $1}' sort err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "2 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch14.at:45" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_54 #AT_START_55 at_fn_group_banner 55 'trycatch15.at:17' \ "Try-catch: next in a loop within try" " " 7 at_xfail=no ( $as_echo "55. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether break from a try branch does not clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) try do loop for number i 0, while i < 5, set i i + 1 do if i & 1 next fi echo i done done catch usr1 do pass done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch15.at:48: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? sed '1d;\$d' err echo \"delimiter\" sed -n '1p;\$p' err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch15.at:48" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? sed '1d;$d' err echo "delimiter" sed -n '1p;$p' err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "0 2 4 delimiter 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch15.at:48" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_55 #AT_START_56 at_fn_group_banner 56 'trycatch16.at:17' \ "Try-catch: next in a loop within catch" " " 7 at_xfail=no ( $as_echo "56. $at_setup_line: testing $at_desc ..." $at_traceon # Description: Check whether break from a try branch does not clobber stack cat >prog <<'_ATEOF' require '_register' dclex usr1 func main(...) returns number do echo _reg(REG_TOS) try do throw usr1 "user-defined" done catch usr1 do loop for number i 0, while i < 5, set i i + 1 do if i & 1 next fi echo i done done echo _reg(REG_TOS) done _ATEOF { set +x $as_echo "$at_srcdir/trycatch16.at:48: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 2>err || exit \$? sed '1d;\$d' err echo \"delimiter\" sed -n '1p;\$p' err | uniq | wc -l | awk '{print \$1}' " at_fn_check_prepare_notrace 'an embedded newline' "trycatch16.at:48" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 2>err || exit $? sed '1d;$d' err echo "delimiter" sed -n '1p;$p' err | uniq | wc -l | awk '{print $1}' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "0 2 4 delimiter 1 " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/trycatch16.at:48" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_56 #AT_START_57 at_fn_group_banner 57 'cidr1.at:17' \ "cidr: 10.10.0.1 matches 10.10.0.0/19" " " 8 at_xfail=no ( $as_echo "57. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/cidr1.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/cidr.mf client_addr=10.10.0.1" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cidr.mf client_addr=10.10.0.1" "cidr1.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cidr.mf client_addr=10.10.0.1 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 550 Not from this address! State envfrom: reject " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/cidr1.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_57 #AT_START_58 at_fn_group_banner 58 'cidr2.at:17' \ "cidr: 10.10.31.255 matches 10.10.0.0/19" " " 8 at_xfail=no ( $as_echo "58. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/cidr2.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/cidr.mf client_addr=10.10.31.255" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cidr.mf client_addr=10.10.31.255" "cidr2.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cidr.mf client_addr=10.10.31.255 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 550 Not from this address! State envfrom: reject " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/cidr2.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_58 #AT_START_59 at_fn_group_banner 59 'cidr3.at:17' \ "cidr: 10.10.32.1 does not match 10.10.0.0/19" " " 8 at_xfail=no ( $as_echo "59. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/cidr3.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/cidr.mf client_addr=10.10.32.1" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cidr.mf client_addr=10.10.32.1" "cidr3.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cidr.mf client_addr=10.10.32.1 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/cidr3.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_59 #AT_START_60 at_fn_group_banner 60 'cond01.at:17' \ "String equality" " " 9 at_xfail=no ( $as_echo "60. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/cond01.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/cond.mf --test=envrcpt rcpt_addr=devnull" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=devnull" "cond01.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=devnull ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 550 Case 1: No mails to devnull State envrcpt: reject " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/cond01.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_60 #AT_START_61 at_fn_group_banner 61 'cond02.at:17' \ "Fnmatch" " " 9 at_xfail=no ( $as_echo "61. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/cond02.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/cond.mf --test=envrcpt rcpt_addr=gray" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=gray" "cond02.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=gray ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 550 Case 2: Mail to this user is not accepted State envrcpt: reject " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/cond02.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_61 #AT_START_62 at_fn_group_banner 62 'cond03.at:17' \ "Fnmatch (2)" " " 9 at_xfail=no ( $as_echo "62. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/cond03.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/cond.mf --test=envrcpt rcpt_addr=gray22" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=gray22" "cond03.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=gray22 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 550 Case 2: Mail to this user is not accepted State envrcpt: reject " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/cond03.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_62 #AT_START_63 at_fn_group_banner 63 'cond04.at:17' \ "Regex match" " " 9 at_xfail=no ( $as_echo "63. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/cond04.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/cond.mf --test=envrcpt rcpt_addr=foobar f=f" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=foobar f=f" "cond04.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=foobar f=f ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 550 Case 3: Not a fully qualified name State envrcpt: reject " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/cond04.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_63 #AT_START_64 at_fn_group_banner 64 'cond05.at:17' \ "Regex match (5)" " " 9 at_xfail=no ( $as_echo "64. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/cond05.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/cond.mf --test=envrcpt rcpt_addr=foo.bar f=f" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=foo.bar f=f" "cond05.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=foo.bar f=f ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envrcpt: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/cond05.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_64 #AT_START_65 at_fn_group_banner 65 'cond06.at:17' \ "Nested if" " " 9 at_xfail=no ( $as_echo "65. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/cond06.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/cond.mf --test=envrcpt rcpt_addr=foobar f=gray" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=foobar f=gray" "cond06.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/cond.mf --test=envrcpt rcpt_addr=foobar f=gray ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envrcpt: accept " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/cond06.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_65 #AT_START_66 at_fn_group_banner 66 'next01.at:17' \ "next01" " " 10 at_xfail=no ( $as_echo "66. $at_setup_line: testing $at_desc ..." $at_traceon # Description: The `next' keyword was implemented incorrectly in # versions up to 5.1. cat >prog <<'_ATEOF' func main(...) returns number do loop for string names $1 . " " number i index(names, " "), while i != -1, set names substr(names, i + 1) set i index(names, " ") do string s substr(names, 0, i) if s == 'next' next fi echo "WORD: %s" done return 0 done _ATEOF { set +x $as_echo "$at_srcdir/next01.at:23: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 'begin next cont next end next'" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 'begin next cont next end next'" "next01.at:23" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 'begin next cont next end next' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "WORD: begin WORD: cont WORD: end " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/next01.at:23" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_66 #AT_START_67 at_fn_group_banner 67 'next02.at:17' \ "next02" " " 10 at_xfail=no ( $as_echo "67. $at_setup_line: testing $at_desc ..." $at_traceon # Description: The `next' keyword was implemented incorrectly in # versions up to 5.1. cat >prog <<'_ATEOF' func main(...) returns number do loop for string names $1 . " " number i index(names, " "), while i != -1, set names substr(names, i + 1) set i index(names, " ") do string s substr(names, 0, i) if s == 'next' next fi echo "WORD: %s" done while index(names, '@') != 0 return 0 done _ATEOF { set +x $as_echo "$at_srcdir/next02.at:23: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog 'begin next cont next end @ finis'" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 'begin next cont next end @ finis'" "next02.at:23" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog 'begin next cont next end @ finis' ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "WORD: begin WORD: cont WORD: end WORD: @ " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/next02.at:23" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_67 #AT_START_68 at_fn_group_banner 68 'next03.at:17' \ "Next in a do-while loop" " " 10 at_xfail=no ( $as_echo "68. $at_setup_line: testing $at_desc ..." $at_traceon # Description: The `next' keyword bypassed conditional in do-while # loops. Affected versions: up to 7.99.92 [alpha-7.0.92-mu2-124-ge2ae324] cat >prog <<'_ATEOF' func main(...) returns number do loop for set i 0 do set i i + 1 echo i next done while i < 4 done _ATEOF { set +x $as_echo "$at_srcdir/next03.at:23: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog " "next03.at:23" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "1 2 3 4 " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/next03.at:23" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_68 #AT_START_69 at_fn_group_banner 69 'resolve.at:17' \ "Resolve" " " 11 at_xfail=no ( $as_echo "69. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/resolve.at:20: at_resolv_conf || exit 77 cleardb mailfromd \$MFOPTS \$MFADDOPTS --test \$ETCDIR/dns.mf mode=resolve arg1=test1.\$MF_TOPDOMAIN" at_fn_check_prepare_notrace 'an embedded newline' "resolve.at:20" ( $at_check_trace; at_resolv_conf || exit 77 cleardb mailfromd $MFOPTS $MFADDOPTS --test $ETCDIR/dns.mf mode=resolve arg1=test1.$MF_TOPDOMAIN ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "192.0.2.1 " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/resolve.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_69 #AT_START_70 at_fn_group_banner 70 'rescname.at:17' \ "Resolve cname" " " 11 at_xfail=no ( $as_echo "70. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/rescname.at:20: at_resolv_conf || exit 77 cleardb mailfromd \$MFOPTS \$MFADDOPTS --test \$ETCDIR/dns.mf mode=resolve arg1=smtp.test1.\$MF_TOPDOMAIN" at_fn_check_prepare_notrace 'an embedded newline' "rescname.at:20" ( $at_check_trace; at_resolv_conf || exit 77 cleardb mailfromd $MFOPTS $MFADDOPTS --test $ETCDIR/dns.mf mode=resolve arg1=smtp.test1.$MF_TOPDOMAIN ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "192.0.2.2 " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/rescname.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_70 #AT_START_71 at_fn_group_banner 71 'hostname.at:17' \ "Resolve hostname" " " 11 at_xfail=no ( $as_echo "71. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/hostname.at:20: at_resolv_conf || exit 77 cleardb echo mail1.test2.\$MF_TOPDOMAIN > experr mailfromd \$MFOPTS \$MFADDOPTS --test \$ETCDIR/dns.mf mode=hostname arg1=198.51.100.2" at_fn_check_prepare_notrace 'an embedded newline' "hostname.at:20" ( $at_check_trace; at_resolv_conf || exit 77 cleardb echo mail1.test2.$MF_TOPDOMAIN > experr mailfromd $MFOPTS $MFADDOPTS --test $ETCDIR/dns.mf mode=hostname arg1=198.51.100.2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter $at_diff experr "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hostname.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_71 #AT_START_72 at_fn_group_banner 72 'hasmx.at:17' \ "Hasmx call" " " 11 at_xfail=no ( $as_echo "72. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/hasmx.at:20: at_resolv_conf || exit 77 cleardb mailfromd \$MFOPTS \$MFADDOPTS --test \$ETCDIR/dns.mf mode=hasmx arg1=test1.\$MF_TOPDOMAIN" at_fn_check_prepare_notrace 'an embedded newline' "hasmx.at:20" ( $at_check_trace; at_resolv_conf || exit 77 cleardb mailfromd $MFOPTS $MFADDOPTS --test $ETCDIR/dns.mf mode=hasmx arg1=test1.$MF_TOPDOMAIN ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "1 " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hasmx.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_72 #AT_START_73 at_fn_group_banner 73 'ismx.at:17' \ "Ismx call" " " 11 at_xfail=no ( $as_echo "73. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/ismx.at:20: at_resolv_conf || exit 77 cleardb mailfromd \$MFOPTS \$MFADDOPTS --test \$ETCDIR/dns.mf mode=ismx arg1=test1.\$MF_TOPDOMAIN arg2=mail.test2.\$MF_TOPDOMAIN " at_fn_check_prepare_notrace 'an embedded newline' "ismx.at:20" ( $at_check_trace; at_resolv_conf || exit 77 cleardb mailfromd $MFOPTS $MFADDOPTS --test $ETCDIR/dns.mf mode=ismx arg1=test1.$MF_TOPDOMAIN arg2=mail.test2.$MF_TOPDOMAIN ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "1 " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/ismx.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_73 #AT_START_74 at_fn_group_banner 74 'strings.at:17' \ "String functions" " " 11 at_xfail=no ( $as_echo "74. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' set x "string of rings" set gnu "GNU" prog envfrom do echo length(x) echo toupper(x) echo tolower(gnu) echo substr(x,2) echo substr(x,2,4) echo index(x,"ring") echo rindex(x,"ring") echo revstr("foobar") echo interval("3 weeks 5 days 15 hours 1 minute 56 seconds") echo domainpart("gray@gnu.org.ua") echo localpart("gray@gnu.org.ua") done _ATEOF { set +x $as_echo "$at_srcdir/strings.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "strings.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "15 STRING OF RINGS gnu ring of rings ring 2 10 raboof 2300516 gnu.org.ua gray " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/strings.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_74 #AT_START_75 at_fn_group_banner 75 'greylist.at:17' \ "Greylisting (traditional style)" " " 12 at_xfail=no ( $as_echo "75. $at_setup_line: testing $at_desc ..." $at_traceon cleardb mailfromd_start greylist.mf cat >script <<'_ATEOF' \E250 HELO localhost \E450 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/greylist.at:24: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim \$MTAOPTS -- --stderr \$MFOPTS \$MFADDOPTS < script > /dev/null" at_fn_check_prepare_notrace 'an embedded newline' "greylist.at:24" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim $MTAOPTS -- --stderr $MFOPTS $MFADDOPTS < script > /dev/null ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/greylist.at:24" if $at_failed; then : mailfromd_stop; exit 1 fi $at_failed && at_fn_log_failure $at_traceon; } sleep 2 cat >script <<'_ATEOF' \E250 HELO localhost \E450 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/greylist.at:35: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim \$MTAOPTS -- --stderr \$MFOPTS \$MFADDOPTS < script > /dev/null" at_fn_check_prepare_notrace 'an embedded newline' "greylist.at:35" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim $MTAOPTS -- --stderr $MFOPTS $MFADDOPTS < script > /dev/null ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/greylist.at:35" if $at_failed; then : mailfromd_stop; exit 1 fi $at_failed && at_fn_log_failure $at_traceon; } sleep 15 cat >script <<'_ATEOF' \E250 HELO localhost \E250 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/greylist.at:46: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim \$MTAOPTS -- --stderr \$MFOPTS \$MFADDOPTS < script > /dev/null" at_fn_check_prepare_notrace 'an embedded newline' "greylist.at:46" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim $MTAOPTS -- --stderr $MFOPTS $MFADDOPTS < script > /dev/null ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/greylist.at:46" if $at_failed; then : mailfromd_stop; exit 1 fi $at_failed && at_fn_log_failure $at_traceon; } mailfromd_stop set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_75 #AT_START_76 at_fn_group_banner 76 'greylist-ct.at:17' \ "Greylisting (new style)" " " 12 at_xfail=no ( $as_echo "76. $at_setup_line: testing $at_desc ..." $at_traceon cleardb mailfromd_start greylist-ct.mf cat >script <<'_ATEOF' \E250 HELO localhost \E450 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/greylist-ct.at:24: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim \$MTAOPTS -- --stderr \$MFOPTS \$MFADDOPTS < script > /dev/null" at_fn_check_prepare_notrace 'an embedded newline' "greylist-ct.at:24" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim $MTAOPTS -- --stderr $MFOPTS $MFADDOPTS < script > /dev/null ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/greylist-ct.at:24" if $at_failed; then : mailfromd_stop; exit 1 fi $at_failed && at_fn_log_failure $at_traceon; } cat >prog <<'_ATEOF' #pragma greylist con-tassios prog envfrom do echo is_greylisted("gray@localhost") done _ATEOF { set +x $as_echo "$at_srcdir/greylist-ct.at:33: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "greylist-ct.at:33" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "1 " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/greylist-ct.at:33" if $at_failed; then : mailfromd_stop fi $at_failed && at_fn_log_failure $at_traceon; } cat >script <<'_ATEOF' \E250 HELO localhost \E450 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/greylist-ct.at:49: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim \$MTAOPTS -- --stderr \$MFOPTS \$MFADDOPTS < script > /dev/null" at_fn_check_prepare_notrace 'an embedded newline' "greylist-ct.at:49" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim $MTAOPTS -- --stderr $MFOPTS $MFADDOPTS < script > /dev/null ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/greylist-ct.at:49" if $at_failed; then : mailfromd_stop; exit 1 fi $at_failed && at_fn_log_failure $at_traceon; } sleep 15 cat >script <<'_ATEOF' \E250 HELO localhost \E250 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/greylist-ct.at:60: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim \$MTAOPTS -- --stderr \$MFOPTS \$MFADDOPTS < script > /dev/null" at_fn_check_prepare_notrace 'an embedded newline' "greylist-ct.at:60" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim $MTAOPTS -- --stderr $MFOPTS $MFADDOPTS < script > /dev/null ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/greylist-ct.at:60" if $at_failed; then : mailfromd_stop; exit 1 fi $at_failed && at_fn_log_failure $at_traceon; } cat >prog <<'_ATEOF' #pragma greylist con-tassios prog envfrom do echo is_greylisted("gray@localhost") done _ATEOF { set +x $as_echo "$at_srcdir/greylist-ct.at:69: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "greylist-ct.at:69" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "0 " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/greylist-ct.at:69" if $at_failed; then : mailfromd_stop fi $at_failed && at_fn_log_failure $at_traceon; } mailfromd_stop set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_76 #AT_START_77 at_fn_group_banner 77 'numrcpt.at:17' \ "rcpt_count" " " 13 at_xfail=no ( $as_echo "77. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog envrcpt do if rcpt_count > 2 reject 550 5.7.1 "Too many recipients (%rcpt_count)" fi done _ATEOF cat >script <<'_ATEOF' \E250 HELO localhost \E250 MAIL FROM: \E250 RCPT TO: \E250 RCPT TO: \E550 5\.7\.1 .*Too many recipients \(3\) RCPT TO: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/numrcpt.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "numrcpt.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/numrcpt.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_77 #AT_START_78 at_fn_group_banner 78 'rset.at:20' \ "rset" " " 13 at_xfail=no ( $as_echo "78. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' string currcpts precious string allrcpts prog envrcpt do set currcpts "%currcpts $1" set allrcpts "%allrcpts $1" echo "rcpt_count=%rcpt_count" echo "currcpts=%currcpts" echo "allrcpts=%allrcpts" done _ATEOF cat >script <<'_ATEOF' \E250 HELO localhost \E250 MAIL FROM:<> \E250 RCPT TO: \E250 RCPT TO: \E250 RCPT TO: \E250 RSET \E250 HELO localhost \E250 MAIL FROM:<> \E250 RCPT TO: \E250 RCPT TO: \E250 RCPT TO: \E250 _ATEOF { set +x $as_echo "$at_srcdir/rset.at:23: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr --gacopyz-log=err filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "rset.at:23" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr --gacopyz-log=err filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started rcpt_count=1 currcpts= allrcpts= rcpt_count=2 currcpts= allrcpts= rcpt_count=3 currcpts= allrcpts= rcpt_count=1 currcpts= allrcpts= rcpt_count=2 currcpts= allrcpts= rcpt_count=3 currcpts= allrcpts= mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/rset.at:23" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_78 #AT_START_79 at_fn_group_banner 79 'poll.at:17' \ "poll: Existing sender" " " 14 at_xfail=no ( $as_echo "79. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' require status require 'poll' prog envfrom do on _pollhost($client_addr, $f, "domain", "mailfromd-test@gnu.org.ua") do when success: accept when not_found or failure: reject 550 5.1.0 "Sender validity not confirmed" when temp_failure: tempfail 450 4.1.0 "Try again later" done done _ATEOF cat >script <<'_ATEOF' \Dclient_addr=relay1.gnu.org.ua \E250 HELO localhost \E250 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/poll.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 at_resolv_conf || exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "poll.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 at_resolv_conf || exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/poll.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_79 #AT_START_80 at_fn_group_banner 80 'poll01.at:17' \ "poll: Non-existing sender" " " 14 at_xfail=no ( $as_echo "80. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' require status require 'poll' prog envfrom do on _pollhost($client_addr, $f, "domain", "mailfromd-test@gnu.org.ua") do when success: accept when not_found or failure: reject 550 5.1.0 "Sender validity not confirmed" when temp_failure: tempfail 450 4.1.0 "Try again later" done done _ATEOF cat >script <<'_ATEOF' \Dclient_addr=relay1.gnu.org.ua \E250 HELO localhost \E550 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/poll01.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 at_resolv_conf || exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "poll01.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 at_resolv_conf || exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/poll01.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_80 #AT_START_81 at_fn_group_banner 81 'poll02.at:17' \ "poll: Tempfail" " " 14 at_xfail=no ( $as_echo "81. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' require status require 'poll' prog envfrom do on _pollhost($client_addr, $f, "domain", "mailfromd-test@gnu.org.ua") do when success: accept when not_found or failure: reject 550 5.1.0 "Sender validity not confirmed" when temp_failure: tempfail 450 4.1.0 "Try again later" done done _ATEOF cat >script <<'_ATEOF' \Dclient_addr=relay1.gnu.org.ua \E250 HELO localhost \E450 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/poll02.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 at_resolv_conf || exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "poll02.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 at_resolv_conf || exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/poll02.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_81 #AT_START_82 at_fn_group_banner 82 'poll03.at:17' \ "poll: Multiple from addresses" " " 14 at_xfail=no ( $as_echo "82. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' require status require poll prog envfrom do on _pollhost($client_addr, $f, "domain", "bad-return-mailfromd-test@gnu.org.ua,mailfromd-test@gnu.org.ua") do when success: accept when not_found or failure: reject 550 5.1.0 "Sender validity not confirmed" when temp_failure: tempfail 450 4.1.0 "Try again later" done done _ATEOF cat >script <<'_ATEOF' \Dclient_addr=relay1.gnu.org.ua \E250 HELO localhost \E250 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/poll03.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 at_resolv_conf || exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "poll03.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 at_resolv_conf || exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/poll03.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_82 #AT_START_83 at_fn_group_banner 83 'poll04.at:17' \ "on poll without address" " " 14 at_xfail=no ( $as_echo "83. $at_setup_line: testing $at_desc ..." $at_traceon # Synopsis: `on poll' without target address caused coredump in # version 4.1 # Reported: Jan Rafaj, 2007-08-10 # References: cat >prog <<'_ATEOF' require poll prog envfrom do on poll host "HOST" do when 0: pass done done _ATEOF { set +x $as_echo "$at_srcdir/poll04.at:25: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "poll04.at:25" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: prog:6.6-21: recipient address not specified in \`on poll' construct " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 78 $at_status "$at_srcdir/poll04.at:25" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_83 #AT_START_84 at_fn_group_banner 84 'accept.at:17' \ "Accept action" " " 15 at_xfail=no ( $as_echo "84. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog envfrom do accept done _ATEOF cat >script <<'_ATEOF' \E250 HELO localhost \E250 MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/accept.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "accept.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/accept.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_84 #AT_START_85 at_fn_group_banner 85 'reject.at:17' \ "Reject action" " " 15 at_xfail=no ( $as_echo "85. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog envfrom do reject 550 5.7.1 "Message rejected" done _ATEOF cat >script <<'_ATEOF' \E250 HELO localhost \E550 5.7.1 (.* )?Message rejected MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/reject.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "reject.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/reject.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_85 #AT_START_86 at_fn_group_banner 86 'tempfail.at:17' \ "Tempfail action" " " 15 at_xfail=no ( $as_echo "86. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog envfrom do tempfail 450 4.1.1 "Try again later" done _ATEOF cat >script <<'_ATEOF' \E250 HELO localhost \E450 4.1.1 .*Try again later MAIL FROM: \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/tempfail.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "tempfail.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/tempfail.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_86 #AT_START_87 at_fn_group_banner 87 'relayed01.at:17' \ "Relayed: Not a relayed host" " " 16 at_xfail=no ( $as_echo "87. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/relayed01.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/relayed.mf --test=helo --relayed-domain-file \$ETCDIR/relayed.list host=remote" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/relayed.mf --test=helo --relayed-domain-file $ETCDIR/relayed.list host=remote" "relayed01.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/relayed.mf --test=helo --relayed-domain-file $ETCDIR/relayed.list host=remote ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "SET REPLY 550 We do not relay mail for this host State helo: reject " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/relayed01.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_87 #AT_START_88 at_fn_group_banner 88 'relayed02.at:17' \ "Relayed: Relayed host" " " 16 at_xfail=no ( $as_echo "88. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/relayed02.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/relayed.mf --test=helo --relayed-domain-file \$ETCDIR/relayed.list host=localhost" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/relayed.mf --test=helo --relayed-domain-file $ETCDIR/relayed.list host=localhost" "relayed02.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/relayed.mf --test=helo --relayed-domain-file $ETCDIR/relayed.list host=localhost ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State helo: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/relayed02.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_88 #AT_START_89 at_fn_group_banner 89 'shadow.at:17' \ "variable shadowing" " " 17 at_xfail=no ( $as_echo "89. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' set x "initial" func foo(string x) returns string do return x done func bar(string y) returns string do string x set x "%y text" return x done prog envfrom do echo foo("param") echo bar("auto") echo x done _ATEOF { set +x $as_echo "$at_srcdir/shadow.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "shadow.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: prog:4.17: warning: parameter \`x' is shadowing a global mailfromd: prog:11.10: warning: automatic variable \`x' is shadowing a global param auto text initial " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/shadow.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_89 #AT_START_90 at_fn_group_banner 90 'ashadow.at:17' \ "duplicate declarations of automatic variables" " " 17 at_xfail=no ( $as_echo "90. $at_setup_line: testing $at_desc ..." $at_traceon # Synopsis: Duplicated auto variables caused infinite loop in forget_autos # in version 4.1 # Reported: Jan Rafaj, 2007-08-10 # References: cat >prog <<'_ATEOF' func foo() returns number do number i 2 number i 2 done _ATEOF { set +x $as_echo "$at_srcdir/ashadow.at:25: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog " "ashadow.at:25" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: prog:5.10: duplicate variable: i " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 78 $at_status "$at_srcdir/ashadow.at:25" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_90 #AT_START_91 at_fn_group_banner 91 'switchn1.at:17' \ "Numeric switch: Branch 1,2 val 1" " " 18 at_xfail=no ( $as_echo "91. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/switchn1.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/switch.mf val=1" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf val=1" "switchn1.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf val=1 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "Branch 1,2 Finished " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/switchn1.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_91 #AT_START_92 at_fn_group_banner 92 'switchn2.at:17' \ "Numeric switch: Branch 1,2 val 1" " " 18 at_xfail=no ( $as_echo "92. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/switchn2.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/switch.mf val=1" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf val=1" "switchn2.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf val=1 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "Branch 1,2 Finished " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/switchn2.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_92 #AT_START_93 at_fn_group_banner 93 'switchn3.at:17' \ "Numeric switch: Branch 3" " " 18 at_xfail=no ( $as_echo "93. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/switchn3.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/switch.mf val=3" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf val=3" "switchn3.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf val=3 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "Branch 3 -------- Finished " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/switchn3.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_93 #AT_START_94 at_fn_group_banner 94 'switchn4.at:17' \ "Numeric switch: Default branch" " " 18 at_xfail=no ( $as_echo "94. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/switchn4.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/switch.mf val=4" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf val=4" "switchn4.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf val=4 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "Default branch Finished " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/switchn4.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_94 #AT_START_95 at_fn_group_banner 95 'switchs1.at:17' \ "String switch: Branch 1,2 val jeden" " " 18 at_xfail=no ( $as_echo "95. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/switchs1.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/switch.mf --test=envrcpt val=jeden" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf --test=envrcpt val=jeden" "switchs1.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf --test=envrcpt val=jeden ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "Branch 1,2 Finished " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envrcpt: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/switchs1.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_95 #AT_START_96 at_fn_group_banner 96 'switchs2.at:17' \ "String switch: Branch 1,2 val dwa" " " 18 at_xfail=no ( $as_echo "96. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/switchs2.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/switch.mf --test=envrcpt val=dwa" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf --test=envrcpt val=dwa" "switchs2.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf --test=envrcpt val=dwa ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "Branch 1,2 Finished " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envrcpt: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/switchs2.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_96 #AT_START_97 at_fn_group_banner 97 'switchs3.at:17' \ "String switch: Branch 3" " " 18 at_xfail=no ( $as_echo "97. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/switchs3.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/switch.mf --test=envrcpt val=trzy" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf --test=envrcpt val=trzy" "switchs3.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf --test=envrcpt val=trzy ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "Branch 3 -------- Finished " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envrcpt: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/switchs3.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_97 #AT_START_98 at_fn_group_banner 98 'switchs4.at:17' \ "String switch: Default branch" " " 18 at_xfail=no ( $as_echo "98. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/switchs4.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test \$ETCDIR/switch.mf --test=envrcpt val=cztery" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf --test=envrcpt val=cztery" "switchs4.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test $ETCDIR/switch.mf --test=envrcpt val=cztery ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "Default branch Finished " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envrcpt: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/switchs4.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_98 #AT_START_99 at_fn_group_banner 99 'fromargs.at:17' \ "Arguments to envfrom" " " 19 at_xfail=no ( $as_echo "99. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' prog envfrom do echo $1 echo $2 done _ATEOF { set +x $as_echo "$at_srcdir/fromargs.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog --lint" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog --lint" "fromargs.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog --lint ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/fromargs.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_99 #AT_START_100 at_fn_group_banner 100 'rcptargs.at:17' \ "Arguments to envrcpt" " " 19 at_xfail=no ( $as_echo "100. $at_setup_line: testing $at_desc ..." $at_traceon cat >prog <<'_ATEOF' prog envrcpt do echo $1 echo $2 done _ATEOF { set +x $as_echo "$at_srcdir/rcptargs.at:20: mailfromd --stderr \$MFOPTS \$MFADDOPTS --test prog --lint" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --test prog --lint" "rcptargs.at:20" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --test prog --lint ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/rcptargs.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_100 #AT_START_101 at_fn_group_banner 101 'curmsg.at:25' \ "Working current_message" " " 20 at_xfail=no ( $as_echo "101. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog eom do echo "SIZE " . message_body_size(current_message()) done _ATEOF cat >script <<'_ATEOF' \E250 HELO localhost \E250 MAIL FROM:<> \E250 RCPT TO: \E354 DATA 0123456789 \E250 . \E250 MAIL FROM:<> \E250 RCPT TO: \E354 DATA 0 \E250 . \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/curmsg.at:28: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "curmsg.at:28" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started SIZE 17 SIZE 8 mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/curmsg.at:28" $at_failed && at_fn_log_failure $at_traceon; } # FIXME(mailutils): Size estimate does not include CRs set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_101 #AT_START_102 at_fn_group_banner 102 'nulmsg.at:17' \ "message_body_is_empty" " " 20 at_xfail=no ( $as_echo "102. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog eom do if message_body_is_empty(current_message()) echo "$i: NULL" else echo "$i: TEXT" fi done _ATEOF cat >script <<'_ATEOF' \E250 HELO localhost \E250 \Di=1 MAIL FROM:<> \E250 RCPT TO: \E354 DATA To: test . \Di=2 \E250 MAIL FROM:<> \E250 RCPT TO: \E354 DATA To: test Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable =20=20=20=0A . \Di=3 \E250 MAIL FROM:<> \E250 RCPT TO: \E354 DATA To: test Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable =20=20=20t=0A . \E221 QUIT _ATEOF { set +x $as_echo "$at_srcdir/nulmsg.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "nulmsg.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started 1: NULL 2: NULL 3: TEXT mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/nulmsg.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_102 #AT_START_103 at_fn_group_banner 103 'hdr-count.at:17' \ "current_header_count" " " 21 at_xfail=no ( $as_echo "103. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog eoh do echo "TOTAL: " . current_header_count() done _ATEOF { set +x $as_echo "$at_srcdir/hdr-count.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr filter < \$ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "hdr-count.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr filter < $ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started TOTAL: 5 mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hdr-count.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_103 #AT_START_104 at_fn_group_banner 104 'hdr-get.at:17' \ "current_header" " " 21 at_xfail=no ( $as_echo "104. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog eoh do echo "From: " . current_header("From") echo "Subject: " . current_header("Subject") done _ATEOF { set +x $as_echo "$at_srcdir/hdr-get.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr filter < \$ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "hdr-get.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr filter < $ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started From: Sergey Poznyakoff Subject: Amsterdam (1) mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hdr-get.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_104 #AT_START_105 at_fn_group_banner 105 'hdr-getn.at:17' \ "current_header(name,ind)" " " 21 at_xfail=no ( $as_echo "105. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog eoh do echo "Received: " . current_header("Received") echo "Received1: " . current_header("Received", 1) echo "Received2: " . current_header("Received", 2) done _ATEOF { set +x $as_echo "$at_srcdir/hdr-getn.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr filter < \$ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "hdr-getn.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr filter < $ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started Received: foo Received1: foo Received2: bar mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hdr-getn.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_105 #AT_START_106 at_fn_group_banner 106 'hdr-gete.at:17' \ "current_header(name,ind) - exception" " " 21 at_xfail=no ( $as_echo "106. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' require 'status' prog eoh do echo "Received3: " . current_header("Received", 3) done _ATEOF { set +x $as_echo "$at_srcdir/hdr-gete.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr --gacopyz-log=err filter < \$ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "hdr-gete.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr --gacopyz-log=err filter < $ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started mailfromd#1: RUNTIME ERROR near filter:5: uncaught exception e_not_found: current_header: requested item (Received,3) not found mailfromd#1: execution of the filter program was not finished mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hdr-gete.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_106 #AT_START_107 at_fn_group_banner 107 'hdr-itr.at:17' \ "current_header(name,ind) - iteration" " " 21 at_xfail=no ( $as_echo "107. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog eoh do number limit current_header_count("Received") loop for number i 1, while i <= limit, set i i + 1 do echo "Received(%i): " . current_header("Received", i) done done _ATEOF { set +x $as_echo "$at_srcdir/hdr-itr.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr --gacopyz-log=err filter < \$ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "hdr-itr.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr --gacopyz-log=err filter < $ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started Received(1): foo Received(2): bar mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hdr-itr.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_107 #AT_START_108 at_fn_group_banner 108 'hdr-all.at:17' \ "current_header(name,ind) - iteration over all" " " 21 at_xfail=no ( $as_echo "108. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog eoh do number limit current_header_count() loop for number i 1, while i <= limit, set i i + 1 do echo current_header_nth_name(i) . ": " . current_header_nth_value(i) done done _ATEOF { set +x $as_echo "$at_srcdir/hdr-all.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr --gacopyz-log=err filter < \$ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "hdr-all.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr --gacopyz-log=err filter < $ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started Received: foo Received: bar From: Sergey Poznyakoff To: gray@localhost Subject: Amsterdam (1) mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hdr-all.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_108 #AT_START_109 at_fn_group_banner 109 'hdr-cap.at:17' \ "current_header vs. capturing" " " 21 at_xfail=no ( $as_echo "109. $at_setup_line: testing $at_desc ..." $at_traceon : >$TESTDIR/capture.mbx cat >filter <<'_ATEOF' prog eoh do echo "TOTAL: " . current_header_count() echo "FROM: " . current_header("From") done func deliver(string mailto) do set m umask(0) set mbx mailbox_open(mailto, "w+") set msg current_message() mailbox_append_message(mbx, msg) mailbox_close(mbx) set m umask(m) done prog eom do deliver("mbox:$TESTDIR/capture.mbx") done _ATEOF { set +x $as_echo "$at_srcdir/hdr-cap.at:23: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim -DTESTDIR=\"\$TESTDIR\" --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr --gacopyz-log=err filter < \$ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "hdr-cap.at:23" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim -DTESTDIR="$TESTDIR" --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr --gacopyz-log=err filter < $ETCDIR/hdr.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started TOTAL: 5 FROM: Sergey Poznyakoff mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hdr-cap.at:23" $at_failed && at_fn_log_failure $at_traceon; } { set +x $as_echo "$at_srcdir/hdr-cap.at:55: sed '1d' \$TESTDIR/capture.mbx" at_fn_check_prepare_dynamic "sed '1d' $TESTDIR/capture.mbx" "hdr-cap.at:55" ( $at_check_trace; sed '1d' $TESTDIR/capture.mbx ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "Received: foo Received: bar From: Sergey Poznyakoff To: gray@localhost Subject: Amsterdam (1) Dans le port d'Amsterdam Y a des marins qui chantent Les rêves qui les hantent Au large d'Amsterdam Dans le port d'Amsterdam Y a des marins qui dorment Comme des oriflammes Le long des berges mornes " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hdr-cap.at:55" if $at_failed; then : else rm $TESTDIR/capture.mbx fi $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_109 #AT_START_110 at_fn_group_banner 110 'hdr-mul.at:17' \ "multiple message capturing" " " 21 at_xfail=no ( $as_echo "110. $at_setup_line: testing $at_desc ..." $at_traceon : >$TESTDIR/capture.mbx cat >filter <<'_ATEOF' prog eoh do echo "TOTAL: " . current_header_count() echo "SUBJECT: " . current_header("Subject") done func deliver(string mailto) do set m umask(0) set mbx mailbox_open(mailto, "w+") set msg current_message() mailbox_append_message(mbx, msg) mailbox_close(mbx) set m umask(m) done prog eom do deliver("mbox:$TESTDIR/capture.mbx") done _ATEOF { set +x $as_echo "$at_srcdir/hdr-mul.at:23: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim -DTESTDIR=\"\$TESTDIR\" --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS --stderr --gacopyz-log=err filter < \$ETCDIR/hdr2.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "hdr-mul.at:23" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim -DTESTDIR="$TESTDIR" --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS --stderr --gacopyz-log=err filter < $ETCDIR/hdr2.mts 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started TOTAL: 5 SUBJECT: Amsterdam (1) TOTAL: 6 SUBJECT: Amsterdam (2) mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hdr-mul.at:23" $at_failed && at_fn_log_failure $at_traceon; } { set +x $as_echo "$at_srcdir/hdr-mul.at:57: sed 's/^\\(From <.*>\\).*/\\1/' \$TESTDIR/capture.mbx" at_fn_check_prepare_dynamic "sed 's/^\\(From <.*>\\).*/\\1/' $TESTDIR/capture.mbx" "hdr-mul.at:57" ( $at_check_trace; sed 's/^\(From <.*>\).*/\1/' $TESTDIR/capture.mbx ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter at_fn_diff_devnull "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "From Received: foo Received: bar From: Sergey Poznyakoff To: gray@localhost Subject: Amsterdam (1) Dans le port d'Amsterdam Y a des marins qui chantent Les rêves qui les hantent Au large d'Amsterdam Dans le port d'Amsterdam Y a des marins qui dorment Comme des oriflammes Le long des berges mornes From Received: foo Received: bar Received: quux From: Sergey Poznyakoff To: gray@localhost Subject: Amsterdam (2) Dans le port d'Amsterdam Y a des marins qui meurent Pleins de bière et de drames Aux premières lueurs Mais dans le port d'Amsterdam Y a des marins qui naissent Dans la chaleur épaisse Des langueurs océanes " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/hdr-mul.at:57" if $at_failed; then : else rm $TESTDIR/capture.mbx fi $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_110 #AT_START_111 at_fn_group_banner 111 'eof.at:17' \ "EOF exception" " " 22 at_xfail=no ( $as_echo "111. $at_setup_line: testing $at_desc ..." $at_traceon cat >infile <<'_ATEOF' Subtlety is the art of saying what you think and getting out of the way before it is understood. _ATEOF cat >prog <<'_ATEOF' require 'status' func main(...) returns number do number fd open($1) loop for string input getline(fd) number line 1, set input getline(fd) set line line + 1 do echo "%line: %input" done return 0 done _ATEOF { set +x $as_echo "$at_srcdir/eof.at:25: mailfromd --stderr \$MFOPTS \$MFADDOPTS --run prog infile" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --run prog infile" "eof.at:25" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --run prog infile ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "1: Subtlety is the art of saying 2: what you think and getting out 3: of the way before it is understood. mailfromd: RUNTIME ERROR near prog:9: uncaught exception e_eof: getline: EOF on infile " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/eof.at:25" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_111 #AT_START_112 at_fn_group_banner 112 'regopt0.at:17' \ "regex on optimization level 0" " " 22 at_xfail=no ( $as_echo "112. $at_setup_line: testing $at_desc ..." $at_traceon # Affected versions: <= 5.9.90-2009-10-03 # Description: With disabled optimisation, regular expressions # were not registered in regex table and the `regind' parameter # contained garbage. On runtime this caused coredumps. cat >prog <<'_ATEOF' func main(...) returns number do string re '\(.*\)=\(.*\).*' if $1 matches re echo "\1 equals \2" fi done _ATEOF { set +x $as_echo "$at_srcdir/regopt0.at:25: mailfromd --stderr \$MFOPTS \$MFADDOPTS -O0 --run prog x=314" at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS -O0 --run prog x=314" "regopt0.at:25" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS -O0 --run prog x=314 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "x equals 314 " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/regopt0.at:25" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_112 #AT_START_113 at_fn_group_banner 113 'setvar.at:17' \ "setvar" " " 22 at_xfail=no ( $as_echo "113. $at_setup_line: testing $at_desc ..." $at_traceon cat >mailfromd.conf <<'_ATEOF' setvar stringvar "text"; setvar numvar 31; setvar initstringvar "new text"; _ATEOF cat >prog <<'_ATEOF' string stringvar number numvar string initstringvar 'initial text' prog envfrom do echo stringvar echo numvar echo initstringvar done _ATEOF { set +x $as_echo "$at_srcdir/setvar.at:26: mailfromd --stderr \$MFOPTS \$MFADDOPTS --config-file ./mailfromd.conf --test prog " at_fn_check_prepare_dynamic "mailfromd --stderr $MFOPTS $MFADDOPTS --config-file ./mailfromd.conf --test prog " "setvar.at:26" ( $at_check_trace; mailfromd --stderr $MFOPTS $MFADDOPTS --config-file ./mailfromd.conf --test prog ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: ./mailfromd.conf:4.1-32: warning: variable \`initstringvar' already initialized mailfromd: prog:4.8-20: warning: this is the location of the previous initialization text 31 new text " | \ $at_diff - "$at_stderr" || at_failed=: echo >>"$at_stdout"; $as_echo "State envfrom: continue " | \ $at_diff - "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/setvar.at:26" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_113 #AT_START_114 at_fn_group_banner 114 'shellmagic.at:17' \ "Initial shell comment" " " 22 at_xfail=no ( $as_echo "114. $at_setup_line: testing $at_desc ..." $at_traceon { set +x $as_echo "$at_srcdir/shellmagic.at:20: cat > mfs.sh <<_EOT #! /bin/sh # Apart from this initial boilerplace this is actually a -*- mfl -*- code. exec \$MAILFROMD --no-config --run \\\$0 \"\\\$@\" !# func main(...) returns number do loop for set i 1, while i <= \\\$#, set i i + 1 do echo i. \": \" . \\\$(i) done done _EOT sh mfs.sh one two " at_fn_check_prepare_notrace 'a $(...) command substitution' "shellmagic.at:20" ( $at_check_trace; cat > mfs.sh <<_EOT #! /bin/sh # Apart from this initial boilerplace this is actually a -*- mfl -*- code. exec $MAILFROMD --no-config --run \$0 "\$@" !# func main(...) returns number do loop for set i 1, while i <= \$#, set i i + 1 do echo i. ": " . \$(i) done done _EOT sh mfs.sh one two ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "1: one 2: two " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/shellmagic.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_114 #AT_START_115 at_fn_group_banner 115 'connect00.at:17' \ "Connect: stdio" " " 23 at_xfail=no ( $as_echo "115. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog connect do echo "hostname=$1" echo "family=$2" echo "port=$3" echo "addr=$4" done _ATEOF cat >script <<'_ATEOF' \Sstdio QUIT _ATEOF { set +x $as_echo "$at_srcdir/connect00.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "connect00.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started hostname=localhost family=0 port=0 addr= mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/connect00.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_115 #AT_START_116 at_fn_group_banner 116 'connect01.at:17' \ "Connect: unix" " " 23 at_xfail=no ( $as_echo "116. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog connect do echo "hostname=$1" echo "family=$2" echo "port=$3" echo "addr=$4" done _ATEOF cat >script <<'_ATEOF' \Sunix localhost /foo/bar QUIT _ATEOF { set +x $as_echo "$at_srcdir/connect01.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "connect01.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started hostname=localhost family=1 port=0 addr=/foo/bar mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/connect01.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_116 #AT_START_117 at_fn_group_banner 117 'connect02.at:17' \ "Connect: inet" " " 23 at_xfail=no ( $as_echo "117. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog connect do echo "hostname=$1" echo "family=$2" echo "port=$3" echo "addr=$4" done _ATEOF cat >script <<'_ATEOF' \Sinet pirx.gnu.org.ua 213.130.31.41 34567 QUIT _ATEOF { set +x $as_echo "$at_srcdir/connect02.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "connect02.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started hostname=pirx.gnu.org.ua family=2 port=34567 addr=213.130.31.41 mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/connect02.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_117 #AT_START_118 at_fn_group_banner 118 'connect03.at:17' \ "Connect: inet6" " " 23 at_xfail=no ( $as_echo "118. $at_setup_line: testing $at_desc ..." $at_traceon cat >filter <<'_ATEOF' prog connect do echo "hostname=$1" echo "family=$2" echo "port=$3" echo "addr=$4" done _ATEOF cat >script <<'_ATEOF' \Sinet6 pirx.gnu.org.ua 2001:470:1f0a:1be1::2 34567 QUIT _ATEOF { set +x $as_echo "$at_srcdir/connect03.at:20: # Skip test if running at root privileges echo \"test\" > \$\$ chmod 0 \$\$ cat \$\$ > /dev/null 2>&1 result=\$? rm -f \$\$ test \$result -eq 0 && exit 77 test \"\$MF_IPV6_SUPPORT\" = yes || exit 77 mtasim --stdio -Xauto --statedir -- --stderr \$MFOPTS \$MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2" at_fn_check_prepare_notrace 'an embedded newline' "connect03.at:20" ( $at_check_trace; # Skip test if running at root privileges echo "test" > $$ chmod 0 $$ cat $$ > /dev/null 2>&1 result=$? rm -f $$ test $result -eq 0 && exit 77 test "$MF_IPV6_SUPPORT" = yes || exit 77 mtasim --stdio -Xauto --statedir -- --stderr $MFOPTS $MFADDOPTS filter < script 2>&1 > /dev/null | sed 's/^mailfromd: info: *//' >&2 ) >>"$at_stdout" 2>>"$at_stderr" 5>&- at_status=$? at_failed=false $at_check_filter echo >>"$at_stderr"; $as_echo "mailfromd: warning: script file is given without full file name mailfromd: warning: program started without full file name mailfromd: warning: restart (SIGHUP) will not work mailfromd: mailfromd started hostname=pirx.gnu.org.ua family=3 port=34567 addr=2001:470:1f0a:1be1::2 mailfromd: mailfromd terminating " | \ $at_diff - "$at_stderr" || at_failed=: at_fn_diff_devnull "$at_stdout" || at_failed=: at_fn_check_status 0 $at_status "$at_srcdir/connect03.at:20" $at_failed && at_fn_log_failure $at_traceon; } set +x $at_times_p && times >"$at_times_file" ) 5>&1 2>&1 7>&- | eval $at_tee_pipe read at_status <"$at_status_file" #AT_STOP_118