#! /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=''
# 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;wordsplit.at:58;simple input;wordsplit wsp wordsplit000 wsp000 wsp-simple;
2;wordsplit.at:66;quoted space;wordsplit wsp wordsplit001 wsp000 wsp-quoted;
3;wordsplit.at:72;tab character;wordsplit wsp wordsplit002 wsp000 wsp-tab;
4;wordsplit.at:80;octal and hex escapes;wordsplit wsp wordsplit003 wsp000 wsp-escape wsp-escape000;
5;wordsplit.at:86;octal and hex escapes 2;wordsplit wsp wordsplit004 wsp000 wsp-escape wsp-escape001;
6;wordsplit.at:94;escape representation;wordsplit wsp wordsplit005 wsp000 wsp-escape wsp-escape002;
7;wordsplit.at:105;append;wordsplit wsp wordsplit006 wsp000 wsp-append;
8;wordsplit.at:127;dooffs;wordsplit wsp wordsplit007 wsp000 wsp-doofs;
9;wordsplit.at:139;variable substitutions: single var;wordsplit wsp wordsplit008 wsp000 wsp-var wsp-var000;
10;wordsplit.at:149;variable substitutions: concatenated vars;wordsplit wsp wordsplit009 wsp000 wsp-var wsp-var001;
11;wordsplit.at:160;variable substitutions: field splitting;wordsplit wsp wordsplit010 wsp000 wsp-var wsp-var002;
12;wordsplit.at:171;variable substitutions: double-quoted variable;wordsplit wsp wordsplit011 wsp000 wsp-var wsp-var003;
13;wordsplit.at:181;variable substitutions: single-quoted variable;wordsplit wsp wordsplit012 wsp000 wsp-var wsp-var004;
14;wordsplit.at:191;undefined variables 1;wordsplit wsp wordsplit013 wsp000 wsp-var wsp-var005;
15;wordsplit.at:201;undefined variables 2;wordsplit wsp wordsplit014 wsp000 wsp-var wsp-var006;
16;wordsplit.at:212;warn about undefined variables;wordsplit wsp wordsplit015 wsp000 wsp-var wsp-var007;
17;wordsplit.at:220;bail out on undefined variables;wordsplit wsp wordsplit016 wsp000 wsp-var wsp-var008;
18;wordsplit.at:227;disable variable expansion;wordsplit wsp wordsplit017 wsp000 wsp-var wsp-var009;
19;wordsplit.at:235;K/V environment;wordsplit wsp wordsplit018 wsp000 wsp-var wsp-var010 wsp-env-kv wsp-env_kv;
20;wordsplit.at:245;nosplit with expansion;wordsplit wsp wordsplit019 wsp000 wsp-var wsp-var011 wsp-var-nosplit;
21;wordsplit.at:253;nosplit without expansion;wordsplit wsp wordsplit020 wsp000 wsp-var wsp-var012;
22;wordsplit.at:261;default value (defined);wordsplit wsp wordsplit021 wsp000 wsp-var wsp-var013;
23;wordsplit.at:269;default value;wordsplit wsp wordsplit022 wsp000 wsp-var wsp-var014;
24;wordsplit.at:275;default value (defined);wordsplit wsp wordsplit023 wsp000 wsp-var wsp-var015;
25;wordsplit.at:283;default value (:- null);wordsplit wsp wordsplit024 wsp000 wsp-var wsp-var016;
26;wordsplit.at:291;default value (- null);wordsplit wsp wordsplit025 wsp000 wsp-var wsp-var017;
27;wordsplit.at:298;default value (- null, unset);wordsplit wsp wordsplit026 wsp000 wsp-var wsp-var018;
28;wordsplit.at:304;assign default values;wordsplit wsp wordsplit027 wsp000 wsp-var wsp-var019;
29;wordsplit.at:313;default error message (var defined);wordsplit wsp wordsplit028 wsp000 wsp-var wsp-var020;
30;wordsplit.at:323;default error message;wordsplit wsp wordsplit029 wsp000 wsp-var wsp-var021;
31;wordsplit.at:330;custom error message (defined);wordsplit wsp wordsplit030 wsp000 wsp-var wsp-var022 wsp-custom-err wsp-custom-err00;
32;wordsplit.at:340;custom error message;wordsplit wsp wordsplit031 wsp000 wsp-var wsp-var023 wsp-custom-err wsp-custom-err01;
33;wordsplit.at:349;alternate value (defined);wordsplit wsp wordsplit032 wsp000 wsp-var wsp-var024 wsp-alt wsp-alt00;
34;wordsplit.at:359;alternate value;wordsplit wsp wordsplit033 wsp000 wsp-var wsp-var025 wsp-alt wsp-alt01;
35;wordsplit.at:368;getvar;wordsplit wsp wordsplit034 wsp000 wsp-var wsp-var026 wsp-getvar;
36;wordsplit.at:381;getvar and env;wordsplit wsp wordsplit035 wsp000 wsp-var wsp-var027 wsp-getvar;
37;wordsplit.at:396;getvar, alternate value;wordsplit wsp wordsplit036 wsp000 wsp-var wsp-var028 wsp-getvar;
38;wordsplit.at:406;ignore quotes;wordsplit wsp wordsplit037 wsp000 wsp-ignore-quotes;
39;wordsplit.at:415;custom delimiters (squeeze);wordsplit wsp wordsplit038 wsp000 wsp-delim wsp-delim000;
40;wordsplit.at:426;custom delimiters (no squeeze);wordsplit wsp wordsplit039 wsp000 wsp-delim wsp-delim001;
41;wordsplit.at:438;custom, with returned delimiters;wordsplit wsp wordsplit040 wsp000 wsp-delim wsp-delim002;
42;wordsplit.at:453;custom, with returned & squeezed delimiters;wordsplit wsp wordsplit041 wsp000 wsp-delim wsp-delim003;
43;wordsplit.at:471;sed expressions;wordsplit wsp wordsplit042 wsp000 wsp-sed wsp-sed000;
44;wordsplit.at:481;C escapes on;wordsplit wsp wordsplit043 wsp000 wcp-c-escape;
45;wordsplit.at:490;C escapes off;wordsplit wsp wordsplit044 wsp000 wcp-c-escape-off;
46;wordsplit.at:499;ws elimination;wordsplit wsp wordsplit045 wsp000 wsp-ws-elim;
47;wordsplit.at:508;ws elimination + return delim;wordsplit wsp wordsplit046 wsp000 wsp-ws-elim-ret;
48;wordsplit.at:521;empty quotes;wordsplit wsp wordsplit047 wsp000 wsp-empty-quotes;
49;wordsplit.at:527;delimiter following empty quotes;wordsplit wsp wordsplit048 wsp000;
50;wordsplit.at:536;suppress ws trimming within quotes;wordsplit wsp wordsplit049 wsp000;
51;wordsplit.at:548;unescape;wordsplit wsp wordsplit050 wsp000 wsp-unescape wsp-unescape-simple;
52;wordsplit.at:558;unescape: word/quote;wordsplit wsp wordsplit051 wsp000 wsp-unescape wsp-unescape-word;
53;wordsplit.at:571;dquote;wordsplit wsp wordsplit052 wsp000;
54;wordsplit.at:580;squote;wordsplit wsp wordsplit053 wsp000;
55;wordsplit.at:591;incremental;wordsplit wsp wordsplit054 wsp000 wsp-incr wsp-incr000;
56;wordsplit.at:606;incremental append;wordsplit wsp wordsplit055 wsp000 wsp-incr wsp-incr001;
57;wordsplit.at:624;incremental ws;wordsplit wsp wordsplit056 wsp000 wsp-incr wsp-incr002;
58;wordsplit.at:643;simple command substitution;wordsplit wsp wsp-cmd wsp-cmd-1;
59;wordsplit.at:662;quoted command substitution;wordsplit wsp wsp-cmd wsp-cmd-2;
60;wordsplit.at:680;coalesced command substitution;wordsplit wsp wsp-cmd wsp-cmd-3;
61;wordsplit.at:697;quoted coalesced command substitution;wordsplit wsp wsp-cmd wsp-cmd-4;
62;wordsplit.at:713;variable and command substitution;wordsplit wsp wsp-var wsp-var24 wsp-cmd wsp-cmd-5;
63;wordsplit.at:732;variable expansion and command substitution in quotes;wordsplit wsp wsp-var wsp-var25 wsp-cmd wsp-cmd-6;
64;wordsplit.at:748;pathname expansion;wordsplit wsp wsp-path wsp-path-1;
65;wordsplit.at:769;pathname expansion: no match;wordsplit wsp wsp-path wsp-path-2;
66;wordsplit.at:788;pathname expansion: nullglob;wordsplit wsp wsp-path wsp-path-3;
67;wordsplit.at:806;pathname expansion: failglob;wordsplit wsp wsp-path wsp-path-4;
68;format00.at:17;Default format;format format00;
69;format01.at:17;Locus;format format01;
70;format02.at:17;Custom delimiter;format format02;
71;stradj.at:17;String location adjustment;format option stradj;
72;strcat.at:17;String concatenation;format option strcat concat;
73;enum.at:17;Enumerate nodes;enum;
74;peek00.at:17;Peek;peek peek00;
75;peek01.at:17;Nested nodes;peek peek01;
76;peek02.at:17;Block nodes;peek peek02;
77;peek03.at:17;Nested blocks;peek peek03;
78;glob00.at:17;Leading wildcard;peek peek04 glob glob00;
79;glob01.at:17;Trailing wildcard;peek peek05 glob glob01;
80;glob02.at:17;Intermediate wildcard;peek peek05 glob glob02;
81;glob03.at:17;Multiple wildcards;peek peek06 glob glob03;
82;glob04.at:17;Subtree - asterisk;peek peek07 glob glob04;
83;glob05.at:17;Subtree - percent;peek peek08 glob glob05;
84;reduce00.at:17;Simple statement;reduce reduce00;
85;reduce01.at:17;Block statement;reduce reduce01;
86;reduce02.at:17;Nested block statement;reduce reduce02;
87;reduce03.at:17;Table driven reduction;reduce reduce03;
88;sort00.at:17;Sort;sort sort00;
89;sort01.at:17;Stable sort;sort sort01;
90;incl00.at:17;Include path;include incl00;
91;incl01.at:17;Recursive inclusion;include incl01;
92;incl02.at:17;Include once;include incl02;
93;incl03.at:17;Wildcard inclusion;include incl03;
94;parser-meta1.at:17;MeTA1-style parser;parser meta1;
95;locus-meta1.at:17;Locations: meta1;locus meta1 meta1-locus00;
96;join.at:17;Join;join;
97;cfhelp.at:17;Help;help;
98;set.at:17;Set values;set;
99;vercmp.at:17;Version comparator;vercmp;
100;grecs00.at:17;C comments in GRECS-style parser;parser grecs grecs00;
101;empty.at:17;Empty input file;parser empty;
102;locus00.at:17;Scalar value;locus scalar locus00;
103;locus01.at:17;Multiline strings;locus multiline locus01;
104;locus02.at:17;Adjacent quoted strings;locus adjacent locus02;
105;path-locus.at:17;Path;locus path;
106;json00.at:16;Parser;json json00 parser;
107;json01.at:16;Lookup;json json01 lookup;
"
# 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 107; 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 <bug-pies@gnu.org.ua>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
_ATEOF
  exit $at_write_fail
fi

# List of tests.
if $at_list_p; then
  cat <<_ATEOF || at_write_fail=1
GNU Pies 1.3 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 (GNU Pies 1.3)" &&
  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. wordsplit.at:17
# Category starts at test group 1.
at_banner_text_1="Wordsplit"
# Banner 2. testsuite.at:52
# Category starts at test group 68.
at_banner_text_2="Formats"
# Banner 3. testsuite.at:57
# Category starts at test group 71.
at_banner_text_3="Options"
# Banner 4. testsuite.at:61
# Category starts at test group 73.
at_banner_text_4="Enumeration"
# Banner 5. testsuite.at:64
# Category starts at test group 74.
at_banner_text_5="Peek a node"
# Banner 6. testsuite.at:70
# Category starts at test group 78.
at_banner_text_6="Globbing"
# Banner 7. testsuite.at:78
# Category starts at test group 84.
at_banner_text_7="Reduce"
# Banner 8. testsuite.at:84
# Category starts at test group 88.
at_banner_text_8="Sort"
# Banner 9. testsuite.at:88
# Category starts at test group 90.
at_banner_text_9="Include"
# Banner 10. testsuite.at:106
# Category starts at test group 94.
at_banner_text_10="MeTA1 Parser"
# Banner 11. testsuite.at:118
# Category starts at test group 96.
at_banner_text_11="Other operatios"
# Banner 12. testsuite.at:126
# Category starts at test group 102.
at_banner_text_12="Locations"
# Banner 13. testsuite.at:132
# Category starts at test group 106.
at_banner_text_13="JSON"

# 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 "## ------------------------ ##
## GNU Pies 1.3 test suite. ##
## ------------------------ ##"
{
  $as_echo "## ------------------------ ##
## GNU Pies 1.3 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:47: $at_program_ --version"
      "$at_program_" --version </dev/null
      echo
    } >&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 <bug-pies@gnu.org.ua>.
_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: <bug-pies@gnu.org.ua>
   Subject: [GNU Pies 1.3] $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 'wordsplit.at:58' \
  "simple input" "                                   " 1
at_xfail=no
(
  $as_echo "1. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:58:
 wsp  <<'EOT'
1 2 3
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:58"
( $at_check_trace;
 wsp  <<'EOT'
1 2 3
EOT

) >>"$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 "NF: 3
0: 1
1: 2
2: 3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:58"
$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 'wordsplit.at:66' \
  "quoted space" "                                   " 1
at_xfail=no
(
  $as_echo "2. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:66:
 wsp  <<'EOT'
quoted\\ space
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:66"
( $at_check_trace;
 wsp  <<'EOT'
quoted\ space
EOT

) >>"$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 "NF: 1
0: \"quoted space\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:66"
$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 'wordsplit.at:72' \
  "tab character" "                                  " 1
at_xfail=no
(
  $as_echo "3. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:72:
 wsp  <<'EOT'
a \"tab	character\"
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:72"
( $at_check_trace;
 wsp  <<'EOT'
a "tab	character"
EOT

) >>"$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 "NF: 2
0: a
1: tab\\tcharacter
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:72"
$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 'wordsplit.at:80' \
  "octal and hex escapes" "                          " 1
at_xfail=no
(
  $as_echo "4. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:80:
 wsp  <<'EOT'
\\157\\143\\164\\141\\154\\40and\\x20\\x68\\x65\\x78
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:80"
( $at_check_trace;
 wsp  <<'EOT'
\157\143\164\141\154\40and\x20\x68\x65\x78
EOT

) >>"$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 "NF: 1
0: \"octal and hex\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:80"
$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 'wordsplit.at:86' \
  "octal and hex escapes 2" "                        " 1
at_xfail=no
(
  $as_echo "5. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:86:
 wsp  <<'EOT'
\\157\\143\\164\\141\\154\\40 and \\x20\\x68\\x65\\x78
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:86"
( $at_check_trace;
 wsp  <<'EOT'
\157\143\164\141\154\40 and \x20\x68\x65\x78
EOT

) >>"$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 "NF: 3
0: \"octal \"
1: and
2: \" hex\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:86"
$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 'wordsplit.at:94' \
  "escape representation" "                          " 1
at_xfail=no
(
  $as_echo "6. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:94:
 wsp  <<'EOT'
A\\x3-\\48\\39
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:94"
( $at_check_trace;
 wsp  <<'EOT'
A\x3-\48\39
EOT

) >>"$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 "NF: 1
0: A\\003-\\0048\\0039
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:94"
$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 'wordsplit.at:105' \
  "append" "                                         " 1
at_xfail=no
(
  $as_echo "7. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:105:
 wsp append <<'EOT'
jeden dwa trzy
cztery
piec szesc
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:105"
( $at_check_trace;
 wsp append <<'EOT'
jeden dwa trzy
cztery
piec szesc
EOT

) >>"$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 "NF: 3
0: jeden
1: dwa
2: trzy
NF: 4
0: jeden
1: dwa
2: trzy
3: cztery
NF: 6
0: jeden
1: dwa
2: trzy
3: cztery
4: piec
5: szesc
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:105"
$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 'wordsplit.at:127' \
  "dooffs" "                                         " 1
at_xfail=no
(
  $as_echo "8. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:127:
 wsp dooffs 3 jeden dwa trzy <<'EOT'
cztery piec
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:127"
( $at_check_trace;
 wsp dooffs 3 jeden dwa trzy <<'EOT'
cztery piec
EOT

) >>"$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 "NF: 2 (3)
(0): jeden
(1): dwa
(2): trzy
3: cztery
4: piec
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:127"
$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 'wordsplit.at:139' \
  "variable substitutions: single var" "             " 1
at_xfail=no
(
  $as_echo "9. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:139:
FOO=bar wsp  <<'EOT'
a \$FOO test
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:139"
( $at_check_trace;
FOO=bar wsp  <<'EOT'
a $FOO test
EOT

) >>"$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 "NF: 3
0: a
1: bar
2: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:139"
$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 'wordsplit.at:149' \
  "variable substitutions: concatenated vars" "      " 1
at_xfail=no
(
  $as_echo "10. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:149:
FOO=str BAR=ing wsp  <<'EOT'
a \$FOO\${BAR}ent test
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:149"
( $at_check_trace;
FOO=str BAR=ing wsp  <<'EOT'
a $FOO${BAR}ent test
EOT

) >>"$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 "NF: 3
0: a
1: stringent
2: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:149"
$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 'wordsplit.at:160' \
  "variable substitutions: field splitting" "        " 1
at_xfail=no
(
  $as_echo "11. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:160:
FOO=\"variable substitution\" wsp  <<'EOT'
a \$FOO test
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:160"
( $at_check_trace;
FOO="variable substitution" wsp  <<'EOT'
a $FOO test
EOT

) >>"$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 "NF: 4
0: a
1: variable
2: substitution
3: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:160"
$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 'wordsplit.at:171' \
  "variable substitutions: double-quoted variable" " " 1
at_xfail=no
(
  $as_echo "12. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:171:
FOO=\"variable substitution\" wsp  <<'EOT'
a \"\$FOO\" test
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:171"
( $at_check_trace;
FOO="variable substitution" wsp  <<'EOT'
a "$FOO" test
EOT

) >>"$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 "NF: 3
0: a
1: \"variable substitution\"
2: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:171"
$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 'wordsplit.at:181' \
  "variable substitutions: single-quoted variable" " " 1
at_xfail=no
(
  $as_echo "13. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:181:
FOO=\"variable substitution\" wsp  <<'EOT'
a '\$FOO' test
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:181"
( $at_check_trace;
FOO="variable substitution" wsp  <<'EOT'
a '$FOO' test
EOT

) >>"$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 "NF: 3
0: a
1: \$FOO
2: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:181"
$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 'wordsplit.at:191' \
  "undefined variables 1" "                          " 1
at_xfail=no
(
  $as_echo "14. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:191:
unset FOO; wsp  <<'EOT'
a \$FOO test a\${FOO}b
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:191"
( $at_check_trace;
unset FOO; wsp  <<'EOT'
a $FOO test a${FOO}b
EOT

) >>"$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 "NF: 3
0: a
1: test
2: ab
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:191"
$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 'wordsplit.at:201' \
  "undefined variables 2" "                          " 1
at_xfail=no
(
  $as_echo "15. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:201:
unset FOO; wsp keepundef <<'EOT'
a \$FOO test a\${FOO}b
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:201"
( $at_check_trace;
unset FOO; wsp keepundef <<'EOT'
a $FOO test a${FOO}b
EOT

) >>"$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 "NF: 4
0: a
1: \$FOO
2: test
3: a\${FOO}b
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:201"
$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 'wordsplit.at:212' \
  "warn about undefined variables" "                 " 1
at_xfail=no
(
  $as_echo "16. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:212:
unset FOO; wsp warnundef <<'EOT'
\$FOO
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:212"
( $at_check_trace;
unset FOO; wsp warnundef <<'EOT'
$FOO
EOT

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; $as_echo "warning: undefined variable \`FOO'
" | \
  $at_diff - "$at_stderr" || at_failed=:
echo >>"$at_stdout"; $as_echo "NF: 0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:212"
$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 'wordsplit.at:220' \
  "bail out on undefined variables" "                " 1
at_xfail=no
(
  $as_echo "17. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:220:
unset FOO; wsp undef <<'EOT'
\$FOO
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:220"
( $at_check_trace;
unset FOO; wsp undef <<'EOT'
$FOO
EOT

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; $as_echo "undefined variable
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:220"
$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 'wordsplit.at:227' \
  "disable variable expansion" "                     " 1
at_xfail=no
(
  $as_echo "18. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:227:
FOO=bar wsp novar <<'EOT'
\$FOO
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:227"
( $at_check_trace;
FOO=bar wsp novar <<'EOT'
$FOO
EOT

) >>"$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 "NF: 1
0: \$FOO
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:227"
$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 'wordsplit.at:235' \
  "K/V environment" "                                " 1
at_xfail=no
(
  $as_echo "19. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:235:
FOO=bar BAZ=qux wsp env_kv <<'EOT'
\$FOO a\$BAZ
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:235"
( $at_check_trace;
FOO=bar BAZ=qux wsp env_kv <<'EOT'
$FOO a$BAZ
EOT

) >>"$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 "NF: 2
0: bar
1: aqux
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:235"
$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 'wordsplit.at:245' \
  "nosplit with expansion" "                         " 1
at_xfail=no
(
  $as_echo "20. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:245:
FOO=\"variable expansion\" wsp nosplit <<'EOT'
a \$FOO test
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:245"
( $at_check_trace;
FOO="variable expansion" wsp nosplit <<'EOT'
a $FOO test
EOT

) >>"$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 "NF: 1
0: \"a variable expansion test\\n\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:245"
$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 'wordsplit.at:253' \
  "nosplit without expansion" "                      " 1
at_xfail=no
(
  $as_echo "21. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:253:
FOO=\"variable expansion\" wsp nosplit novar <<'EOT'
a \$FOO test
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:253"
( $at_check_trace;
FOO="variable expansion" wsp nosplit novar <<'EOT'
a $FOO test
EOT

) >>"$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 "NF: 1
0: \"a \$FOO test\\n\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:253"
$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 'wordsplit.at:261' \
  "default value (defined)" "                        " 1
at_xfail=no
(
  $as_echo "22. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:261:
FOO=qux wsp  <<'EOT'
\${FOO:-bar}
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:261"
( $at_check_trace;
FOO=qux wsp  <<'EOT'
${FOO:-bar}
EOT

) >>"$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 "NF: 1
0: qux
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:261"
$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 'wordsplit.at:269' \
  "default value" "                                  " 1
at_xfail=no
(
  $as_echo "23. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:269:
 wsp  <<'EOT'
\${FOO:-bar}
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:269"
( $at_check_trace;
 wsp  <<'EOT'
${FOO:-bar}
EOT

) >>"$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 "NF: 1
0: bar
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:269"
$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 'wordsplit.at:275' \
  "default value (defined)" "                        " 1
at_xfail=no
(
  $as_echo "24. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:275:
FOO=qux wsp  <<'EOT'
\${FOO:-bar}
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:275"
( $at_check_trace;
FOO=qux wsp  <<'EOT'
${FOO:-bar}
EOT

) >>"$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 "NF: 1
0: qux
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:275"
$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 'wordsplit.at:283' \
  "default value (:- null)" "                        " 1
at_xfail=no
(
  $as_echo "25. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:283:
FOO= wsp  <<'EOT'
\${FOO:-bar}
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:283"
( $at_check_trace;
FOO= wsp  <<'EOT'
${FOO:-bar}
EOT

) >>"$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 "NF: 1
0: bar
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:283"
$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 'wordsplit.at:291' \
  "default value (- null)" "                         " 1
at_xfail=no
(
  $as_echo "26. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:291:
FOO= wsp  <<'EOT'
\${FOO-bar}
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:291"
( $at_check_trace;
FOO= wsp  <<'EOT'
${FOO-bar}
EOT

) >>"$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 "NF: 0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:291"
$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 'wordsplit.at:298' \
  "default value (- null, unset)" "                  " 1
at_xfail=no
(
  $as_echo "27. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:298:
 wsp  <<'EOT'
\${FOO-bar}
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:298"
( $at_check_trace;
 wsp  <<'EOT'
${FOO-bar}
EOT

) >>"$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 "NF: 1
0: bar
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:298"
$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 'wordsplit.at:304' \
  "assign default values" "                          " 1
at_xfail=no
(
  $as_echo "28. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:304:
 wsp  <<'EOT'
\${FOO=bar}
\$FOO
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:304"
( $at_check_trace;
 wsp  <<'EOT'
${FOO=bar}
$FOO
EOT

) >>"$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 "NF: 1
0: bar
NF: 1
0: bar
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:304"
$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 'wordsplit.at:313' \
  "default error message (var defined)" "            " 1
at_xfail=no
(
  $as_echo "29. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:313:
FOO=bar wsp  <<'EOT'
a \${FOO:?} test
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:313"
( $at_check_trace;
FOO=bar wsp  <<'EOT'
a ${FOO:?} test
EOT

) >>"$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 "NF: 3
0: a
1: bar
2: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:313"
$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 'wordsplit.at:323' \
  "default error message" "                          " 1
at_xfail=no
(
  $as_echo "30. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:323:
 wsp  <<'EOT'
\${FOO:?}
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:323"
( $at_check_trace;
 wsp  <<'EOT'
${FOO:?}
EOT

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; $as_echo "FOO: variable null or not set
" | \
  $at_diff - "$at_stderr" || at_failed=:
echo >>"$at_stdout"; $as_echo "NF: 0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:323"
$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 'wordsplit.at:330' \
  "custom error message (defined)" "                 " 1
at_xfail=no
(
  $as_echo "31. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:330:
FOO=bar wsp  <<'EOT'
a \${FOO:?please define it} test
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:330"
( $at_check_trace;
FOO=bar wsp  <<'EOT'
a ${FOO:?please define it} test
EOT

) >>"$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 "NF: 3
0: a
1: bar
2: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:330"
$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 'wordsplit.at:340' \
  "custom error message" "                           " 1
at_xfail=no
(
  $as_echo "32. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:340:
 wsp  <<'EOT'
a \${FOO:?please define it} test
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:340"
( $at_check_trace;
 wsp  <<'EOT'
a ${FOO:?please define it} test
EOT

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; $as_echo "FOO: please define it
" | \
  $at_diff - "$at_stderr" || at_failed=:
echo >>"$at_stdout"; $as_echo "NF: 2
0: a
1: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:340"
$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 'wordsplit.at:349' \
  "alternate value (defined)" "                      " 1
at_xfail=no
(
  $as_echo "33. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:349:
FOO=bar wsp  <<'EOT'
a \${FOO:+isset} test
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:349"
( $at_check_trace;
FOO=bar wsp  <<'EOT'
a ${FOO:+isset} test
EOT

) >>"$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 "NF: 3
0: a
1: isset
2: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:349"
$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 'wordsplit.at:359' \
  "alternate value" "                                " 1
at_xfail=no
(
  $as_echo "34. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:359:
unset FOO; wsp  <<'EOT'
a \${FOO:+isset} test
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:359"
( $at_check_trace;
unset FOO; wsp  <<'EOT'
a ${FOO:+isset} test
EOT

) >>"$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 "NF: 2
0: a
1: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:359"
$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 'wordsplit.at:368' \
  "getvar" "                                         " 1
at_xfail=no
(
  $as_echo "35. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:368: unset foo; unset x
 wsp foo=bar x=quux <<'EOT'
begin \$foo \$x end
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:368"
( $at_check_trace; unset foo; unset x
 wsp foo=bar x=quux <<'EOT'
begin $foo $x end
EOT

) >>"$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 "NF: 4
0: begin
1: bar
2: quux
3: end
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:368"
$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 'wordsplit.at:381' \
  "getvar and env" "                                 " 1
at_xfail=no
(
  $as_echo "36. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:381: unset foo; unset x
TVAR=12 y=zwar wsp foo=bar x=quux y=xur <<'EOT'
begin \$foo \$TVAR \$x \$y end
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:381"
( $at_check_trace; unset foo; unset x
TVAR=12 y=zwar wsp foo=bar x=quux y=xur <<'EOT'
begin $foo $TVAR $x $y end
EOT

) >>"$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 "NF: 6
0: begin
1: bar
2: 12
3: quux
4: zwar
5: end
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:381"
$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 'wordsplit.at:396' \
  "getvar, alternate value" "                        " 1
at_xfail=no
(
  $as_echo "37. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:396:
 wsp foo=bar <<'EOT'
a \${foo:+isset}
EOT
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "wordsplit.at:396"
( $at_check_trace;
 wsp foo=bar <<'EOT'
a ${foo:+isset}
EOT

) >>"$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 "NF: 2
0: a
1: isset
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:396"
$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 'wordsplit.at:406' \
  "ignore quotes" "                                  " 1
at_xfail=no
(
  $as_echo "38. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:406:
 wsp -quote <<'EOT'
\"a text\"
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:406"
( $at_check_trace;
 wsp -quote <<'EOT'
"a text"
EOT

) >>"$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 "NF: 2
0: \"\\\"a\"
1: \"text\\\"\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:406"
$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 'wordsplit.at:415' \
  "custom delimiters (squeeze)" "                    " 1
at_xfail=no
(
  $as_echo "39. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:415:
 wsp delim : -ws trimnl <<'EOT'
semicolon: separated::list: of :words
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:415"
( $at_check_trace;
 wsp delim : -ws trimnl <<'EOT'
semicolon: separated::list: of :words
EOT

) >>"$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 "NF: 5
0: semicolon
1: \" separated\"
2: list
3: \" of \"
4: words
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:415"
$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 'wordsplit.at:426' \
  "custom delimiters (no squeeze)" "                 " 1
at_xfail=no
(
  $as_echo "40. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:426:
 wsp delim : -ws -squeeze_delims trimnl <<'EOT'
semicolon: separated::list: of :words
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:426"
( $at_check_trace;
 wsp delim : -ws -squeeze_delims trimnl <<'EOT'
semicolon: separated::list: of :words
EOT

) >>"$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 "NF: 6
0: semicolon
1: \" separated\"
2: \"\"
3: list
4: \" of \"
5: words
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:426"
$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 'wordsplit.at:438' \
  "custom, with returned delimiters" "               " 1
at_xfail=no
(
  $as_echo "41. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:438:
 wsp delim : -ws trimnl return_delims <<'EOT'
semicolon: separated::list: of :words
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:438"
( $at_check_trace;
 wsp delim : -ws trimnl return_delims <<'EOT'
semicolon: separated::list: of :words
EOT

) >>"$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 "NF: 9
0: semicolon
1: :
2: \" separated\"
3: :
4: list
5: :
6: \" of \"
7: :
8: words
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:438"
$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 'wordsplit.at:453' \
  "custom, with returned & squeezed delimiters" "    " 1
at_xfail=no
(
  $as_echo "42. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:453:
 wsp delim : -ws trimnl return_delims -squeeze_delims <<'EOT'
semicolon: separated::list: of :words
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:453"
( $at_check_trace;
 wsp delim : -ws trimnl return_delims -squeeze_delims <<'EOT'
semicolon: separated::list: of :words
EOT

) >>"$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 "NF: 10
0: semicolon
1: :
2: \" separated\"
3: :
4: :
5: list
6: :
7: \" of \"
8: :
9: words
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:453"
$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 'wordsplit.at:471' \
  "sed expressions" "                                " 1
at_xfail=no
(
  $as_echo "43. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:471:
 wsp sed <<'EOT'
arg1 s/foo/bar/g;s/bar baz/quz quux/ arg2
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:471"
( $at_check_trace;
 wsp sed <<'EOT'
arg1 s/foo/bar/g;s/bar baz/quz quux/ arg2
EOT

) >>"$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 "NF: 3
0: arg1
1: \"s/foo/bar/g;s/bar baz/quz quux/\"
2: arg2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:471"
$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 'wordsplit.at:481' \
  "C escapes on" "                                   " 1
at_xfail=no
(
  $as_echo "44. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:481:
 wsp cescapes <<'EOT'
a\\ttab form\\ffeed and new\\nline
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:481"
( $at_check_trace;
 wsp cescapes <<'EOT'
a\ttab form\ffeed and new\nline
EOT

) >>"$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 "NF: 4
0: a\\ttab
1: form\\ffeed
2: and
3: new\\nline
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:481"
$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 'wordsplit.at:490' \
  "C escapes off" "                                  " 1
at_xfail=no
(
  $as_echo "45. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:490:
 wsp -cescapes <<'EOT'
a\\ttab form\\ffeed and new\\nline
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:490"
( $at_check_trace;
 wsp -cescapes <<'EOT'
a\ttab form\ffeed and new\nline
EOT

) >>"$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 "NF: 4
0: attab
1: formffeed
2: and
3: newnline
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:490"
$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 'wordsplit.at:499' \
  "ws elimination" "                                 " 1
at_xfail=no
(
  $as_echo "46. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:499:
 wsp delim ' ()' ws return_delims <<'EOT'
( list  items  )
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:499"
( $at_check_trace;
 wsp delim ' ()' ws return_delims <<'EOT'
( list  items  )
EOT

) >>"$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 "NF: 4
0: (
1: list
2: items
3: )
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:499"
$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 'wordsplit.at:508' \
  "ws elimination + return delim" "                  " 1
at_xfail=no
(
  $as_echo "47. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:508:
 wsp -default novar nocmd delim \":,\" return_delims ws dquote <<'EOT'
\"foo\" : \"bar\", \"quux\" : \"baaz\"
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:508"
( $at_check_trace;
 wsp -default novar nocmd delim ":," return_delims ws dquote <<'EOT'
"foo" : "bar", "quux" : "baaz"
EOT

) >>"$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 "NF: 7
0: foo
1: :
2: bar
3: ,
4: quux
5: :
6: baaz
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:508"
$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 'wordsplit.at:521' \
  "empty quotes" "                                   " 1
at_xfail=no
(
  $as_echo "48. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:521:
 wsp delim : ws return_delims <<'EOT'
t=\"\"
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:521"
( $at_check_trace;
 wsp delim : ws return_delims <<'EOT'
t=""
EOT

) >>"$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 "NF: 1
0: t=
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:521"
$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 'wordsplit.at:527' \
  "delimiter following empty quotes" "               " 1
at_xfail=no
(
  $as_echo "49. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:527:
 wsp delim : ws return_delims <<'EOT'
t=\"\":r
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:527"
( $at_check_trace;
 wsp delim : ws return_delims <<'EOT'
t="":r
EOT

) >>"$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 "NF: 3
0: t=
1: :
2: r
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:527"
$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 'wordsplit.at:536' \
  "suppress ws trimming within quotes" "             " 1
at_xfail=no
(
  $as_echo "50. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:536:
 wsp default delim , ws return_delims <<'EOT'
nocomponent,nonewline, formatfield=\"In message %{text}, \"
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:536"
( $at_check_trace;
 wsp default delim , ws return_delims <<'EOT'
nocomponent,nonewline, formatfield="In message %{text}, "
EOT

) >>"$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 "NF: 5
0: nocomponent
1: ,
2: nonewline
3: ,
4: \"formatfield=In message %{text}, \"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:536"
$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 'wordsplit.at:548' \
  "unescape" "                                       " 1
at_xfail=no
(
  $as_echo "51. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:548:
 wsp -default novar nocmd quote escape ':+:\\\\\"\"' <<'EOT'
\\Seen \"quote \\\"\" \"bs \\\\\"
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:548"
( $at_check_trace;
 wsp -default novar nocmd quote escape ':+:\\""' <<'EOT'
\Seen "quote \"" "bs \\"
EOT

) >>"$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 "NF: 3
0: \\\\Seen
1: \"quote \\\"\"
2: \"bs \\\\\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:548"
$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 'wordsplit.at:558' \
  "unescape: word/quote" "                           " 1
at_xfail=no
(
  $as_echo "52. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:558:
 wsp -default novar nocmd quote escape-word '\\\\\"\"' escape-quote ':+0x:\\\\\"\"' <<'EOT'
\\Seen \"quote \\\"\" \"bs \\\\\" \"3\\x31 \\101\" 3\\x31 \\101
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:558"
( $at_check_trace;
 wsp -default novar nocmd quote escape-word '\\""' escape-quote ':+0x:\\""' <<'EOT'
\Seen "quote \"" "bs \\" "3\x31 \101" 3\x31 \101
EOT

) >>"$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 "NF: 6
0: Seen
1: \"quote \\\"\"
2: \"bs \\\\\"
3: \"31 A\"
4: 3x31
5: 101
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:558"
$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 'wordsplit.at:571' \
  "dquote" "                                         " 1
at_xfail=no
(
  $as_echo "53. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:571:
 wsp -default novar nocmd dquote <<'EOT'
a \"quoted example\" isn't it
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:571"
( $at_check_trace;
 wsp -default novar nocmd dquote <<'EOT'
a "quoted example" isn't it
EOT

) >>"$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 "NF: 4
0: a
1: \"quoted example\"
2: isn't
3: it
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:571"
$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 'wordsplit.at:580' \
  "squote" "                                         " 1
at_xfail=no
(
  $as_echo "54. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:580:
 wsp -default novar nocmd squote <<'EOT'
a 'quoted example' isn\"t it
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:580"
( $at_check_trace;
 wsp -default novar nocmd squote <<'EOT'
a 'quoted example' isn"t it
EOT

) >>"$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 "NF: 4
0: a
1: \"quoted example\"
2: \"isn\\\"t\"
3: it
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:580"
$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 'wordsplit.at:591' \
  "incremental" "                                    " 1
at_xfail=no
(
  $as_echo "55. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:591:
 wsp incremental <<'EOT'
incremental \"input test\" line



EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:591"
( $at_check_trace;
 wsp incremental <<'EOT'
incremental "input test" line



EOT

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; $as_echo "input exhausted
" | \
  $at_diff - "$at_stderr" || at_failed=:
echo >>"$at_stdout"; $as_echo "NF: 1
0: incremental
NF: 1
0: \"input test\"
NF: 1
0: line
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:591"
$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 'wordsplit.at:606' \
  "incremental append" "                             " 1
at_xfail=no
(
  $as_echo "56. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:606:
 wsp incremental append <<'EOT'
incremental \"input test\" line



EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:606"
( $at_check_trace;
 wsp incremental append <<'EOT'
incremental "input test" line



EOT

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; $as_echo "input exhausted
" | \
  $at_diff - "$at_stderr" || at_failed=:
echo >>"$at_stdout"; $as_echo "NF: 1
0: incremental
NF: 2
0: incremental
1: \"input test\"
NF: 3
0: incremental
1: \"input test\"
2: line
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:606"
$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 'wordsplit.at:624' \
  "incremental ws" "                                 " 1
at_xfail=no
(
  $as_echo "57. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:624:
 wsp return_delims -squeeze_delims incremental ws <<'EOT'
a   list  test



EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:624"
( $at_check_trace;
 wsp return_delims -squeeze_delims incremental ws <<'EOT'
a   list  test



EOT

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; $as_echo "input exhausted
" | \
  $at_diff - "$at_stderr" || at_failed=:
echo >>"$at_stdout"; $as_echo "NF: 1
0: a
NF: 1
0: list
NF: 1
0: test
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:624"
$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 'wordsplit.at:643' \
  "simple command substitution" "                    " 1
at_xfail=no
(
  $as_echo "58. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:645:
mkdir dir
> dir/file

wsp -nocmd <<'EOT'
begin \$(find dir) end
EOT
"
at_fn_check_prepare_notrace 'a $(...) command substitution' "wordsplit.at:645"
( $at_check_trace;
mkdir dir
> dir/file

wsp -nocmd <<'EOT'
begin $(find dir) end
EOT

) >>"$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 "NF: 4
0: begin
1: dir
2: dir/file
3: end
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:645"
$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 'wordsplit.at:662' \
  "quoted command substitution" "                    " 1
at_xfail=no
(
  $as_echo "59. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:664:
mkdir dir
> dir/file

wsp -nocmd <<'EOT'
begin \"\$(find dir)\" end
EOT
"
at_fn_check_prepare_notrace 'a $(...) command substitution' "wordsplit.at:664"
( $at_check_trace;
mkdir dir
> dir/file

wsp -nocmd <<'EOT'
begin "$(find dir)" end
EOT

) >>"$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 "NF: 3
0: begin
1: \"dir dir/file\"
2: end
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:664"
$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 'wordsplit.at:680' \
  "coalesced command substitution" "                 " 1
at_xfail=no
(
  $as_echo "60. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:682:
mkdir dir
> dir/file

wsp -nocmd <<'EOT'
begin(\$(find dir))end
EOT
"
at_fn_check_prepare_notrace 'a $(...) command substitution' "wordsplit.at:682"
( $at_check_trace;
mkdir dir
> dir/file

wsp -nocmd <<'EOT'
begin($(find dir))end
EOT

) >>"$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 "NF: 2
0: begin(dir
1: dir/file)end
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:682"
$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 'wordsplit.at:697' \
  "quoted coalesced command substitution" "          " 1
at_xfail=no
(
  $as_echo "61. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:699:
mkdir dir
> dir/file

wsp -nocmd <<'EOT'
\"begin(\$(find dir))end\"
EOT
"
at_fn_check_prepare_notrace 'a $(...) command substitution' "wordsplit.at:699"
( $at_check_trace;
mkdir dir
> dir/file

wsp -nocmd <<'EOT'
"begin($(find dir))end"
EOT

) >>"$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 "NF: 1
0: \"begin(dir dir/file)end\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:699"
$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 'wordsplit.at:713' \
  "variable and command substitution" "              " 1
at_xfail=no
(
  $as_echo "62. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:715:
mkdir dir
> dir/file

DIR=dir wsp -nocmd -novar<<'EOT'
begin \$(find \$DIR) end
EOT
"
at_fn_check_prepare_notrace 'a $(...) command substitution' "wordsplit.at:715"
( $at_check_trace;
mkdir dir
> dir/file

DIR=dir wsp -nocmd -novar<<'EOT'
begin $(find $DIR) end
EOT

) >>"$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 "NF: 4
0: begin
1: dir
2: dir/file
3: end
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:715"
$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 'wordsplit.at:732' \
  "variable expansion and command substitution in quotes" "" 1
at_xfail=no
(
  $as_echo "63. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:734:
mkdir dir
> dir/file

DIR=dir wsp -nocmd -novar<<'EOT'
\"begin(\$(find \$DIR))end\"
EOT
"
at_fn_check_prepare_notrace 'a $(...) command substitution' "wordsplit.at:734"
( $at_check_trace;
mkdir dir
> dir/file

DIR=dir wsp -nocmd -novar<<'EOT'
"begin($(find $DIR))end"
EOT

) >>"$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 "NF: 1
0: \"begin(dir dir/file)end\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:734"
$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 'wordsplit.at:748' \
  "pathname expansion" "                             " 1
at_xfail=no
(
  $as_echo "64. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:750:
mkdir dir
> dir/1.c
> dir/2.c
> dir/3.b

wsp pathexpand<<'EOT'
begin dir/*.c end
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:750"
( $at_check_trace;
mkdir dir
> dir/1.c
> dir/2.c
> dir/3.b

wsp pathexpand<<'EOT'
begin dir/*.c end
EOT

) >>"$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 "NF: 4
0: begin
1: dir/1.c
2: dir/2.c
3: end
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:750"
$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 'wordsplit.at:769' \
  "pathname expansion: no match" "                   " 1
at_xfail=no
(
  $as_echo "65. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:771:
mkdir dir
> dir/1.c
> dir/2.b

wsp pathexpand<<'EOT'
begin dir/*.d end
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:771"
( $at_check_trace;
mkdir dir
> dir/1.c
> dir/2.b

wsp pathexpand<<'EOT'
begin dir/*.d end
EOT

) >>"$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 "NF: 3
0: begin
1: dir/*.d
2: end
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:771"
$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 'wordsplit.at:788' \
  "pathname expansion: nullglob" "                   " 1
at_xfail=no
(
  $as_echo "66. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:790:
mkdir dir
> dir/1.c
> dir/2.b

wsp pathexpand nullglob<<'EOT'
begin dir/*.d end
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:790"
( $at_check_trace;
mkdir dir
> dir/1.c
> dir/2.b

wsp pathexpand nullglob<<'EOT'
begin dir/*.d end
EOT

) >>"$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 "NF: 2
0: begin
1: end
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:790"
$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 'wordsplit.at:806' \
  "pathname expansion: failglob" "                   " 1
at_xfail=no
(
  $as_echo "67. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
$as_echo "$at_srcdir/wordsplit.at:808:
mkdir dir
> dir/1.c
> dir/2.b

wsp pathexpand failglob<<'EOT'
begin dir/*.d end
EOT
"
at_fn_check_prepare_notrace 'an embedded newline' "wordsplit.at:808"
( $at_check_trace;
mkdir dir
> dir/1.c
> dir/2.b

wsp pathexpand failglob<<'EOT'
begin dir/*.d end
EOT

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; $as_echo "no files match pattern dir/*.d
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/wordsplit.at:808"
$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 'format00.at:17' \
  "Default format" "                                 " 2
at_xfail=no
(
  $as_echo "68. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/format00.at:20: gcffmt \$abs_srcdir/gcf1.conf"
at_fn_check_prepare_dynamic "gcffmt $abs_srcdir/gcf1.conf" "format00.at:20"
( $at_check_trace; gcffmt $abs_srcdir/gcf1.conf
) >>"$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 ".scalar: \"yes\"
.listvar: (\"a\", \"2\", \"b\", \"c\")
.compound: \"stmt\" \"2\" \"foo\"
.mailbox.mailbox-pattern: \"maildir:/var/mail;type=index;param=2;user=\${user}\"
.mailbox.mailbox-type: \"maildir\"
.logging.syslog: \"yes\"
.logging.facility: \"mail\"
.program=\"foo\".logging.syslog: \"yes\"
.program=\"foo\".logging.facility: \"local1\"
.program=\"foo\".scalar: \"no\"
.program=\"bar\".logging.syslog: \"no\"
.program=\"bar\".logging.facility: \"local2\"
.program=\"bar\".logging.tag: \"baz\"
.program=\"bar\".scalar: \"25\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/format00.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_68
#AT_START_69
at_fn_group_banner 69 'format01.at:17' \
  "Locus" "                                          " 2
at_xfail=no
(
  $as_echo "69. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/format01.at:20: gcffmt -locus \$abs_srcdir/gcf1.conf|sed 's|^.*/gcf1.conf||'"
at_fn_check_prepare_notrace 'a shell pipeline' "format01.at:20"
( $at_check_trace; gcffmt -locus $abs_srcdir/gcf1.conf|sed 's|^.*/gcf1.conf||'
) >>"$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 ":19.1-10: .scalar: \"yes\"
:22.1-26: .listvar: (\"a\", \"2\", \"b\", \"c\")
:25.1-19: .compound: \"stmt\" \"2\" \"foo\"
:28.3-69: .mailbox.mailbox-pattern: \"maildir:/var/mail;type=index;param=2;user=\${user}\"
:29.3-24: .mailbox.mailbox-type: \"maildir\"
:33.4-13: .logging.syslog: \"yes\"
:34.4-16: .logging.facility: \"mail\"
:39.9-18: .program=\"foo\".logging.syslog: \"yes\"
:40.9-23: .program=\"foo\".logging.facility: \"local1\"
:42.4-12: .program=\"foo\".scalar: \"no\"
:47.9-17: .program=\"bar\".logging.syslog: \"no\"
:48.9-23: .program=\"bar\".logging.facility: \"local2\"
:49.9-17: .program=\"bar\".logging.tag: \"baz\"
:51.4-12: .program=\"bar\".scalar: \"25\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/format01.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 'format02.at:17' \
  "Custom delimiter" "                               " 2
at_xfail=no
(
  $as_echo "70. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/format02.at:20: gcffmt -delim=/ \$abs_srcdir/gcf1.conf"
at_fn_check_prepare_dynamic "gcffmt -delim=/ $abs_srcdir/gcf1.conf" "format02.at:20"
( $at_check_trace; gcffmt -delim=/ $abs_srcdir/gcf1.conf
) >>"$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 "/scalar: \"yes\"
/listvar: (\"a\", \"2\", \"b\", \"c\")
/compound: \"stmt\" \"2\" \"foo\"
/mailbox/mailbox-pattern: \"maildir:/var/mail;type=index;param=2;user=\${user}\"
/mailbox/mailbox-type: \"maildir\"
/logging/syslog: \"yes\"
/logging/facility: \"mail\"
/program=\"foo\"/logging/syslog: \"yes\"
/program=\"foo\"/logging/facility: \"local1\"
/program=\"foo\"/scalar: \"no\"
/program=\"bar\"/logging/syslog: \"no\"
/program=\"bar\"/logging/facility: \"local2\"
/program=\"bar\"/logging/tag: \"baz\"
/program=\"bar\"/scalar: \"25\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/format02.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 'stradj.at:17' \
  "String location adjustment" "                     " 3
at_xfail=no
(
  $as_echo "71. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >input.conf <<'_ATEOF'
ident name;
option "string";
_ATEOF


{ set +x
$as_echo "$at_srcdir/stradj.at:25: echo \"Default\"
gcffmt -nopath -locus input.conf
echo \"Adjustment\"
gcffmt -nopath -locus -stradj input.conf
"
at_fn_check_prepare_notrace 'an embedded newline' "stradj.at:25"
( $at_check_trace; echo "Default"
gcffmt -nopath -locus input.conf
echo "Adjustment"
gcffmt -nopath -locus -stradj input.conf

) >>"$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 "Default
input.conf:1.7-10: \"name\"
input.conf:2.8-15: \"string\"
Adjustment
input.conf:1.7-10: \"name\"
input.conf:2.9-14: \"string\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stradj.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_71
#AT_START_72
at_fn_group_banner 72 'strcat.at:17' \
  "String concatenation" "                           " 3
at_xfail=no
(
  $as_echo "72. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >input.conf <<'_ATEOF'
option id "a" " string";
_ATEOF


{ set +x
$as_echo "$at_srcdir/strcat.at:24: gcffmt input.conf
gcffmt -strcat input.conf"
at_fn_check_prepare_notrace 'an embedded newline' "strcat.at:24"
( $at_check_trace; gcffmt input.conf
gcffmt -strcat input.conf
) >>"$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 ".option: \"id\" \"a\" \" string\"
.option: \"id\" \"a string\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/strcat.at:24"
$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 'enum.at:17' \
  "Enumerate nodes" "                                " 4
at_xfail=no
(
  $as_echo "73. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/enum.at:20: gcfenum \$abs_srcdir/gcf1.conf"
at_fn_check_prepare_dynamic "gcfenum $abs_srcdir/gcf1.conf" "enum.at:20"
( $at_check_trace; gcfenum $abs_srcdir/gcf1.conf
) >>"$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 ".scalar
.listvar
.compound
.mailbox
.mailbox.mailbox-pattern
.mailbox.mailbox-type
.logging
.logging.syslog
.logging.facility
.program=\"foo\"
.program=\"foo\".logging
.program=\"foo\".logging.syslog
.program=\"foo\".logging.facility
.program=\"foo\".scalar
.program=\"bar\"
.program=\"bar\".logging
.program=\"bar\".logging.syslog
.program=\"bar\".logging.facility
.program=\"bar\".logging.tag
.program=\"bar\".scalar
" | \
  $at_diff - "$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
  $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 'peek00.at:17' \
  "Peek" "                                           " 5
at_xfail=no
(
  $as_echo "74. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/peek00.at:20: gcfpeek \$abs_srcdir/gcf1.conf .scalar"
at_fn_check_prepare_dynamic "gcfpeek $abs_srcdir/gcf1.conf .scalar" "peek00.at:20"
( $at_check_trace; gcfpeek $abs_srcdir/gcf1.conf .scalar
) >>"$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 ".scalar: \"yes\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/peek00.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 'peek01.at:17' \
  "Nested nodes" "                                   " 5
at_xfail=no
(
  $as_echo "75. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/peek01.at:20: gcfpeek \$abs_srcdir/gcf1.conf .program=\"foo\".scalar"
at_fn_check_prepare_dynamic "gcfpeek $abs_srcdir/gcf1.conf .program=\"foo\".scalar" "peek01.at:20"
( $at_check_trace; gcfpeek $abs_srcdir/gcf1.conf .program="foo".scalar
) >>"$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 ".program=\"foo\".scalar: \"no\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/peek01.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
$as_echo "$at_srcdir/peek01.at:25: gcfpeek \$abs_srcdir/gcf1.conf .program=\"bar\".scalar"
at_fn_check_prepare_dynamic "gcfpeek $abs_srcdir/gcf1.conf .program=\"bar\".scalar" "peek01.at:25"
( $at_check_trace; gcfpeek $abs_srcdir/gcf1.conf .program="bar".scalar
) >>"$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 ".program=\"bar\".scalar: \"25\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/peek01.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_75
#AT_START_76
at_fn_group_banner 76 'peek02.at:17' \
  "Block nodes" "                                    " 5
at_xfail=no
(
  $as_echo "76. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/peek02.at:20: gcfpeek \$abs_srcdir/gcf1.conf .logging"
at_fn_check_prepare_dynamic "gcfpeek $abs_srcdir/gcf1.conf .logging" "peek02.at:20"
( $at_check_trace; gcfpeek $abs_srcdir/gcf1.conf .logging
) >>"$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 ".logging.syslog: \"yes\"
.logging.facility: \"mail\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/peek02.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_76
#AT_START_77
at_fn_group_banner 77 'peek03.at:17' \
  "Nested blocks" "                                  " 5
at_xfail=no
(
  $as_echo "77. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/peek03.at:20: gcfpeek \$abs_srcdir/gcf1.conf .program=foo.logging"
at_fn_check_prepare_dynamic "gcfpeek $abs_srcdir/gcf1.conf .program=foo.logging" "peek03.at:20"
( $at_check_trace; gcfpeek $abs_srcdir/gcf1.conf .program=foo.logging
) >>"$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 ".program=\"foo\".logging.syslog: \"yes\"
.program=\"foo\".logging.facility: \"local1\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/peek03.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
$as_echo "$at_srcdir/peek03.at:26: gcfpeek \$abs_srcdir/gcf1.conf .program=bar.logging"
at_fn_check_prepare_dynamic "gcfpeek $abs_srcdir/gcf1.conf .program=bar.logging" "peek03.at:26"
( $at_check_trace; gcfpeek $abs_srcdir/gcf1.conf .program=bar.logging
) >>"$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 ".program=\"bar\".logging.syslog: \"no\"
.program=\"bar\".logging.facility: \"local2\"
.program=\"bar\".logging.tag: \"baz\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/peek03.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_77
#AT_START_78
at_fn_group_banner 78 'glob00.at:17' \
  "Leading wildcard" "                               " 6
at_xfail=no
(
  $as_echo "78. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/glob00.at:20: gcfpeek -match \$abs_srcdir/gcf1.conf .*.facility"
at_fn_check_prepare_dynamic "gcfpeek -match $abs_srcdir/gcf1.conf .*.facility" "glob00.at:20"
( $at_check_trace; gcfpeek -match $abs_srcdir/gcf1.conf .*.facility
) >>"$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 ".logging.facility: \"mail\"
.program=\"foo\".logging.facility: \"local1\"
.program=\"bar\".logging.facility: \"local2\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glob00.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_78
#AT_START_79
at_fn_group_banner 79 'glob01.at:17' \
  "Trailing wildcard" "                              " 6
at_xfail=no
(
  $as_echo "79. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/glob01.at:20: gcfpeek -nodesc -match \$abs_srcdir/gcf1.conf .logging.*|sed 's/ *\$//'"
at_fn_check_prepare_notrace 'a shell pipeline' "glob01.at:20"
( $at_check_trace; gcfpeek -nodesc -match $abs_srcdir/gcf1.conf .logging.*|sed 's/ *$//'
) >>"$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 ".logging:
.logging.syslog: \"yes\"
.logging.facility: \"mail\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glob01.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 'glob02.at:17' \
  "Intermediate wildcard" "                          " 6
at_xfail=no
(
  $as_echo "80. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/glob02.at:20: gcfpeek -match \$abs_srcdir/gcf1.conf .program=\"foo\".*.facility"
at_fn_check_prepare_dynamic "gcfpeek -match $abs_srcdir/gcf1.conf .program=\"foo\".*.facility" "glob02.at:20"
( $at_check_trace; gcfpeek -match $abs_srcdir/gcf1.conf .program="foo".*.facility
) >>"$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 ".program=\"foo\".logging.facility: \"local1\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glob02.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 'glob03.at:17' \
  "Multiple wildcards" "                             " 6
at_xfail=no
(
  $as_echo "81. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >test.cf <<'_ATEOF'

foo {
  bar {
    baz {
      quz {
        quux 10;
      }
    }
  }
}
foo {
  bar {
    quz {
      quux 9;
    }
  }
}
foo {
  bar {
    baz {
      quz {
        mux 8;
      }
    }
  }
}
_ATEOF


{ set +x
$as_echo "$at_srcdir/glob03.at:48: gcfpeek -match test.cf .*.baz.*.quux"
at_fn_check_prepare_trace "glob03.at:48"
( $at_check_trace; gcfpeek -match test.cf .*.baz.*.quux
) >>"$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 ".foo.bar.baz.quz.quux: \"10\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glob03.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_81
#AT_START_82
at_fn_group_banner 82 'glob04.at:17' \
  "Subtree - asterisk" "                             " 6
at_xfail=no
(
  $as_echo "82. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >test.cf <<'_ATEOF'
text "string";
block {
	foo {
		quux 1;
	};
	bar 123;
	baz {
		quux 2;
	}
	crex {
		quux 3;
	}
}
_ATEOF


{ set +x
$as_echo "$at_srcdir/glob04.at:35: gcfpeek -match -root=block test.cf '.*.quux'"
at_fn_check_prepare_trace "glob04.at:35"
( $at_check_trace; gcfpeek -match -root=block test.cf '.*.quux'
) >>"$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 ".block.foo.quux: \"1\"
.block.baz.quux: \"2\"
.block.crex.quux: \"3\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glob04.at:35"
$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 'glob05.at:17' \
  "Subtree - percent" "                              " 6
at_xfail=no
(
  $as_echo "83. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >test.cf <<'_ATEOF'
text "string";
block {
	foo {
		quux 1;
	};
	bar 123;
	baz {
		quux 2;
	}
	crex {
		quux 3;
	}
}
_ATEOF


{ set +x
$as_echo "$at_srcdir/glob05.at:35: gcfpeek -match -root=block test.cf '.%.quux'"
at_fn_check_prepare_trace "glob05.at:35"
( $at_check_trace; gcfpeek -match -root=block test.cf '.%.quux'
) >>"$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 ".block.foo.quux: \"1\"
.block.baz.quux: \"2\"
.block.crex.quux: \"3\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glob05.at:35"
$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 'reduce00.at:17' \
  "Simple statement" "                               " 7
at_xfail=no
(
  $as_echo "84. $at_setup_line: testing $at_desc ..."
  $at_traceon




cat >test.cf <<'_ATEOF'
scalar a;
scalar b;
_ATEOF

{ set +x
$as_echo "$at_srcdir/reduce00.at:20: gcffmt -reduce ./test.cf"
at_fn_check_prepare_trace "reduce00.at:20"
( $at_check_trace; gcffmt -reduce ./test.cf
) >>"$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 ".scalar: \"b\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reduce00.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 'reduce01.at:17' \
  "Block statement" "                                " 7
at_xfail=no
(
  $as_echo "85. $at_setup_line: testing $at_desc ..."
  $at_traceon




cat >test.cf <<'_ATEOF'

block "a" {
  scalar a;
  foo 1;
}
block "b" {
  foo 3;
  scalar b;
}
block "a" {
  scalar b;
}
_ATEOF

{ set +x
$as_echo "$at_srcdir/reduce01.at:20: gcffmt -reduce ./test.cf"
at_fn_check_prepare_trace "reduce01.at:20"
( $at_check_trace; gcffmt -reduce ./test.cf
) >>"$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 ".block=\"b\".foo: \"3\"
.block=\"b\".scalar: \"b\"
.block=\"a\".foo: \"1\"
.block=\"a\".scalar: \"b\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reduce01.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 'reduce02.at:17' \
  "Nested block statement" "                         " 7
at_xfail=no
(
  $as_echo "86. $at_setup_line: testing $at_desc ..."
  $at_traceon




cat >test.cf <<'_ATEOF'

block "a" {
  scalar a;
  foo 1;
  subblock {
    foo x;
    bar y;
  }
}
block "b" {
  foo 3;
  scalar b;
}
block "a" {
  scalar b;
  subblock {
    baz z;
    foo k;
  }
}
_ATEOF

{ set +x
$as_echo "$at_srcdir/reduce02.at:20: gcffmt -reduce ./test.cf"
at_fn_check_prepare_trace "reduce02.at:20"
( $at_check_trace; gcffmt -reduce ./test.cf
) >>"$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 ".block=\"b\".foo: \"3\"
.block=\"b\".scalar: \"b\"
.block=\"a\".foo: \"1\"
.block=\"a\".scalar: \"b\"
.block=\"a\".subblock.bar: \"y\"
.block=\"a\".subblock.baz: \"z\"
.block=\"a\".subblock.foo: \"k\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reduce02.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 'reduce03.at:17' \
  "Table driven reduction" "                         " 7
at_xfail=no
(
  $as_echo "87. $at_setup_line: testing $at_desc ..."
  $at_traceon




cat >test.cf <<'_ATEOF'

scalar bar;
listvar (1, 2);
listvar foo;
logging {
  facility local1;
  tag prog;
}
listvar (3, 4);
scalar baz;
logging {
  facility mail;
}
_ATEOF

{ set +x
$as_echo "$at_srcdir/reduce03.at:20: gcfset -reduce ./test.cf"
at_fn_check_prepare_trace "reduce03.at:20"
( $at_check_trace; gcfset -reduce ./test.cf
) >>"$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 "Global settings:
scalar = baz
listvar = \"1\" \"2\" \"foo\" \"3\" \"4\"
logging: 0/mail/prog/0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reduce03.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 'sort00.at:17' \
  "Sort" "                                           " 8
at_xfail=no
(
  $as_echo "88. $at_setup_line: testing $at_desc ..."
  $at_traceon




cat >test.cf <<'_ATEOF'
b 1;
a {
	x 5;
	b 4;
	z 1;
}
z 10;
k {
	i 10;
	a 1;
	y 4;
	o 3;
}
f {
	a 1;
	b 2;
}
g 1;
_ATEOF

{ set +x
$as_echo "$at_srcdir/sort00.at:20: gcffmt -sort ./test.cf"
at_fn_check_prepare_trace "sort00.at:20"
( $at_check_trace; gcffmt -sort ./test.cf
) >>"$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 ".a.b: \"4\"
.a.x: \"5\"
.a.z: \"1\"
.b: \"1\"
.f.a: \"1\"
.f.b: \"2\"
.g: \"1\"
.k.a: \"1\"
.k.i: \"10\"
.k.o: \"3\"
.k.y: \"4\"
.z: \"10\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort00.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 'sort01.at:17' \
  "Stable sort" "                                    " 8
at_xfail=no
(
  $as_echo "89. $at_setup_line: testing $at_desc ..."
  $at_traceon




cat >test.cf <<'_ATEOF'
a 10;
a 2;
a 31;
a 4;
a 13;
_ATEOF

{ set +x
$as_echo "$at_srcdir/sort01.at:20: gcffmt -sort ./test.cf"
at_fn_check_prepare_trace "sort01.at:20"
( $at_check_trace; gcffmt -sort ./test.cf
) >>"$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 ".a: \"10\"
.a: \"2\"
.a: \"31\"
.a: \"4\"
.a: \"13\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort01.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 'incl00.at:17' \
  "Include path" "                                   " 9
at_xfail=no
(
  $as_echo "90. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/incl00.at:20:
mkdir include
cat >include/1.inc <<'_ATEOF'
this true;
_ATEOF


cat >test.cf <<'_ATEOF'

before 1;
#include <1.inc>
after 1;
_ATEOF


gcffmt -I\`pwd\`/include ./test.cf
"
at_fn_check_prepare_notrace 'a `...` command substitution' "incl00.at:20"
( $at_check_trace;
mkdir include
cat >include/1.inc <<'_ATEOF'
this true;
_ATEOF


cat >test.cf <<'_ATEOF'

before 1;
#include <1.inc>
after 1;
_ATEOF


gcffmt -I`pwd`/include ./test.cf

) >>"$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 ".before: \"1\"
.this: \"true\"
.after: \"1\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/incl00.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_90
#AT_START_91
at_fn_group_banner 91 'incl01.at:17' \
  "Recursive inclusion" "                            " 9
at_xfail=no
(
  $as_echo "91. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/incl01.at:20:
cat >a.inc <<'_ATEOF'
this true;
#include \"b.inc\"
_ATEOF


cat >b.inc <<'_ATEOF'
#include \"a.inc\"
_ATEOF


cat >test.cf <<'_ATEOF'
before 1;
#include \"a.inc\"
after 1;
_ATEOF


gcffmt ./test.cf
"
at_fn_check_prepare_notrace 'an embedded newline' "incl01.at:20"
( $at_check_trace;
cat >a.inc <<'_ATEOF'
this true;
#include "b.inc"
_ATEOF


cat >b.inc <<'_ATEOF'
#include "a.inc"
_ATEOF


cat >test.cf <<'_ATEOF'
before 1;
#include "a.inc"
after 1;
_ATEOF


gcffmt ./test.cf

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; $as_echo "./b.inc:1: Recursive inclusion
./test.cf:2: \`./a.inc' already included here
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/incl01.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 'incl02.at:17' \
  "Include once" "                                   " 9
at_xfail=no
(
  $as_echo "92. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/incl02.at:20:
cat >a.inc <<'_ATEOF'
a true;
_ATEOF


cat >test1.cf <<'_ATEOF'
before 1;
#include \"a.inc\"
#include \"a.inc\"
after 1;
_ATEOF


cat >test2.cf <<'_ATEOF'
before 1;
#include_once \"a.inc\"
#include_once \"a.inc\"
after 1;
_ATEOF


gcffmt ./test1.cf
echo ==
gcffmt ./test2.cf
"
at_fn_check_prepare_notrace 'an embedded newline' "incl02.at:20"
( $at_check_trace;
cat >a.inc <<'_ATEOF'
a true;
_ATEOF


cat >test1.cf <<'_ATEOF'
before 1;
#include "a.inc"
#include "a.inc"
after 1;
_ATEOF


cat >test2.cf <<'_ATEOF'
before 1;
#include_once "a.inc"
#include_once "a.inc"
after 1;
_ATEOF


gcffmt ./test1.cf
echo ==
gcffmt ./test2.cf

) >>"$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 ".before: \"1\"
.a: \"true\"
.a: \"true\"
.after: \"1\"
==
.before: \"1\"
.a: \"true\"
.after: \"1\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/incl02.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 'incl03.at:17' \
  "Wildcard inclusion" "                             " 9
at_xfail=no
(
  $as_echo "93. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/incl03.at:20:
cat >i1.inc <<'_ATEOF'
i1 included;
_ATEOF


cat >i2.inc <<'_ATEOF'
i2 included;
_ATEOF


cat >i3.inc <<'_ATEOF'
i3 included;
_ATEOF


cat >test.cf <<'_ATEOF'
before 1;
#include \"i*.inc\"
after 1;
_ATEOF


gcffmt ./test.cf
"
at_fn_check_prepare_notrace 'an embedded newline' "incl03.at:20"
( $at_check_trace;
cat >i1.inc <<'_ATEOF'
i1 included;
_ATEOF


cat >i2.inc <<'_ATEOF'
i2 included;
_ATEOF


cat >i3.inc <<'_ATEOF'
i3 included;
_ATEOF


cat >test.cf <<'_ATEOF'
before 1;
#include "i*.inc"
after 1;
_ATEOF


gcffmt ./test.cf

) >>"$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 ".before: \"1\"
.i1: \"included\"
.i2: \"included\"
.i3: \"included\"
.after: \"1\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/incl03.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 'parser-meta1.at:17' \
  "MeTA1-style parser" "                             " 10
at_xfail=no
(
  $as_echo "94. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/parser-meta1.at:20: gcffmt -type=meta1 \$abs_srcdir/meta1.conf"
at_fn_check_prepare_dynamic "gcffmt -type=meta1 $abs_srcdir/meta1.conf" "parser-meta1.at:20"
( $at_check_trace; gcffmt -type=meta1 $abs_srcdir/meta1.conf
) >>"$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 ".hostname: \"host.example.org\"
.smtps.greeting: \"220 example.org ESMTP Tossudament alcats\\r\\n\"
.smtps.log_level: \"12\"
.smtps.log.facility: \"mail\"
.smtps.log.ident: \"smtps\"
.smtps.flags: (\"8bitmime\", \"access\")
.smtps.CDB_gid: \"2262\"
.smtps.wait_for_server: \"4\"
.smtps.listen_socket.type: \"inet\"
.smtps.listen_socket.port: \"25\"
.smtps.start_action: \"pass\"
.smtps.pass_fd_socket: \"smtps/smtpsfd\"
.smtps.user: \"meta1s\"
.smtps.path: \"/usr/local/libexec/smtps\"
.smtps.arguments: \"smtps -f /etc/meta1/meta1.conf\"
.smtps.policy_milter.socket.type: \"inet\"
.smtps.policy_milter.socket.address: \"127.0.0.1\"
.smtps.policy_milter.socket.port: \"3333\"
.smtps.policy_milter.timeout: \"1800s\"
.smtps.policy_milter.flags: (\"accept_but_reconnect\")
.smtps.io_timeout: \"300s\"
.smtps.module_timeout: \"1000s\"
.smtps.auth.flags: (\"noanonymous\")
.smtps=\"MSA\".log_level: \"11\"
.smtps=\"MSA\".log.facility: \"mail\"
.smtps=\"MSA\".log.ident: \"MSA\"
.smtps=\"MSA\".CDB_gid: \"2262\"
.smtps=\"MSA\".listen_socket.type: \"inet\"
.smtps=\"MSA\".listen_socket.port: \"587\"
.smtps=\"MSA\".start_action: \"pass\"
.smtps=\"MSA\".pass_fd_socket: \"smtps/msafd\"
.smtps=\"MSA\".user: \"meta1s\"
.smtps=\"MSA\".path: \"/usr/local/libexec/smtps\"
.smtps=\"MSA\".arguments: \"smtps -I 1 -N MSA -f /etc/meta1/meta1.conf\"
.smtpc.log_level: \"12\"
.smtpc.log.facility: \"mail\"
.smtpc.log.ident: \"smtpc\"
.smtpc.flags: (\"read_QUIT_reply\", \"separate_final_dot_and_QUIT\", \"talk_to_myself\")
.smtpc.LMTP_socket: \"lmtpsock\"
.smtpc.wait_for_server: \"4\"
.smtpc.start_action: \"wait\"
.smtpc.user: \"meta1c\"
.smtpc.path: \"/usr/local/libexec/smtpc\"
.smtpc.arguments: \"smtpc -f /etc/meta1/meta1.conf\"
.qmgr.log_level: \"12\"
.qmgr.log.facility: \"mail\"
.qmgr.log.ident: \"qmgr\"
.qmgr.wait_for_server: \"4\"
.qmgr.wait_for_client: \"3\"
.qmgr.start_action: \"wait\"
.qmgr.user: \"meta1q\"
.qmgr.restart_dependencies: (\"smtps\", \"MSA\", \"smtpc\")
.qmgr.path: \"/usr/local/libexec/qmgr\"
.qmgr.arguments: \"qmgr -f /etc/meta1/meta1.conf\"
.qmgr.control_socket: \"qmgr/sock\"
.smar.DNS.nameservers: (\"10.11.0.1\", \"10.12.0.1\")
.smar.DNS.flags: \"use_connect\"
.smar.log_level: \"12\"
.smar.log.facility: \"mail\"
.smar.log.ident: \"smar\"
.smar.nameserver: \"10.11.0.1\"
.smar.start_action: \"wait\"
.smar.user: \"meta1m\"
.smar.restart_dependencies: (\"smtps\", \"MSA\", \"qmgr\")
.smar.path: \"/usr/local/libexec/smar\"
.smar.arguments: \"smar -f /etc/meta1/meta1.conf\"
.smar.map=\"mtdb\".type: \"hash\"
.smar.map=\"mtdb\".file: \"mt.db\"
.smar.mailertable.name: \"mtdb\"
.smar.mailertable.flags: (\"full_address\", \"domain\")
.smar.map=\"password\".type: \"passwd\"
.smar.map=\"userdb\".type: \"socket\"
.smar.map=\"userdb\".path: \"/var/spool/meta1/smap/userdb\"
.smar.map=\"userdb\".mapname: \"userdb\"
.smar.map=\"userdb\".min_connections: \"10\"
.smar.map=\"userdb\".max_connections: \"1024\"
.smar.map=\"userdb\".timeout: \"5\"
.smar.map=\"locusr\".type: \"sequence\"
.smar.map=\"locusr\".maps: (\"password\", \"userdb\")
.smar.local_user_map.name: \"locusr\"
.smar.local_user_map.flags: (\"localpart\", \"local_domains\")
.smar.map=\"lum\".type: \"socket\"
.smar.map=\"lum\".path: \"/var/spool/meta1/smap/userdb\"
.smar.map=\"lum\".mapname: \"alias\"
.smar.map=\"lum\".min_connections: \"10\"
.smar.map=\"lum\".max_connections: \"1024\"
.smar.map=\"lum\".timeout: \"6\"
.smar.map=\"stdal\".file: \"aliases.db\"
.smar.map=\"stdal\".type: \"hash\"
.smar.map=\"ali\".type: \"sequence\"
.smar.map=\"ali\".maps: (\"lum\", \"stdal\")
.smar.aliases.name: \"ali\"
.smar.aliases.flags: (\"localpart\", \"local_domains\")
.smar.map=\"acc\".type: \"socket\"
.smar.map=\"acc\".address: \"127.0.0.1\"
.smar.map=\"acc\".port: \"1025\"
.smar.map=\"acc\".mapname: \"access\"
.smar.access_map.name: \"acc\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/parser-meta1.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 'locus-meta1.at:17' \
  "Locations: meta1" "                               " 10
at_xfail=no
(
  $as_echo "95. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >test.cf <<'_ATEOF'

string = val;
mstr = "multi"
       "line"
       " string";
list = { foo, bar,
         baz };
_ATEOF


{ set +x
$as_echo "$at_srcdir/locus-meta1.at:29: gcffmt -type=meta1 -locus test.cf"
at_fn_check_prepare_trace "locus-meta1.at:29"
( $at_check_trace; gcffmt -type=meta1 -locus test.cf
) >>"$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 "test.cf:2.1-12: .string: \"val\"
test.cf:3.1-5.16: .mstr: \"multiline string\"
test.cf:6.1-7.14: .list: (\"foo\", \"bar\", \"baz\")
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/locus-meta1.at:29"
$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 'join.at:17' \
  "Join" "                                           " 11
at_xfail=no
(
  $as_echo "96. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >1.cf <<'_ATEOF'
a 1;
b 2;
c {
 a x;
 b y;
}
_ATEOF


cat >2.cf <<'_ATEOF'
x 1;
y 2;
z {
 x 3;
 y 4;
}
_ATEOF


{ set +x
$as_echo "$at_srcdir/join.at:36: gcffmt -locus 1.cf 2.cf"
at_fn_check_prepare_trace "join.at:36"
( $at_check_trace; gcffmt -locus 1.cf 2.cf
) >>"$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 "1.cf:1.1-3: .a: \"1\"
1.cf:2.1-3: .b: \"2\"
1.cf:4.2-4: .c.a: \"x\"
1.cf:5.2-4: .c.b: \"y\"
2.cf:1.1-3: .x: \"1\"
2.cf:2.1-3: .y: \"2\"
2.cf:4.2-4: .z.x: \"3\"
2.cf:5.2-4: .z.y: \"4\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/join.at:36"
$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 'cfhelp.at:17' \
  "Help" "                                           " 11
at_xfail=no
(
  $as_echo "97. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/cfhelp.at:20: gcfset -cfhelp"
at_fn_check_prepare_trace "cfhelp.at:20"
( $at_check_trace; gcfset -cfhelp
) >>"$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 "# Sample configuration file structure.

# Scalar string
scalar <label: string>;

# Configure logging logging
logging {
  # Send to syslog
  syslog <arg: boolean>;

  # Set logging facility
  facility <name: string>;

  # Tag logging messages with this string
  tag <label: string>;

  # Prefix each message with its priority
  print-priority <arg: boolean>;
}

# Mailbox configuration
mailbox {
  # Default mailbox pattern
  mailbox-pattern <arg: string>;

  # Default mailbox type
  mailbox-type <arg: string>;
}

# Subprogram configuration
program <name: string> {
  # Scalar string
  scalar <label: string>;

  # Configure logging logging
  logging {
    # Send to syslog
    syslog <arg: boolean>;

    # Set logging facility
    facility <name: string>;

    # Tag logging messages with this string
    tag <label: string>;

    # Prefix each message with its priority
    print-priority <arg: boolean>;
  }
}

# list variable
listvar <arg: list of string>;
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/cfhelp.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 'set.at:17' \
  "Set values" "                                     " 11
at_xfail=no
(
  $as_echo "98. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/set.at:20: gcfset \$abs_srcdir/gcf1.conf 2>err||exit \$?
sed 's|^.*/gcf1.conf||' err >&2"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:20"
( $at_check_trace; gcfset $abs_srcdir/gcf1.conf 2>err||exit $?
sed 's|^.*/gcf1.conf||' err >&2
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; $as_echo ":25.1-8: Unknown keyword
" | \
  $at_diff - "$at_stderr" || at_failed=:
echo >>"$at_stdout"; $as_echo "Global settings:
scalar = yes
listvar = \"a\" \"2\" \"b\" \"c\"
logging: 1/mail/(null)/0
Programs configured: 2
Program foo:
scalar = no
logging: 1/local1/(null)/0
Program bar:
scalar = 25
logging: 0/local2/baz/0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.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 'vercmp.at:17' \
  "Version comparator" "                             " 11
at_xfail=no
(
  $as_echo "99. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
$as_echo "$at_srcdir/vercmp.at:20: gcfver 1.0 1.0"
at_fn_check_prepare_trace "vercmp.at:20"
( $at_check_trace; gcfver 1.0 1.0
) >>"$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/vercmp.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:21: gcfver 1.1 1.0"
at_fn_check_prepare_trace "vercmp.at:21"
( $at_check_trace; gcfver 1.1 1.0
) >>"$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 3 $at_status "$at_srcdir/vercmp.at:21"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:22: gcfver 2.0 1.0"
at_fn_check_prepare_trace "vercmp.at:22"
( $at_check_trace; gcfver 2.0 1.0
) >>"$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 3 $at_status "$at_srcdir/vercmp.at:22"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:23: gcfver 1.0 1.1"
at_fn_check_prepare_trace "vercmp.at:23"
( $at_check_trace; gcfver 1.0 1.1
) >>"$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 2 $at_status "$at_srcdir/vercmp.at:23"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:24: gcfver 1.0 2.0"
at_fn_check_prepare_trace "vercmp.at:24"
( $at_check_trace; gcfver 1.0 2.0
) >>"$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 2 $at_status "$at_srcdir/vercmp.at:24"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:25: gcfver 1.0a 1.0a"
at_fn_check_prepare_trace "vercmp.at:25"
( $at_check_trace; gcfver 1.0a 1.0a
) >>"$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/vercmp.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:26: gcfver 1.0b 1.0a"
at_fn_check_prepare_trace "vercmp.at:26"
( $at_check_trace; gcfver 1.0b 1.0a
) >>"$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 3 $at_status "$at_srcdir/vercmp.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:27: gcfver 1.0a 1.0b"
at_fn_check_prepare_trace "vercmp.at:27"
( $at_check_trace; gcfver 1.0a 1.0b
) >>"$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 2 $at_status "$at_srcdir/vercmp.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:28: gcfver 1.0.1 1.0"
at_fn_check_prepare_trace "vercmp.at:28"
( $at_check_trace; gcfver 1.0.1 1.0
) >>"$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 3 $at_status "$at_srcdir/vercmp.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:29: gcfver 1.0.1 1.0.0"
at_fn_check_prepare_trace "vercmp.at:29"
( $at_check_trace; gcfver 1.0.1 1.0.0
) >>"$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 3 $at_status "$at_srcdir/vercmp.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:30: gcfver 1.0.0 1.0.1"
at_fn_check_prepare_trace "vercmp.at:30"
( $at_check_trace; gcfver 1.0.0 1.0.1
) >>"$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 2 $at_status "$at_srcdir/vercmp.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:31: gcfver 1.0.1a 1.0.0"
at_fn_check_prepare_trace "vercmp.at:31"
( $at_check_trace; gcfver 1.0.1a 1.0.0
) >>"$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 3 $at_status "$at_srcdir/vercmp.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:32: gcfver 1.0.1a 1.0.0a"
at_fn_check_prepare_trace "vercmp.at:32"
( $at_check_trace; gcfver 1.0.1a 1.0.0a
) >>"$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 3 $at_status "$at_srcdir/vercmp.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:33: gcfver 1.0.1a 1.0.0b"
at_fn_check_prepare_trace "vercmp.at:33"
( $at_check_trace; gcfver 1.0.1a 1.0.0b
) >>"$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 3 $at_status "$at_srcdir/vercmp.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
$as_echo "$at_srcdir/vercmp.at:34: gcfver 1.0.1a 1.0.1b"
at_fn_check_prepare_trace "vercmp.at:34"
( $at_check_trace; gcfver 1.0.1a 1.0.1b
) >>"$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 2 $at_status "$at_srcdir/vercmp.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_99
#AT_START_100
at_fn_group_banner 100 'grecs00.at:17' \
  "C comments in GRECS-style parser" "               " 11
at_xfail=no
(
  $as_echo "100. $at_setup_line: testing $at_desc ..."
  $at_traceon




cat >test.cf <<'_ATEOF'

zone "foo" {
	type delegation-only;
};

/*zone "net" {
	type delegation-only;
};*/
/**/
zone "bar" {
	type hint;
};
/* comment line */
zone "baz" {
	type delegation-only;
};
_ATEOF

{ set +x
$as_echo "$at_srcdir/grecs00.at:20: gcffmt ./test.cf"
at_fn_check_prepare_trace "grecs00.at:20"
( $at_check_trace; gcffmt ./test.cf
) >>"$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 ".zone=\"foo\".type: \"delegation-only\"
.zone=\"bar\".type: \"hint\"
.zone=\"baz\".type: \"delegation-only\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/grecs00.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 'empty.at:17' \
  "Empty input file" "                               " 11
at_xfail=no
(
  $as_echo "101. $at_setup_line: testing $at_desc ..."
  $at_traceon




: >test.cf
{ set +x
$as_echo "$at_srcdir/empty.at:20: gcffmt ./test.cf"
at_fn_check_prepare_trace "empty.at:20"
( $at_check_trace; gcffmt ./test.cf
) >>"$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 "
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/empty.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }






: >test.cf
{ set +x
$as_echo "$at_srcdir/empty.at:33: gcffmt -type=meta1 ./test.cf"
at_fn_check_prepare_trace "empty.at:33"
( $at_check_trace; gcffmt -type=meta1 ./test.cf
) >>"$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 "
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/empty.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }



: >test.cf
{ set +x
$as_echo "$at_srcdir/empty.at:40: gcffmt -type=path ./test.cf"
at_fn_check_prepare_trace "empty.at:40"
( $at_check_trace; gcffmt -type=path ./test.cf
) >>"$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 "
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/empty.at:40"
$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_101
#AT_START_102
at_fn_group_banner 102 'locus00.at:17' \
  "Scalar value" "                                   " 12
at_xfail=no
(
  $as_echo "102. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >test.cf <<'_ATEOF'

string val;
_ATEOF


{ set +x
$as_echo "$at_srcdir/locus00.at:24: gcfpeek -nopath -locus test.cf .string"
at_fn_check_prepare_trace "locus00.at:24"
( $at_check_trace; gcfpeek -nopath -locus test.cf .string
) >>"$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 "test.cf:2.8-10: \"val\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/locus00.at:24"
$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 'locus01.at:17' \
  "Multiline strings" "                              " 12
at_xfail=no
(
  $as_echo "103. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >test.cf <<'_ATEOF'

string <<EOT
a
multiline
  string
EOT;
_ATEOF


{ set +x
$as_echo "$at_srcdir/locus01.at:28: gcfpeek -nopath -locus test.cf .string"
at_fn_check_prepare_trace "locus01.at:28"
( $at_check_trace; gcfpeek -nopath -locus test.cf .string
) >>"$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 "test.cf:3.1-5.8: \"a\\nmultiline\\n  string\\n\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/locus01.at:28"
$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 'locus02.at:17' \
  "Adjacent quoted strings" "                        " 12
at_xfail=no
(
  $as_echo "104. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >test.cf <<'_ATEOF'

string "concatenated"
       " quoted"
       " strings";
_ATEOF


{ set +x
$as_echo "$at_srcdir/locus02.at:26: gcfpeek -nopath -locus -strcat test.cf .string
gcfpeek -nopath -locus -strcat -stradj test.cf .string"
at_fn_check_prepare_notrace 'an embedded newline' "locus02.at:26"
( $at_check_trace; gcfpeek -nopath -locus -strcat test.cf .string
gcfpeek -nopath -locus -strcat -stradj test.cf .string
) >>"$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 "test.cf:2.8-4.17: \"concatenated quoted strings\"
test.cf:2.9-4.16: \"concatenated quoted strings\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/locus02.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_104
#AT_START_105
at_fn_group_banner 105 'path-locus.at:17' \
  "Path" "                                           " 12
at_xfail=no
(
  $as_echo "105. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >test.cf <<'_ATEOF'
.scalar: "yes"
.listvar: ("a", "2", "b", "c")
.compound: "stmt" "2" "foo"
.mailbox.mailbox-pattern: \
  "maildir:/var/mail;type=index;param=2;user=${user}"
.mailbox.mailbox-type: "maildir"
.logging.syslog: "yes"
.logging.facility: "mail"
.program="foo".logging.syslog: "yes"
.program="foo".logging.facility: "local1"
.program="foo".scalar: "no"
.program="bar".logging.syslog: "no"
.program="bar".logging.facility: "local2"
.program="bar".logging.tag: "baz"
.program="bar".scalar: "25"
_ATEOF


{ set +x
$as_echo "$at_srcdir/path-locus.at:37: gcffmt -type=path -locus test.cf"
at_fn_check_prepare_trace "path-locus.at:37"
( $at_check_trace; gcffmt -type=path -locus test.cf
) >>"$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 "test.cf:1.1-14: .scalar: \"yes\"
test.cf:2.1-30: .listvar: (\"a\", \"2\", \"b\", \"c\")
test.cf:3.1-27: .compound: \"stmt\" \"2\" \"foo\"
test.cf:4.1-5.53: .mailbox.mailbox-pattern: \"maildir:/var/mail;type=index;param=2;user=\${user}\"
test.cf:6.1-32: .mailbox.mailbox-type: \"maildir\"
test.cf:7.1-22: .logging.syslog: \"yes\"
test.cf:8.1-25: .logging.facility: \"mail\"
test.cf:9.1-36: .program=\"foo\".logging.syslog: \"yes\"
test.cf:10.1-41: .program=\"foo\".logging.facility: \"local1\"
test.cf:11.1-27: .program=\"foo\".scalar: \"no\"
test.cf:12.1-35: .program=\"bar\".logging.syslog: \"no\"
test.cf:13.1-41: .program=\"bar\".logging.facility: \"local2\"
test.cf:14.1-33: .program=\"bar\".logging.tag: \"baz\"
test.cf:15.1-27: .program=\"bar\".scalar: \"25\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/path-locus.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
$as_echo "$at_srcdir/path-locus.at:55: gcffmt -type=path -locus -novalue test.cf"
at_fn_check_prepare_trace "path-locus.at:55"
( $at_check_trace; gcffmt -type=path -locus -novalue test.cf
) >>"$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 "test.cf:1.1-7: .scalar
test.cf:2.1-8: .listvar
test.cf:3.1-9: .compound
test.cf:4.1-24: .mailbox.mailbox-pattern
test.cf:6.1-21: .mailbox.mailbox-type
test.cf:7.1-15: .logging.syslog
test.cf:8.1-17: .logging.facility
test.cf:9.1-29: .program=\"foo\".logging.syslog
test.cf:10.1-31: .program=\"foo\".logging.facility
test.cf:11.1-21: .program=\"foo\".scalar
test.cf:12.1-29: .program=\"bar\".logging.syslog
test.cf:13.1-31: .program=\"bar\".logging.facility
test.cf:14.1-26: .program=\"bar\".logging.tag
test.cf:15.1-21: .program=\"bar\".scalar
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/path-locus.at:55"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
$as_echo "$at_srcdir/path-locus.at:73: gcffmt -type=path -locus -nopath test.cf"
at_fn_check_prepare_trace "path-locus.at:73"
( $at_check_trace; gcffmt -type=path -locus -nopath test.cf
) >>"$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 "test.cf:1.10-14: \"yes\"
test.cf:2.11-30: (\"a\", \"2\", \"b\", \"c\")
test.cf:3.12-27: \"stmt\" \"2\" \"foo\"
test.cf:5.3-53: \"maildir:/var/mail;type=index;param=2;user=\${user}\"
test.cf:6.24-32: \"maildir\"
test.cf:7.18-22: \"yes\"
test.cf:8.20-25: \"mail\"
test.cf:9.32-36: \"yes\"
test.cf:10.34-41: \"local1\"
test.cf:11.24-27: \"no\"
test.cf:12.32-35: \"no\"
test.cf:13.34-41: \"local2\"
test.cf:14.29-33: \"baz\"
test.cf:15.24-27: \"25\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/path-locus.at:73"
$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 'json00.at:16' \
  "Parser" "                                         " 13
at_xfail=no
(
  $as_echo "106. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >input.json <<'_ATEOF'

{
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 25,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    }
  ],
  "children": [],
  "spouse": null
}
_ATEOF


{ set +x
$as_echo "$at_srcdir/json00.at:46: json -indent=2 -precision=0 -file=input.json"
at_fn_check_prepare_trace "json00.at:46"
( $at_check_trace; json -indent=2 -precision=0 -file=input.json
) >>"$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 "{
  \"address\": {
    \"city\": \"New York\",
    \"postalCode\": \"10021-3100\",
    \"state\": \"NY\",
    \"streetAddress\": \"21 2nd Street\"
  },
  \"age\": 25,
  \"children\": [],
  \"firstName\": \"John\",
  \"isAlive\": true,
  \"lastName\": \"Smith\",
  \"phoneNumbers\": [
    {
      \"number\": \"212 555-1234\",
      \"type\": \"home\"
    },
    {
      \"number\": \"646 555-4567\",
      \"type\": \"office\"
    }
  ],
  \"spouse\": null
}
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/json00.at:46"
$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 'json01.at:16' \
  "Lookup" "                                         " 13
at_xfail=no
(
  $as_echo "107. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >input.json <<'_ATEOF'

{
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 25,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    }
  ],
  "children": [],
  "spouse": null
}
_ATEOF




{ set +x
$as_echo "$at_srcdir/json01.at:52:
echo age
json -indent=2 -precision=0 -file=input.json -search=age
echo =\$?


echo address
json -indent=2 -precision=0 -file=input.json -search=address
echo =\$?


echo address.postalCode
json -indent=2 -precision=0 -file=input.json -search=address.postalCode
echo =\$?


echo phoneNumbers.1.number
json -indent=2 -precision=0 -file=input.json -search=phoneNumbers.1.number
echo =\$?


echo x
json -indent=2 -precision=0 -file=input.json -search=x
echo =\$?


echo x.y.z
json -indent=2 -precision=0 -file=input.json -search=x.y.z
echo =\$?


echo phoneNumbers.2.number
json -indent=2 -precision=0 -file=input.json -search=phoneNumbers.2.number
echo =\$?


echo phoneNumbers.x
json -indent=2 -precision=0 -file=input.json -search=phoneNumbers.x
echo =\$?

"
at_fn_check_prepare_notrace 'an embedded newline' "json01.at:52"
( $at_check_trace;
echo age
json -indent=2 -precision=0 -file=input.json -search=age
echo =$?


echo address
json -indent=2 -precision=0 -file=input.json -search=address
echo =$?


echo address.postalCode
json -indent=2 -precision=0 -file=input.json -search=address.postalCode
echo =$?


echo phoneNumbers.1.number
json -indent=2 -precision=0 -file=input.json -search=phoneNumbers.1.number
echo =$?


echo x
json -indent=2 -precision=0 -file=input.json -search=x
echo =$?


echo x.y.z
json -indent=2 -precision=0 -file=input.json -search=x.y.z
echo =$?


echo phoneNumbers.2.number
json -indent=2 -precision=0 -file=input.json -search=phoneNumbers.2.number
echo =$?


echo phoneNumbers.x
json -indent=2 -precision=0 -file=input.json -search=phoneNumbers.x
echo =$?


) >>"$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 "age
25
=0
address
{
  \"city\": \"New York\",
  \"postalCode\": \"10021-3100\",
  \"state\": \"NY\",
  \"streetAddress\": \"21 2nd Street\"
}
=0
address.postalCode
\"10021-3100\"
=0
phoneNumbers.1.number
\"646 555-4567\"
=0
x
=4
x.y.z
=4
phoneNumbers.2.number
=4
phoneNumbers.x
=4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/json01.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_107
