1#! /bin/sh 2# Generated from testsuite.at by GNU Autoconf 2.69. 3# 4# Copyright (C) 2009-2012 Free Software Foundation, Inc. 5# 6# This test suite is free software; the Free Software Foundation gives 7# unlimited permission to copy, distribute and modify it. 8## -------------------- ## 9## M4sh Initialization. ## 10## -------------------- ## 11 12# Be more Bourne compatible 13DUALCASE=1; export DUALCASE # for MKS sh 14if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : 15 emulate sh 16 NULLCMD=: 17 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which 18 # is contrary to our usage. Disable this feature. 19 alias -g '${1+"$@"}'='"$@"' 20 setopt NO_GLOB_SUBST 21else 22 case `(set -o) 2>/dev/null` in #( 23 *posix*) : 24 set -o posix ;; #( 25 *) : 26 ;; 27esac 28fi 29 30 31as_nl=' 32' 33export as_nl 34# Printing a long string crashes Solaris 7 /usr/bin/printf. 35as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' 36as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo 37as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo 38# Prefer a ksh shell builtin over an external printf program on Solaris, 39# but without wasting forks for bash or zsh. 40if test -z "$BASH_VERSION$ZSH_VERSION" \ 41 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then 42 as_echo='print -r --' 43 as_echo_n='print -rn --' 44elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then 45 as_echo='printf %s\n' 46 as_echo_n='printf %s' 47else 48 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then 49 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' 50 as_echo_n='/usr/ucb/echo -n' 51 else 52 as_echo_body='eval expr "X$1" : "X\\(.*\\)"' 53 as_echo_n_body='eval 54 arg=$1; 55 case $arg in #( 56 *"$as_nl"*) 57 expr "X$arg" : "X\\(.*\\)$as_nl"; 58 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; 59 esac; 60 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" 61 ' 62 export as_echo_n_body 63 as_echo_n='sh -c $as_echo_n_body as_echo' 64 fi 65 export as_echo_body 66 as_echo='sh -c $as_echo_body as_echo' 67fi 68 69# The user is always right. 70if test "${PATH_SEPARATOR+set}" != set; then 71 PATH_SEPARATOR=: 72 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { 73 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || 74 PATH_SEPARATOR=';' 75 } 76fi 77 78 79# IFS 80# We need space, tab and new line, in precisely that order. Quoting is 81# there to prevent editors from complaining about space-tab. 82# (If _AS_PATH_WALK were called with IFS unset, it would disable word 83# splitting by setting IFS to empty value.) 84IFS=" "" $as_nl" 85 86# Find who we are. Look in the path if we contain no directory separator. 87as_myself= 88case $0 in #(( 89 *[\\/]* ) as_myself=$0 ;; 90 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 91for as_dir in $PATH 92do 93 IFS=$as_save_IFS 94 test -z "$as_dir" && as_dir=. 95 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break 96 done 97IFS=$as_save_IFS 98 99 ;; 100esac 101# We did not find ourselves, most probably we were run as `sh COMMAND' 102# in which case we are not to be found in the path. 103if test "x$as_myself" = x; then 104 as_myself=$0 105fi 106if test ! -f "$as_myself"; then 107 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 108 exit 1 109fi 110 111# Unset variables that we do not need and which cause bugs (e.g. in 112# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" 113# suppresses any "Segmentation fault" message there. '((' could 114# trigger a bug in pdksh 5.2.14. 115for as_var in BASH_ENV ENV MAIL MAILPATH 116do eval test x\${$as_var+set} = xset \ 117 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : 118done 119PS1='$ ' 120PS2='> ' 121PS4='+ ' 122 123# NLS nuisances. 124LC_ALL=C 125export LC_ALL 126LANGUAGE=C 127export LANGUAGE 128 129# CDPATH. 130(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 131 132if test "x$CONFIG_SHELL" = x; then 133 as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : 134 emulate sh 135 NULLCMD=: 136 # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which 137 # is contrary to our usage. Disable this feature. 138 alias -g '\${1+\"\$@\"}'='\"\$@\"' 139 setopt NO_GLOB_SUBST 140else 141 case \`(set -o) 2>/dev/null\` in #( 142 *posix*) : 143 set -o posix ;; #( 144 *) : 145 ;; 146esac 147fi 148" 149 as_required="as_fn_return () { (exit \$1); } 150as_fn_success () { as_fn_return 0; } 151as_fn_failure () { as_fn_return 1; } 152as_fn_ret_success () { return 0; } 153as_fn_ret_failure () { return 1; } 154 155exitcode=0 156as_fn_success || { exitcode=1; echo as_fn_success failed.; } 157as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } 158as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } 159as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } 160if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : 161 162else 163 exitcode=1; echo positional parameters were not saved. 164fi 165test x\$exitcode = x0 || exit 1 166test -x / || exit 1" 167 as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO 168 as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO 169 eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && 170 test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 171test \$(( 1 + 1 )) = 2 || exit 1" 172 if (eval "$as_required") 2>/dev/null; then : 173 as_have_required=yes 174else 175 as_have_required=no 176fi 177 if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : 178 179else 180 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 181as_found=false 182for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH 183do 184 IFS=$as_save_IFS 185 test -z "$as_dir" && as_dir=. 186 as_found=: 187 case $as_dir in #( 188 /*) 189 for as_base in sh bash ksh sh5; do 190 # Try only shells that exist, to save several forks. 191 as_shell=$as_dir/$as_base 192 if { test -f "$as_shell" || test -f "$as_shell.exe"; } && 193 { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : 194 CONFIG_SHELL=$as_shell as_have_required=yes 195 if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : 196 break 2 197fi 198fi 199 done;; 200 esac 201 as_found=false 202done 203$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && 204 { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : 205 CONFIG_SHELL=$SHELL as_have_required=yes 206fi; } 207IFS=$as_save_IFS 208 209 210 if test "x$CONFIG_SHELL" != x; then : 211 export CONFIG_SHELL 212 # We cannot yet assume a decent shell, so we have to provide a 213# neutralization value for shells without unset; and this also 214# works around shells that cannot unset nonexistent variables. 215# Preserve -v and -x to the replacement shell. 216BASH_ENV=/dev/null 217ENV=/dev/null 218(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV 219case $- in # (((( 220 *v*x* | *x*v* ) as_opts=-vx ;; 221 *v* ) as_opts=-v ;; 222 *x* ) as_opts=-x ;; 223 * ) as_opts= ;; 224esac 225exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} 226# Admittedly, this is quite paranoid, since all the known shells bail 227# out after a failed `exec'. 228$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 229exit 255 230fi 231 232 if test x$as_have_required = xno; then : 233 $as_echo "$0: This script requires a shell more modern than all" 234 $as_echo "$0: the shells that I found on your system." 235 if test x${ZSH_VERSION+set} = xset ; then 236 $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" 237 $as_echo "$0: be upgraded to zsh 4.3.4 or later." 238 else 239 $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, 240$0: including any error possibly output before this 241$0: message. Then install a modern shell, or manually run 242$0: the script under such a shell if you do have one." 243 fi 244 exit 1 245fi 246fi 247fi 248SHELL=${CONFIG_SHELL-/bin/sh} 249export SHELL 250# Unset more variables known to interfere with behavior of common tools. 251CLICOLOR_FORCE= GREP_OPTIONS= 252unset CLICOLOR_FORCE GREP_OPTIONS 253 254## --------------------- ## 255## M4sh Shell Functions. ## 256## --------------------- ## 257# as_fn_unset VAR 258# --------------- 259# Portably unset VAR. 260as_fn_unset () 261{ 262 { eval $1=; unset $1;} 263} 264as_unset=as_fn_unset 265 266# as_fn_set_status STATUS 267# ----------------------- 268# Set $? to STATUS, without forking. 269as_fn_set_status () 270{ 271 return $1 272} # as_fn_set_status 273 274# as_fn_exit STATUS 275# ----------------- 276# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. 277as_fn_exit () 278{ 279 set +e 280 as_fn_set_status $1 281 exit $1 282} # as_fn_exit 283 284# as_fn_mkdir_p 285# ------------- 286# Create "$as_dir" as a directory, including parents if necessary. 287as_fn_mkdir_p () 288{ 289 290 case $as_dir in #( 291 -*) as_dir=./$as_dir;; 292 esac 293 test -d "$as_dir" || eval $as_mkdir_p || { 294 as_dirs= 295 while :; do 296 case $as_dir in #( 297 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( 298 *) as_qdir=$as_dir;; 299 esac 300 as_dirs="'$as_qdir' $as_dirs" 301 as_dir=`$as_dirname -- "$as_dir" || 302$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ 303 X"$as_dir" : 'X\(//\)[^/]' \| \ 304 X"$as_dir" : 'X\(//\)$' \| \ 305 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || 306$as_echo X"$as_dir" | 307 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ 308 s//\1/ 309 q 310 } 311 /^X\(\/\/\)[^/].*/{ 312 s//\1/ 313 q 314 } 315 /^X\(\/\/\)$/{ 316 s//\1/ 317 q 318 } 319 /^X\(\/\).*/{ 320 s//\1/ 321 q 322 } 323 s/.*/./; q'` 324 test -d "$as_dir" && break 325 done 326 test -z "$as_dirs" || eval "mkdir $as_dirs" 327 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" 328 329 330} # as_fn_mkdir_p 331 332# as_fn_executable_p FILE 333# ----------------------- 334# Test if FILE is an executable regular file. 335as_fn_executable_p () 336{ 337 test -f "$1" && test -x "$1" 338} # as_fn_executable_p 339# as_fn_append VAR VALUE 340# ---------------------- 341# Append the text in VALUE to the end of the definition contained in VAR. Take 342# advantage of any shell optimizations that allow amortized linear growth over 343# repeated appends, instead of the typical quadratic growth present in naive 344# implementations. 345if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : 346 eval 'as_fn_append () 347 { 348 eval $1+=\$2 349 }' 350else 351 as_fn_append () 352 { 353 eval $1=\$$1\$2 354 } 355fi # as_fn_append 356 357# as_fn_arith ARG... 358# ------------------ 359# Perform arithmetic evaluation on the ARGs, and store the result in the 360# global $as_val. Take advantage of shells that can avoid forks. The arguments 361# must be portable across $(()) and expr. 362if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : 363 eval 'as_fn_arith () 364 { 365 as_val=$(( $* )) 366 }' 367else 368 as_fn_arith () 369 { 370 as_val=`expr "$@" || test $? -eq 1` 371 } 372fi # as_fn_arith 373 374 375# as_fn_error STATUS ERROR [LINENO LOG_FD] 376# ---------------------------------------- 377# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are 378# provided, also output the error to LOG_FD, referencing LINENO. Then exit the 379# script with STATUS, using 1 if that was 0. 380as_fn_error () 381{ 382 as_status=$1; test $as_status -eq 0 && as_status=1 383 if test "$4"; then 384 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 385 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 386 fi 387 $as_echo "$as_me: error: $2" >&2 388 as_fn_exit $as_status 389} # as_fn_error 390 391if expr a : '\(a\)' >/dev/null 2>&1 && 392 test "X`expr 00001 : '.*\(...\)'`" = X001; then 393 as_expr=expr 394else 395 as_expr=false 396fi 397 398if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then 399 as_basename=basename 400else 401 as_basename=false 402fi 403 404as_me=`$as_basename -- "$0" || 405$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ 406 X"$0" : 'X\(//\)$' \| \ 407 X"$0" : 'X\(/\)' \| . 2>/dev/null || 408$as_echo X/"$0" | 409 sed '/^.*\/\([^/][^/]*\)\/*$/{ 410 s//\1/ 411 q 412 } 413 /^X\/\(\/\/\)$/{ 414 s//\1/ 415 q 416 } 417 /^X\/\(\/\).*/{ 418 s//\1/ 419 q 420 } 421 s/.*/./; q'` 422 423if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then 424 as_dirname=dirname 425else 426 as_dirname=false 427fi 428 429# Avoid depending upon Character Ranges. 430as_cr_letters='abcdefghijklmnopqrstuvwxyz' 431as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' 432as_cr_Letters=$as_cr_letters$as_cr_LETTERS 433as_cr_digits='0123456789' 434as_cr_alnum=$as_cr_Letters$as_cr_digits 435 436 437 as_lineno_1=$LINENO as_lineno_1a=$LINENO 438 as_lineno_2=$LINENO as_lineno_2a=$LINENO 439 eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && 440 test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { 441 # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) 442 sed -n ' 443 p 444 /[$]LINENO/= 445 ' <$as_myself | 446 sed ' 447 s/[$]LINENO.*/&-/ 448 t lineno 449 b 450 :lineno 451 N 452 :loop 453 s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ 454 t loop 455 s/-\n.*// 456 ' >$as_me.lineno && 457 chmod +x "$as_me.lineno" || 458 { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } 459 460 # If we had to re-execute with $CONFIG_SHELL, we're ensured to have 461 # already done that, so ensure we don't try to do so again and fall 462 # in an infinite loop. This has already happened in practice. 463 _as_can_reexec=no; export _as_can_reexec 464 # Don't try to exec as it changes $[0], causing all sort of problems 465 # (the dirname of $[0] is not the place where we might find the 466 # original and so on. Autoconf is especially sensitive to this). 467 . "./$as_me.lineno" 468 # Exit status is that of the last command. 469 exit 470} 471 472ECHO_C= ECHO_N= ECHO_T= 473case `echo -n x` in #((((( 474-n*) 475 case `echo 'xy\c'` in 476 *c*) ECHO_T=' ';; # ECHO_T is single tab character. 477 xy) ECHO_C='\c';; 478 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null 479 ECHO_T=' ';; 480 esac;; 481*) 482 ECHO_N='-n';; 483esac 484 485rm -f conf$$ conf$$.exe conf$$.file 486if test -d conf$$.dir; then 487 rm -f conf$$.dir/conf$$.file 488else 489 rm -f conf$$.dir 490 mkdir conf$$.dir 2>/dev/null 491fi 492if (echo >conf$$.file) 2>/dev/null; then 493 if ln -s conf$$.file conf$$ 2>/dev/null; then 494 as_ln_s='ln -s' 495 # ... but there are two gotchas: 496 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. 497 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. 498 # In both cases, we have to default to `cp -pR'. 499 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || 500 as_ln_s='cp -pR' 501 elif ln conf$$.file conf$$ 2>/dev/null; then 502 as_ln_s=ln 503 else 504 as_ln_s='cp -pR' 505 fi 506else 507 as_ln_s='cp -pR' 508fi 509rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file 510rmdir conf$$.dir 2>/dev/null 511 512if mkdir -p . 2>/dev/null; then 513 as_mkdir_p='mkdir -p "$as_dir"' 514else 515 test -d ./-p && rmdir ./-p 516 as_mkdir_p=false 517fi 518 519as_test_x='test -x' 520as_executable_p=as_fn_executable_p 521 522# Sed expression to map a string onto a valid CPP name. 523as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" 524 525# Sed expression to map a string onto a valid variable name. 526as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" 527 528 529 530 531 532SHELL=${CONFIG_SHELL-/bin/sh} 533 534# How were we run? 535at_cli_args="$@" 536 537 538# Not all shells have the 'times' builtin; the subshell is needed to make 539# sure we discard the 'times: not found' message from the shell. 540at_times_p=false 541(times) >/dev/null 2>&1 && at_times_p=: 542 543# CLI Arguments to pass to the debugging scripts. 544at_debug_args= 545# -e sets to true 546at_errexit_p=false 547# Shall we be verbose? ':' means no, empty means yes. 548at_verbose=: 549at_quiet= 550# Running several jobs in parallel, 0 means as many as test groups. 551at_jobs=1 552at_traceon=: 553at_trace_echo=: 554at_check_filter_trace=: 555 556# Shall we keep the debug scripts? Must be `:' when the suite is 557# run by a debug script, so that the script doesn't remove itself. 558at_debug_p=false 559# Display help message? 560at_help_p=false 561# Display the version message? 562at_version_p=false 563# List test groups? 564at_list_p=false 565# --clean 566at_clean=false 567# Test groups to run 568at_groups= 569# Whether to rerun failed tests. 570at_recheck= 571# Whether a write failure occurred 572at_write_fail=0 573 574# The directory we run the suite in. Default to . if no -C option. 575at_dir=`pwd` 576# An absolute reference to this testsuite script. 577case $as_myself in 578 [\\/]* | ?:[\\/]* ) at_myself=$as_myself ;; 579 * ) at_myself=$at_dir/$as_myself ;; 580esac 581# Whether -C is in effect. 582at_change_dir=false 583 584# Whether to enable colored test results. 585at_color=no 586# List of the tested programs. 587at_tested='' 588# As many question marks as there are digits in the last test group number. 589# Used to normalize the test group numbers so that `ls' lists them in 590# numerical order. 591at_format='??' 592# Description of all the test groups. 593at_help_all="1;showdb.at:17;show db;showdb show; 5942;showinfo.at:17;show info;showinfo show; 5953;exact.at:17;exact;exact match; 5964;alnum.at:17;exact (alphanumeric only);exact match; 5975;allchars.at:17;exact (all chars);exact match; 5986;prefix.at:17;prefix;prefix match; 5997;suffix.at:17;suffix;suffix match; 6008;word.at:17;word;word match; 6019;define.at:17;define;define; 60210;ovshowdb.at:17;show db;showdb show virtual; 60311;ovexact.at:17;exact match;virtual exact match; 60412;ovdefnomime.at:17;define (no mime);virtual define; 60513;ovdefmime.at:17;define (mime);virtual define; 60614;vshowdb.at:17;show db;showdb show virtual; 60715;vexact.at:17;exact match;virtual exact match; 60816;vdefine.at:17;define;virtual define; 609" 610# List of the all the test groups. 611at_groups_all=`$as_echo "$at_help_all" | sed 's/;.*//'` 612 613# at_fn_validate_ranges NAME... 614# ----------------------------- 615# Validate and normalize the test group number contained in each variable 616# NAME. Leading zeroes are treated as decimal. 617at_fn_validate_ranges () 618{ 619 for at_grp 620 do 621 eval at_value=\$$at_grp 622 if test $at_value -lt 1 || test $at_value -gt 16; then 623 $as_echo "invalid test group: $at_value" >&2 624 exit 1 625 fi 626 case $at_value in 627 0*) # We want to treat leading 0 as decimal, like expr and test, but 628 # AS_VAR_ARITH treats it as octal if it uses $(( )). 629 # With XSI shells, ${at_value#${at_value%%[1-9]*}} avoids the 630 # expr fork, but it is not worth the effort to determine if the 631 # shell supports XSI when the user can just avoid leading 0. 632 eval $at_grp='`expr $at_value + 0`' ;; 633 esac 634 done 635} 636 637at_prev= 638for at_option 639do 640 # If the previous option needs an argument, assign it. 641 if test -n "$at_prev"; then 642 at_option=$at_prev=$at_option 643 at_prev= 644 fi 645 646 case $at_option in 647 *=?*) at_optarg=`expr "X$at_option" : '[^=]*=\(.*\)'` ;; 648 *) at_optarg= ;; 649 esac 650 651 # Accept the important Cygnus configure options, so we can diagnose typos. 652 653 case $at_option in 654 --help | -h ) 655 at_help_p=: 656 ;; 657 658 --list | -l ) 659 at_list_p=: 660 ;; 661 662 --version | -V ) 663 at_version_p=: 664 ;; 665 666 --clean | -c ) 667 at_clean=: 668 ;; 669 670 --color ) 671 at_color=always 672 ;; 673 --color=* ) 674 case $at_optarg in 675 no | never | none) at_color=never ;; 676 auto | tty | if-tty) at_color=auto ;; 677 always | yes | force) at_color=always ;; 678 *) at_optname=`echo " $at_option" | sed 's/^ //; s/=.*//'` 679 as_fn_error $? "unrecognized argument to $at_optname: $at_optarg" ;; 680 esac 681 ;; 682 683 --debug | -d ) 684 at_debug_p=: 685 ;; 686 687 --errexit | -e ) 688 at_debug_p=: 689 at_errexit_p=: 690 ;; 691 692 --verbose | -v ) 693 at_verbose=; at_quiet=: 694 ;; 695 696 --trace | -x ) 697 at_traceon='set -x' 698 at_trace_echo=echo 699 at_check_filter_trace=at_fn_filter_trace 700 ;; 701 702 [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9]) 703 at_fn_validate_ranges at_option 704 as_fn_append at_groups "$at_option$as_nl" 705 ;; 706 707 # Ranges 708 [0-9]- | [0-9][0-9]- | [0-9][0-9][0-9]- | [0-9][0-9][0-9][0-9]-) 709 at_range_start=`echo $at_option |tr -d X-` 710 at_fn_validate_ranges at_range_start 711 at_range=`$as_echo "$at_groups_all" | \ 712 sed -ne '/^'$at_range_start'$/,$p'` 713 as_fn_append at_groups "$at_range$as_nl" 714 ;; 715 716 -[0-9] | -[0-9][0-9] | -[0-9][0-9][0-9] | -[0-9][0-9][0-9][0-9]) 717 at_range_end=`echo $at_option |tr -d X-` 718 at_fn_validate_ranges at_range_end 719 at_range=`$as_echo "$at_groups_all" | \ 720 sed -ne '1,/^'$at_range_end'$/p'` 721 as_fn_append at_groups "$at_range$as_nl" 722 ;; 723 724 [0-9]-[0-9] | [0-9]-[0-9][0-9] | [0-9]-[0-9][0-9][0-9] | \ 725 [0-9]-[0-9][0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9] | \ 726 [0-9][0-9]-[0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9][0-9][0-9] | \ 727 [0-9][0-9][0-9]-[0-9][0-9][0-9] | \ 728 [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] | \ 729 [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] ) 730 at_range_start=`expr $at_option : '\(.*\)-'` 731 at_range_end=`expr $at_option : '.*-\(.*\)'` 732 if test $at_range_start -gt $at_range_end; then 733 at_tmp=$at_range_end 734 at_range_end=$at_range_start 735 at_range_start=$at_tmp 736 fi 737 at_fn_validate_ranges at_range_start at_range_end 738 at_range=`$as_echo "$at_groups_all" | \ 739 sed -ne '/^'$at_range_start'$/,/^'$at_range_end'$/p'` 740 as_fn_append at_groups "$at_range$as_nl" 741 ;; 742 743 # Directory selection. 744 --directory | -C ) 745 at_prev=--directory 746 ;; 747 --directory=* ) 748 at_change_dir=: 749 at_dir=$at_optarg 750 if test x- = "x$at_dir" ; then 751 at_dir=./- 752 fi 753 ;; 754 755 # Parallel execution. 756 --jobs | -j ) 757 at_jobs=0 758 ;; 759 --jobs=* | -j[0-9]* ) 760 if test -n "$at_optarg"; then 761 at_jobs=$at_optarg 762 else 763 at_jobs=`expr X$at_option : 'X-j\(.*\)'` 764 fi 765 case $at_jobs in *[!0-9]*) 766 at_optname=`echo " $at_option" | sed 's/^ //; s/[0-9=].*//'` 767 as_fn_error $? "non-numeric argument to $at_optname: $at_jobs" ;; 768 esac 769 ;; 770 771 # Keywords. 772 --keywords | -k ) 773 at_prev=--keywords 774 ;; 775 --keywords=* ) 776 at_groups_selected=$at_help_all 777 at_save_IFS=$IFS 778 IFS=, 779 set X $at_optarg 780 shift 781 IFS=$at_save_IFS 782 for at_keyword 783 do 784 at_invert= 785 case $at_keyword in 786 '!'*) 787 at_invert="-v" 788 at_keyword=`expr "X$at_keyword" : 'X!\(.*\)'` 789 ;; 790 esac 791 # It is on purpose that we match the test group titles too. 792 at_groups_selected=`$as_echo "$at_groups_selected" | 793 grep -i $at_invert "^[1-9][^;]*;.*[; ]$at_keyword[ ;]"` 794 done 795 # Smash the keywords. 796 at_groups_selected=`$as_echo "$at_groups_selected" | sed 's/;.*//'` 797 as_fn_append at_groups "$at_groups_selected$as_nl" 798 ;; 799 --recheck) 800 at_recheck=: 801 ;; 802 803 *=*) 804 at_envvar=`expr "x$at_option" : 'x\([^=]*\)='` 805 # Reject names that are not valid shell variable names. 806 case $at_envvar in 807 '' | [0-9]* | *[!_$as_cr_alnum]* ) 808 as_fn_error $? "invalid variable name: \`$at_envvar'" ;; 809 esac 810 at_value=`$as_echo "$at_optarg" | sed "s/'/'\\\\\\\\''/g"` 811 # Export now, but save eval for later and for debug scripts. 812 export $at_envvar 813 as_fn_append at_debug_args " $at_envvar='$at_value'" 814 ;; 815 816 *) $as_echo "$as_me: invalid option: $at_option" >&2 817 $as_echo "Try \`$0 --help' for more information." >&2 818 exit 1 819 ;; 820 esac 821done 822 823# Verify our last option didn't require an argument 824if test -n "$at_prev"; then : 825 as_fn_error $? "\`$at_prev' requires an argument" 826fi 827 828# The file containing the suite. 829at_suite_log=$at_dir/$as_me.log 830 831# Selected test groups. 832if test -z "$at_groups$at_recheck"; then 833 at_groups=$at_groups_all 834else 835 if test -n "$at_recheck" && test -r "$at_suite_log"; then 836 at_oldfails=`sed -n ' 837 /^Failed tests:$/,/^Skipped tests:$/{ 838 s/^[ ]*\([1-9][0-9]*\):.*/\1/p 839 } 840 /^Unexpected passes:$/,/^## Detailed failed tests/{ 841 s/^[ ]*\([1-9][0-9]*\):.*/\1/p 842 } 843 /^## Detailed failed tests/q 844 ' "$at_suite_log"` 845 as_fn_append at_groups "$at_oldfails$as_nl" 846 fi 847 # Sort the tests, removing duplicates. 848 at_groups=`$as_echo "$at_groups" | sort -nu | sed '/^$/d'` 849fi 850 851if test x"$at_color" = xalways \ 852 || { test x"$at_color" = xauto && test -t 1; }; then 853 at_red=`printf '\033[0;31m'` 854 at_grn=`printf '\033[0;32m'` 855 at_lgn=`printf '\033[1;32m'` 856 at_blu=`printf '\033[1;34m'` 857 at_std=`printf '\033[m'` 858else 859 at_red= at_grn= at_lgn= at_blu= at_std= 860fi 861 862# Help message. 863if $at_help_p; then 864 cat <<_ATEOF || at_write_fail=1 865Usage: $0 [OPTION]... [VARIABLE=VALUE]... [TESTS] 866 867Run all the tests, or the selected TESTS, given by numeric ranges, and 868save a detailed log file. Upon failure, create debugging scripts. 869 870Do not change environment variables directly. Instead, set them via 871command line arguments. Set \`AUTOTEST_PATH' to select the executables 872to exercise. Each relative directory is expanded as build and source 873directories relative to the top level of this distribution. 874E.g., from within the build directory /tmp/foo-1.0, invoking this: 875 876 $ $0 AUTOTEST_PATH=bin 877 878is equivalent to the following, assuming the source directory is /src/foo-1.0: 879 880 PATH=/tmp/foo-1.0/bin:/src/foo-1.0/bin:\$PATH $0 881_ATEOF 882cat <<_ATEOF || at_write_fail=1 883 884Operation modes: 885 -h, --help print the help message, then exit 886 -V, --version print version number, then exit 887 -c, --clean remove all the files this test suite might create and exit 888 -l, --list describes all the tests, or the selected TESTS 889_ATEOF 890cat <<_ATEOF || at_write_fail=1 891 892Execution tuning: 893 -C, --directory=DIR 894 change to directory DIR before starting 895 --color[=never|auto|always] 896 enable colored test results on terminal, or always 897 -j, --jobs[=N] 898 Allow N jobs at once; infinite jobs with no arg (default 1) 899 -k, --keywords=KEYWORDS 900 select the tests matching all the comma-separated KEYWORDS 901 multiple \`-k' accumulate; prefixed \`!' negates a KEYWORD 902 --recheck select all tests that failed or passed unexpectedly last time 903 -e, --errexit abort as soon as a test fails; implies --debug 904 -v, --verbose force more detailed output 905 default for debugging scripts 906 -d, --debug inhibit clean up and top-level logging 907 default for debugging scripts 908 -x, --trace enable tests shell tracing 909_ATEOF 910cat <<_ATEOF || at_write_fail=1 911 912Report bugs to <bug-dico@gnu.org>. 913General help using GNU software: <http://www.gnu.org/gethelp/>. 914_ATEOF 915 exit $at_write_fail 916fi 917 918# List of tests. 919if $at_list_p; then 920 cat <<_ATEOF || at_write_fail=1 921GNU dico 2.10 test suite test groups: 922 923 NUM: FILE-NAME:LINE TEST-GROUP-NAME 924 KEYWORDS 925 926_ATEOF 927 # Pass an empty line as separator between selected groups and help. 928 $as_echo "$at_groups$as_nl$as_nl$at_help_all" | 929 awk 'NF == 1 && FS != ";" { 930 selected[$ 1] = 1 931 next 932 } 933 /^$/ { FS = ";" } 934 NF > 0 { 935 if (selected[$ 1]) { 936 printf " %3d: %-18s %s\n", $ 1, $ 2, $ 3 937 if ($ 4) { 938 lmax = 79 939 indent = " " 940 line = indent 941 len = length (line) 942 n = split ($ 4, a, " ") 943 for (i = 1; i <= n; i++) { 944 l = length (a[i]) + 1 945 if (i > 1 && len + l > lmax) { 946 print line 947 line = indent " " a[i] 948 len = length (line) 949 } else { 950 line = line " " a[i] 951 len += l 952 } 953 } 954 if (n) 955 print line 956 } 957 } 958 }' || at_write_fail=1 959 exit $at_write_fail 960fi 961if $at_version_p; then 962 $as_echo "$as_me (GNU dico 2.10)" && 963 cat <<\_ATEOF || at_write_fail=1 964 965Copyright (C) 2012 Free Software Foundation, Inc. 966This test suite is free software; the Free Software Foundation gives 967unlimited permission to copy, distribute and modify it. 968_ATEOF 969 exit $at_write_fail 970fi 971 972# Should we print banners? Yes if more than one test is run. 973case $at_groups in #( 974 *$as_nl* ) 975 at_print_banners=: ;; #( 976 * ) at_print_banners=false ;; 977esac 978# Text for banner N, set to a single space once printed. 979# Banner 1. testsuite.at:46 980# Category starts at test group 1. 981at_banner_text_1="SHOW" 982# Banner 2. testsuite.at:50 983# Category starts at test group 3. 984at_banner_text_2="MATCH" 985# Banner 3. testsuite.at:58 986# Category starts at test group 9. 987at_banner_text_3="DEFINE" 988# Banner 4. testsuite.at:61 989# Category starts at test group 10. 990at_banner_text_4="Option-governed virtual databases" 991# Banner 5. testsuite.at:67 992# Category starts at test group 14. 993at_banner_text_5="Virtual databases (collections)" 994 995# Take any -C into account. 996if $at_change_dir ; then 997 test x != "x$at_dir" && cd "$at_dir" \ 998 || as_fn_error $? "unable to change directory" 999 at_dir=`pwd` 1000fi 1001 1002# Load the config files for any default variable assignments. 1003for at_file in atconfig atlocal 1004do 1005 test -r $at_file || continue 1006 . ./$at_file || as_fn_error $? "invalid content: $at_file" 1007done 1008 1009# Autoconf <=2.59b set at_top_builddir instead of at_top_build_prefix: 1010: "${at_top_build_prefix=$at_top_builddir}" 1011 1012# Perform any assignments requested during argument parsing. 1013eval "$at_debug_args" 1014 1015# atconfig delivers names relative to the directory the test suite is 1016# in, but the groups themselves are run in testsuite-dir/group-dir. 1017if test -n "$at_top_srcdir"; then 1018 builddir=../.. 1019 for at_dir_var in srcdir top_srcdir top_build_prefix 1020 do 1021 eval at_val=\$at_$at_dir_var 1022 case $at_val in 1023 [\\/$]* | ?:[\\/]* ) at_prefix= ;; 1024 *) at_prefix=../../ ;; 1025 esac 1026 eval "$at_dir_var=\$at_prefix\$at_val" 1027 done 1028fi 1029 1030## -------------------- ## 1031## Directory structure. ## 1032## -------------------- ## 1033 1034# This is the set of directories and files used by this script 1035# (non-literals are capitalized): 1036# 1037# TESTSUITE - the testsuite 1038# TESTSUITE.log - summarizes the complete testsuite run 1039# TESTSUITE.dir/ - created during a run, remains after -d or failed test 1040# + at-groups/ - during a run: status of all groups in run 1041# | + NNN/ - during a run: meta-data about test group NNN 1042# | | + check-line - location (source file and line) of current AT_CHECK 1043# | | + status - exit status of current AT_CHECK 1044# | | + stdout - stdout of current AT_CHECK 1045# | | + stder1 - stderr, including trace 1046# | | + stderr - stderr, with trace filtered out 1047# | | + test-source - portion of testsuite that defines group 1048# | | + times - timestamps for computing duration 1049# | | + pass - created if group passed 1050# | | + xpass - created if group xpassed 1051# | | + fail - created if group failed 1052# | | + xfail - created if group xfailed 1053# | | + skip - created if group skipped 1054# + at-stop - during a run: end the run if this file exists 1055# + at-source-lines - during a run: cache of TESTSUITE line numbers for extraction 1056# + 0..NNN/ - created for each group NNN, remains after -d or failed test 1057# | + TESTSUITE.log - summarizes the group results 1058# | + ... - files created during the group 1059 1060# The directory the whole suite works in. 1061# Should be absolute to let the user `cd' at will. 1062at_suite_dir=$at_dir/$as_me.dir 1063# The file containing the suite ($at_dir might have changed since earlier). 1064at_suite_log=$at_dir/$as_me.log 1065# The directory containing helper files per test group. 1066at_helper_dir=$at_suite_dir/at-groups 1067# Stop file: if it exists, do not start new jobs. 1068at_stop_file=$at_suite_dir/at-stop 1069# The fifo used for the job dispatcher. 1070at_job_fifo=$at_suite_dir/at-job-fifo 1071 1072if $at_clean; then 1073 test -d "$at_suite_dir" && 1074 find "$at_suite_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \; 1075 rm -f -r "$at_suite_dir" "$at_suite_log" 1076 exit $? 1077fi 1078 1079# Don't take risks: use only absolute directories in PATH. 1080# 1081# For stand-alone test suites (ie. atconfig was not found), 1082# AUTOTEST_PATH is relative to `.'. 1083# 1084# For embedded test suites, AUTOTEST_PATH is relative to the top level 1085# of the package. Then expand it into build/src parts, since users 1086# may create executables in both places. 1087AUTOTEST_PATH=`$as_echo "$AUTOTEST_PATH" | sed "s|:|$PATH_SEPARATOR|g"` 1088at_path= 1089as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 1090for as_dir in $AUTOTEST_PATH $PATH 1091do 1092 IFS=$as_save_IFS 1093 test -z "$as_dir" && as_dir=. 1094 test -n "$at_path" && as_fn_append at_path $PATH_SEPARATOR 1095case $as_dir in 1096 [\\/]* | ?:[\\/]* ) 1097 as_fn_append at_path "$as_dir" 1098 ;; 1099 * ) 1100 if test -z "$at_top_build_prefix"; then 1101 # Stand-alone test suite. 1102 as_fn_append at_path "$as_dir" 1103 else 1104 # Embedded test suite. 1105 as_fn_append at_path "$at_top_build_prefix$as_dir$PATH_SEPARATOR" 1106 as_fn_append at_path "$at_top_srcdir/$as_dir" 1107 fi 1108 ;; 1109esac 1110 done 1111IFS=$as_save_IFS 1112 1113 1114# Now build and simplify PATH. 1115# 1116# There might be directories that don't exist, but don't redirect 1117# builtins' (eg., cd) stderr directly: Ultrix's sh hates that. 1118at_new_path= 1119as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 1120for as_dir in $at_path 1121do 1122 IFS=$as_save_IFS 1123 test -z "$as_dir" && as_dir=. 1124 test -d "$as_dir" || continue 1125case $as_dir in 1126 [\\/]* | ?:[\\/]* ) ;; 1127 * ) as_dir=`(cd "$as_dir" && pwd) 2>/dev/null` ;; 1128esac 1129case $PATH_SEPARATOR$at_new_path$PATH_SEPARATOR in 1130 *$PATH_SEPARATOR$as_dir$PATH_SEPARATOR*) ;; 1131 $PATH_SEPARATOR$PATH_SEPARATOR) at_new_path=$as_dir ;; 1132 *) as_fn_append at_new_path "$PATH_SEPARATOR$as_dir" ;; 1133esac 1134 done 1135IFS=$as_save_IFS 1136 1137PATH=$at_new_path 1138export PATH 1139 1140# Setting up the FDs. 1141 1142 1143 1144# 5 is the log file. Not to be overwritten if `-d'. 1145if $at_debug_p; then 1146 at_suite_log=/dev/null 1147else 1148 : >"$at_suite_log" 1149fi 1150exec 5>>"$at_suite_log" 1151 1152# Banners and logs. 1153$as_echo "## ------------------------- ## 1154## GNU dico 2.10 test suite. ## 1155## ------------------------- ##" 1156{ 1157 $as_echo "## ------------------------- ## 1158## GNU dico 2.10 test suite. ## 1159## ------------------------- ##" 1160 echo 1161 1162 $as_echo "$as_me: command line was:" 1163 $as_echo " \$ $0 $at_cli_args" 1164 echo 1165 1166 # If ChangeLog exists, list a few lines in case it might help determining 1167 # the exact version. 1168 if test -n "$at_top_srcdir" && test -f "$at_top_srcdir/ChangeLog"; then 1169 $as_echo "## ---------- ## 1170## ChangeLog. ## 1171## ---------- ##" 1172 echo 1173 sed 's/^/| /;10q' "$at_top_srcdir/ChangeLog" 1174 echo 1175 fi 1176 1177 { 1178cat <<_ASUNAME 1179## --------- ## 1180## Platform. ## 1181## --------- ## 1182 1183hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` 1184uname -m = `(uname -m) 2>/dev/null || echo unknown` 1185uname -r = `(uname -r) 2>/dev/null || echo unknown` 1186uname -s = `(uname -s) 2>/dev/null || echo unknown` 1187uname -v = `(uname -v) 2>/dev/null || echo unknown` 1188 1189/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` 1190/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` 1191 1192/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` 1193/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` 1194/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` 1195/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` 1196/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` 1197/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` 1198/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` 1199 1200_ASUNAME 1201 1202as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 1203for as_dir in $PATH 1204do 1205 IFS=$as_save_IFS 1206 test -z "$as_dir" && as_dir=. 1207 $as_echo "PATH: $as_dir" 1208 done 1209IFS=$as_save_IFS 1210 1211} 1212 echo 1213 1214 # Contents of the config files. 1215 for at_file in atconfig atlocal 1216 do 1217 test -r $at_file || continue 1218 $as_echo "$as_me: $at_file:" 1219 sed 's/^/| /' $at_file 1220 echo 1221 done 1222} >&5 1223 1224 1225## ------------------------- ## 1226## Autotest shell functions. ## 1227## ------------------------- ## 1228 1229# at_fn_banner NUMBER 1230# ------------------- 1231# Output banner NUMBER, provided the testsuite is running multiple groups and 1232# this particular banner has not yet been printed. 1233at_fn_banner () 1234{ 1235 $at_print_banners || return 0 1236 eval at_banner_text=\$at_banner_text_$1 1237 test "x$at_banner_text" = "x " && return 0 1238 eval "at_banner_text_$1=\" \"" 1239 if test -z "$at_banner_text"; then 1240 $at_first || echo 1241 else 1242 $as_echo "$as_nl$at_banner_text$as_nl" 1243 fi 1244} # at_fn_banner 1245 1246# at_fn_check_prepare_notrace REASON LINE 1247# --------------------------------------- 1248# Perform AT_CHECK preparations for the command at LINE for an untraceable 1249# command; REASON is the reason for disabling tracing. 1250at_fn_check_prepare_notrace () 1251{ 1252 $at_trace_echo "Not enabling shell tracing (command contains $1)" 1253 $as_echo "$2" >"$at_check_line_file" 1254 at_check_trace=: at_check_filter=: 1255 : >"$at_stdout"; : >"$at_stderr" 1256} 1257 1258# at_fn_check_prepare_trace LINE 1259# ------------------------------ 1260# Perform AT_CHECK preparations for the command at LINE for a traceable 1261# command. 1262at_fn_check_prepare_trace () 1263{ 1264 $as_echo "$1" >"$at_check_line_file" 1265 at_check_trace=$at_traceon at_check_filter=$at_check_filter_trace 1266 : >"$at_stdout"; : >"$at_stderr" 1267} 1268 1269# at_fn_check_prepare_dynamic COMMAND LINE 1270# ---------------------------------------- 1271# Decide if COMMAND at LINE is traceable at runtime, and call the appropriate 1272# preparation function. 1273at_fn_check_prepare_dynamic () 1274{ 1275 case $1 in 1276 *$as_nl*) 1277 at_fn_check_prepare_notrace 'an embedded newline' "$2" ;; 1278 *) 1279 at_fn_check_prepare_trace "$2" ;; 1280 esac 1281} 1282 1283# at_fn_filter_trace 1284# ------------------ 1285# Remove the lines in the file "$at_stderr" generated by "set -x" and print 1286# them to stderr. 1287at_fn_filter_trace () 1288{ 1289 mv "$at_stderr" "$at_stder1" 1290 grep '^ *+' "$at_stder1" >&2 1291 grep -v '^ *+' "$at_stder1" >"$at_stderr" 1292} 1293 1294# at_fn_log_failure FILE-LIST 1295# --------------------------- 1296# Copy the files in the list on stdout with a "> " prefix, and exit the shell 1297# with a failure exit code. 1298at_fn_log_failure () 1299{ 1300 for file 1301 do $as_echo "$file:"; sed 's/^/> /' "$file"; done 1302 echo 1 > "$at_status_file" 1303 exit 1 1304} 1305 1306# at_fn_check_skip EXIT-CODE LINE 1307# ------------------------------- 1308# Check whether EXIT-CODE is a special exit code (77 or 99), and if so exit 1309# the test group subshell with that same exit code. Use LINE in any report 1310# about test failure. 1311at_fn_check_skip () 1312{ 1313 case $1 in 1314 99) echo 99 > "$at_status_file"; at_failed=: 1315 $as_echo "$2: hard failure"; exit 99;; 1316 77) echo 77 > "$at_status_file"; exit 77;; 1317 esac 1318} 1319 1320# at_fn_check_status EXPECTED EXIT-CODE LINE 1321# ------------------------------------------ 1322# Check whether EXIT-CODE is the EXPECTED exit code, and if so do nothing. 1323# Otherwise, if it is 77 or 99, exit the test group subshell with that same 1324# exit code; if it is anything else print an error message referring to LINE, 1325# and fail the test. 1326at_fn_check_status () 1327{ 1328 case $2 in 1329 $1 ) ;; 1330 77) echo 77 > "$at_status_file"; exit 77;; 1331 99) echo 99 > "$at_status_file"; at_failed=: 1332 $as_echo "$3: hard failure"; exit 99;; 1333 *) $as_echo "$3: exit code was $2, expected $1" 1334 at_failed=:;; 1335 esac 1336} 1337 1338# at_fn_diff_devnull FILE 1339# ----------------------- 1340# Emit a diff between /dev/null and FILE. Uses "test -s" to avoid useless diff 1341# invocations. 1342at_fn_diff_devnull () 1343{ 1344 test -s "$1" || return 0 1345 $at_diff "$at_devnull" "$1" 1346} 1347 1348# at_fn_test NUMBER 1349# ----------------- 1350# Parse out test NUMBER from the tail of this file. 1351at_fn_test () 1352{ 1353 eval at_sed=\$at_sed$1 1354 sed "$at_sed" "$at_myself" > "$at_test_source" 1355} 1356 1357# at_fn_create_debugging_script 1358# ----------------------------- 1359# Create the debugging script $at_group_dir/run which will reproduce the 1360# current test group. 1361at_fn_create_debugging_script () 1362{ 1363 { 1364 echo "#! /bin/sh" && 1365 echo 'test "${ZSH_VERSION+set}" = set && alias -g '\''${1+"$@"}'\''='\''"$@"'\''' && 1366 $as_echo "cd '$at_dir'" && 1367 $as_echo "exec \${CONFIG_SHELL-$SHELL} \"$at_myself\" -v -d $at_debug_args $at_group \${1+\"\$@\"}" && 1368 echo 'exit 1' 1369 } >"$at_group_dir/run" && 1370 chmod +x "$at_group_dir/run" 1371} 1372 1373## -------------------------------- ## 1374## End of autotest shell functions. ## 1375## -------------------------------- ## 1376{ 1377 $as_echo "## ---------------- ## 1378## Tested programs. ## 1379## ---------------- ##" 1380 echo 1381} >&5 1382 1383# Report what programs are being tested. 1384for at_program in : $at_tested 1385do 1386 test "$at_program" = : && continue 1387 case $at_program in 1388 [\\/]* | ?:[\\/]* ) $at_program_=$at_program ;; 1389 * ) 1390 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 1391for as_dir in $PATH 1392do 1393 IFS=$as_save_IFS 1394 test -z "$as_dir" && as_dir=. 1395 test -f "$as_dir/$at_program" && break 1396 done 1397IFS=$as_save_IFS 1398 1399 at_program_=$as_dir/$at_program ;; 1400 esac 1401 if test -f "$at_program_"; then 1402 { 1403 $as_echo "$at_srcdir/testsuite.at:43: $at_program_ --version" 1404 "$at_program_" --version </dev/null 1405 echo 1406 } >&5 2>&1 1407 else 1408 as_fn_error $? "cannot find $at_program" "$LINENO" 5 1409 fi 1410done 1411 1412{ 1413 $as_echo "## ------------------ ## 1414## Running the tests. ## 1415## ------------------ ##" 1416} >&5 1417 1418at_start_date=`date` 1419at_start_time=`date +%s 2>/dev/null` 1420$as_echo "$as_me: starting at: $at_start_date" >&5 1421 1422# Create the master directory if it doesn't already exist. 1423as_dir="$at_suite_dir"; as_fn_mkdir_p || 1424 as_fn_error $? "cannot create \`$at_suite_dir'" "$LINENO" 5 1425 1426# Can we diff with `/dev/null'? DU 5.0 refuses. 1427if diff /dev/null /dev/null >/dev/null 2>&1; then 1428 at_devnull=/dev/null 1429else 1430 at_devnull=$at_suite_dir/devnull 1431 >"$at_devnull" 1432fi 1433 1434# Use `diff -u' when possible. 1435if at_diff=`diff -u "$at_devnull" "$at_devnull" 2>&1` && test -z "$at_diff" 1436then 1437 at_diff='diff -u' 1438else 1439 at_diff=diff 1440fi 1441 1442# Get the last needed group. 1443for at_group in : $at_groups; do :; done 1444 1445# Extract the start and end lines of each test group at the tail 1446# of this file 1447awk ' 1448BEGIN { FS="" } 1449/^#AT_START_/ { 1450 start = NR 1451} 1452/^#AT_STOP_/ { 1453 test = substr ($ 0, 10) 1454 print "at_sed" test "=\"1," start "d;" (NR-1) "q\"" 1455 if (test == "'"$at_group"'") exit 1456}' "$at_myself" > "$at_suite_dir/at-source-lines" && 1457. "$at_suite_dir/at-source-lines" || 1458 as_fn_error $? "cannot create test line number cache" "$LINENO" 5 1459rm -f "$at_suite_dir/at-source-lines" 1460 1461# Set number of jobs for `-j'; avoid more jobs than test groups. 1462set X $at_groups; shift; at_max_jobs=$# 1463if test $at_max_jobs -eq 0; then 1464 at_jobs=1 1465fi 1466if test $at_jobs -ne 1 && 1467 { test $at_jobs -eq 0 || test $at_jobs -gt $at_max_jobs; }; then 1468 at_jobs=$at_max_jobs 1469fi 1470 1471# If parallel mode, don't output banners, don't split summary lines. 1472if test $at_jobs -ne 1; then 1473 at_print_banners=false 1474 at_quiet=: 1475fi 1476 1477# Set up helper dirs. 1478rm -rf "$at_helper_dir" && 1479mkdir "$at_helper_dir" && 1480cd "$at_helper_dir" && 1481{ test -z "$at_groups" || mkdir $at_groups; } || 1482as_fn_error $? "testsuite directory setup failed" "$LINENO" 5 1483 1484# Functions for running a test group. We leave the actual 1485# test group execution outside of a shell function in order 1486# to avoid hitting zsh 4.x exit status bugs. 1487 1488# at_fn_group_prepare 1489# ------------------- 1490# Prepare for running a test group. 1491at_fn_group_prepare () 1492{ 1493 # The directory for additional per-group helper files. 1494 at_job_dir=$at_helper_dir/$at_group 1495 # The file containing the location of the last AT_CHECK. 1496 at_check_line_file=$at_job_dir/check-line 1497 # The file containing the exit status of the last command. 1498 at_status_file=$at_job_dir/status 1499 # The files containing the output of the tested commands. 1500 at_stdout=$at_job_dir/stdout 1501 at_stder1=$at_job_dir/stder1 1502 at_stderr=$at_job_dir/stderr 1503 # The file containing the code for a test group. 1504 at_test_source=$at_job_dir/test-source 1505 # The file containing dates. 1506 at_times_file=$at_job_dir/times 1507 1508 # Be sure to come back to the top test directory. 1509 cd "$at_suite_dir" 1510 1511 # Clearly separate the test groups when verbose. 1512 $at_first || $at_verbose echo 1513 1514 at_group_normalized=$at_group 1515 1516 eval 'while :; do 1517 case $at_group_normalized in #( 1518 '"$at_format"'*) break;; 1519 esac 1520 at_group_normalized=0$at_group_normalized 1521 done' 1522 1523 1524 # Create a fresh directory for the next test group, and enter. 1525 # If one already exists, the user may have invoked ./run from 1526 # within that directory; we remove the contents, but not the 1527 # directory itself, so that we aren't pulling the rug out from 1528 # under the shell's notion of the current directory. 1529 at_group_dir=$at_suite_dir/$at_group_normalized 1530 at_group_log=$at_group_dir/$as_me.log 1531 if test -d "$at_group_dir"; then 1532 find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx {} \; 1533 rm -fr "$at_group_dir"/* "$at_group_dir"/.[!.] "$at_group_dir"/.??* 1534fi || 1535 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: test directory for $at_group_normalized could not be cleaned" >&5 1536$as_echo "$as_me: WARNING: test directory for $at_group_normalized could not be cleaned" >&2;} 1537 # Be tolerant if the above `rm' was not able to remove the directory. 1538 as_dir="$at_group_dir"; as_fn_mkdir_p 1539 1540 echo 0 > "$at_status_file" 1541 1542 # In verbose mode, append to the log file *and* show on 1543 # the standard output; in quiet mode only write to the log. 1544 if test -z "$at_verbose"; then 1545 at_tee_pipe='tee -a "$at_group_log"' 1546 else 1547 at_tee_pipe='cat >> "$at_group_log"' 1548 fi 1549} 1550 1551# at_fn_group_banner ORDINAL LINE DESC PAD [BANNER] 1552# ------------------------------------------------- 1553# Declare the test group ORDINAL, located at LINE with group description DESC, 1554# and residing under BANNER. Use PAD to align the status column. 1555at_fn_group_banner () 1556{ 1557 at_setup_line="$2" 1558 test -n "$5" && at_fn_banner $5 1559 at_desc="$3" 1560 case $1 in 1561 [0-9]) at_desc_line=" $1: ";; 1562 [0-9][0-9]) at_desc_line=" $1: " ;; 1563 *) at_desc_line="$1: " ;; 1564 esac 1565 as_fn_append at_desc_line "$3$4" 1566 $at_quiet $as_echo_n "$at_desc_line" 1567 echo "# -*- compilation -*-" >> "$at_group_log" 1568} 1569 1570# at_fn_group_postprocess 1571# ----------------------- 1572# Perform cleanup after running a test group. 1573at_fn_group_postprocess () 1574{ 1575 # Be sure to come back to the suite directory, in particular 1576 # since below we might `rm' the group directory we are in currently. 1577 cd "$at_suite_dir" 1578 1579 if test ! -f "$at_check_line_file"; then 1580 sed "s/^ */$as_me: WARNING: /" <<_ATEOF 1581 A failure happened in a test group before any test could be 1582 run. This means that test suite is improperly designed. Please 1583 report this failure to <bug-dico@gnu.org>. 1584_ATEOF 1585 $as_echo "$at_setup_line" >"$at_check_line_file" 1586 at_status=99 1587 fi 1588 $at_verbose $as_echo_n "$at_group. $at_setup_line: " 1589 $as_echo_n "$at_group. $at_setup_line: " >> "$at_group_log" 1590 case $at_xfail:$at_status in 1591 yes:0) 1592 at_msg="UNEXPECTED PASS" 1593 at_res=xpass 1594 at_errexit=$at_errexit_p 1595 at_color=$at_red 1596 ;; 1597 no:0) 1598 at_msg="ok" 1599 at_res=pass 1600 at_errexit=false 1601 at_color=$at_grn 1602 ;; 1603 *:77) 1604 at_msg='skipped ('`cat "$at_check_line_file"`')' 1605 at_res=skip 1606 at_errexit=false 1607 at_color=$at_blu 1608 ;; 1609 no:* | *:99) 1610 at_msg='FAILED ('`cat "$at_check_line_file"`')' 1611 at_res=fail 1612 at_errexit=$at_errexit_p 1613 at_color=$at_red 1614 ;; 1615 yes:*) 1616 at_msg='expected failure ('`cat "$at_check_line_file"`')' 1617 at_res=xfail 1618 at_errexit=false 1619 at_color=$at_lgn 1620 ;; 1621 esac 1622 echo "$at_res" > "$at_job_dir/$at_res" 1623 # In parallel mode, output the summary line only afterwards. 1624 if test $at_jobs -ne 1 && test -n "$at_verbose"; then 1625 $as_echo "$at_desc_line $at_color$at_msg$at_std" 1626 else 1627 # Make sure there is a separator even with long titles. 1628 $as_echo " $at_color$at_msg$at_std" 1629 fi 1630 at_log_msg="$at_group. $at_desc ($at_setup_line): $at_msg" 1631 case $at_status in 1632 0|77) 1633 # $at_times_file is only available if the group succeeded. 1634 # We're not including the group log, so the success message 1635 # is written in the global log separately. But we also 1636 # write to the group log in case they're using -d. 1637 if test -f "$at_times_file"; then 1638 at_log_msg="$at_log_msg ("`sed 1d "$at_times_file"`')' 1639 rm -f "$at_times_file" 1640 fi 1641 $as_echo "$at_log_msg" >> "$at_group_log" 1642 $as_echo "$at_log_msg" >&5 1643 1644 # Cleanup the group directory, unless the user wants the files 1645 # or the success was unexpected. 1646 if $at_debug_p || test $at_res = xpass; then 1647 at_fn_create_debugging_script 1648 if test $at_res = xpass && $at_errexit; then 1649 echo stop > "$at_stop_file" 1650 fi 1651 else 1652 if test -d "$at_group_dir"; then 1653 find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \; 1654 rm -fr "$at_group_dir" 1655 fi 1656 rm -f "$at_test_source" 1657 fi 1658 ;; 1659 *) 1660 # Upon failure, include the log into the testsuite's global 1661 # log. The failure message is written in the group log. It 1662 # is later included in the global log. 1663 $as_echo "$at_log_msg" >> "$at_group_log" 1664 1665 # Upon failure, keep the group directory for autopsy, and create 1666 # the debugging script. With -e, do not start any further tests. 1667 at_fn_create_debugging_script 1668 if $at_errexit; then 1669 echo stop > "$at_stop_file" 1670 fi 1671 ;; 1672 esac 1673} 1674 1675 1676## ------------ ## 1677## Driver loop. ## 1678## ------------ ## 1679 1680 1681if (set -m && set +m && set +b) >/dev/null 2>&1; then 1682 set +b 1683 at_job_control_on='set -m' at_job_control_off='set +m' at_job_group=- 1684else 1685 at_job_control_on=: at_job_control_off=: at_job_group= 1686fi 1687 1688for at_signal in 1 2 15; do 1689 trap 'set +x; set +e 1690 $at_job_control_off 1691 at_signal='"$at_signal"' 1692 echo stop > "$at_stop_file" 1693 trap "" $at_signal 1694 at_pgids= 1695 for at_pgid in `jobs -p 2>/dev/null`; do 1696 at_pgids="$at_pgids $at_job_group$at_pgid" 1697 done 1698 test -z "$at_pgids" || kill -$at_signal $at_pgids 2>/dev/null 1699 wait 1700 if test "$at_jobs" -eq 1 || test -z "$at_verbose"; then 1701 echo >&2 1702 fi 1703 at_signame=`kill -l $at_signal 2>&1 || echo $at_signal` 1704 set x $at_signame 1705 test 0 -gt 2 && at_signame=$at_signal 1706 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: caught signal $at_signame, bailing out" >&5 1707$as_echo "$as_me: WARNING: caught signal $at_signame, bailing out" >&2;} 1708 as_fn_arith 128 + $at_signal && exit_status=$as_val 1709 as_fn_exit $exit_status' $at_signal 1710done 1711 1712rm -f "$at_stop_file" 1713at_first=: 1714 1715if test $at_jobs -ne 1 && 1716 rm -f "$at_job_fifo" && 1717 test -n "$at_job_group" && 1718 ( mkfifo "$at_job_fifo" && trap 'exit 1' PIPE STOP TSTP ) 2>/dev/null 1719then 1720 # FIFO job dispatcher. 1721 1722 trap 'at_pids= 1723 for at_pid in `jobs -p`; do 1724 at_pids="$at_pids $at_job_group$at_pid" 1725 done 1726 if test -n "$at_pids"; then 1727 at_sig=TSTP 1728 test "${TMOUT+set}" = set && at_sig=STOP 1729 kill -$at_sig $at_pids 2>/dev/null 1730 fi 1731 kill -STOP $$ 1732 test -z "$at_pids" || kill -CONT $at_pids 2>/dev/null' TSTP 1733 1734 echo 1735 # Turn jobs into a list of numbers, starting from 1. 1736 at_joblist=`$as_echo "$at_groups" | sed -n 1,${at_jobs}p` 1737 1738 set X $at_joblist 1739 shift 1740 for at_group in $at_groups; do 1741 $at_job_control_on 2>/dev/null 1742 ( 1743 # Start one test group. 1744 $at_job_control_off 1745 if $at_first; then 1746 exec 7>"$at_job_fifo" 1747 else 1748 exec 6<&- 1749 fi 1750 trap 'set +x; set +e 1751 trap "" PIPE 1752 echo stop > "$at_stop_file" 1753 echo >&7 1754 as_fn_exit 141' PIPE 1755 at_fn_group_prepare 1756 if cd "$at_group_dir" && 1757 at_fn_test $at_group && 1758 . "$at_test_source" 1759 then :; else 1760 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5 1761$as_echo "$as_me: WARNING: unable to parse test group: $at_group" >&2;} 1762 at_failed=: 1763 fi 1764 at_fn_group_postprocess 1765 echo >&7 1766 ) & 1767 $at_job_control_off 1768 if $at_first; then 1769 at_first=false 1770 exec 6<"$at_job_fifo" 7>"$at_job_fifo" 1771 fi 1772 shift # Consume one token. 1773 if test $# -gt 0; then :; else 1774 read at_token <&6 || break 1775 set x $* 1776 fi 1777 test -f "$at_stop_file" && break 1778 done 1779 exec 7>&- 1780 # Read back the remaining ($at_jobs - 1) tokens. 1781 set X $at_joblist 1782 shift 1783 if test $# -gt 0; then 1784 shift 1785 for at_job 1786 do 1787 read at_token 1788 done <&6 1789 fi 1790 exec 6<&- 1791 wait 1792else 1793 # Run serially, avoid forks and other potential surprises. 1794 for at_group in $at_groups; do 1795 at_fn_group_prepare 1796 if cd "$at_group_dir" && 1797 at_fn_test $at_group && 1798 . "$at_test_source"; then :; else 1799 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5 1800$as_echo "$as_me: WARNING: unable to parse test group: $at_group" >&2;} 1801 at_failed=: 1802 fi 1803 at_fn_group_postprocess 1804 test -f "$at_stop_file" && break 1805 at_first=false 1806 done 1807fi 1808 1809# Wrap up the test suite with summary statistics. 1810cd "$at_helper_dir" 1811 1812# Use ?..???? when the list must remain sorted, the faster * otherwise. 1813at_pass_list=`for f in */pass; do echo $f; done | sed '/\*/d; s,/pass,,'` 1814at_skip_list=`for f in */skip; do echo $f; done | sed '/\*/d; s,/skip,,'` 1815at_xfail_list=`for f in */xfail; do echo $f; done | sed '/\*/d; s,/xfail,,'` 1816at_xpass_list=`for f in ?/xpass ??/xpass ???/xpass ????/xpass; do 1817 echo $f; done | sed '/?/d; s,/xpass,,'` 1818at_fail_list=`for f in ?/fail ??/fail ???/fail ????/fail; do 1819 echo $f; done | sed '/?/d; s,/fail,,'` 1820 1821set X $at_pass_list $at_xpass_list $at_xfail_list $at_fail_list $at_skip_list 1822shift; at_group_count=$# 1823set X $at_xpass_list; shift; at_xpass_count=$#; at_xpass_list=$* 1824set X $at_xfail_list; shift; at_xfail_count=$# 1825set X $at_fail_list; shift; at_fail_count=$#; at_fail_list=$* 1826set X $at_skip_list; shift; at_skip_count=$# 1827 1828as_fn_arith $at_group_count - $at_skip_count && at_run_count=$as_val 1829as_fn_arith $at_xpass_count + $at_fail_count && at_unexpected_count=$as_val 1830as_fn_arith $at_xfail_count + $at_fail_count && at_total_fail_count=$as_val 1831 1832# Back to the top directory. 1833cd "$at_dir" 1834rm -rf "$at_helper_dir" 1835 1836# Compute the duration of the suite. 1837at_stop_date=`date` 1838at_stop_time=`date +%s 2>/dev/null` 1839$as_echo "$as_me: ending at: $at_stop_date" >&5 1840case $at_start_time,$at_stop_time in 1841 [0-9]*,[0-9]*) 1842 as_fn_arith $at_stop_time - $at_start_time && at_duration_s=$as_val 1843 as_fn_arith $at_duration_s / 60 && at_duration_m=$as_val 1844 as_fn_arith $at_duration_m / 60 && at_duration_h=$as_val 1845 as_fn_arith $at_duration_s % 60 && at_duration_s=$as_val 1846 as_fn_arith $at_duration_m % 60 && at_duration_m=$as_val 1847 at_duration="${at_duration_h}h ${at_duration_m}m ${at_duration_s}s" 1848 $as_echo "$as_me: test suite duration: $at_duration" >&5 1849 ;; 1850esac 1851 1852echo 1853$as_echo "## ------------- ## 1854## Test results. ## 1855## ------------- ##" 1856echo 1857{ 1858 echo 1859 $as_echo "## ------------- ## 1860## Test results. ## 1861## ------------- ##" 1862 echo 1863} >&5 1864 1865if test $at_run_count = 1; then 1866 at_result="1 test" 1867 at_were=was 1868else 1869 at_result="$at_run_count tests" 1870 at_were=were 1871fi 1872if $at_errexit_p && test $at_unexpected_count != 0; then 1873 if test $at_xpass_count = 1; then 1874 at_result="$at_result $at_were run, one passed" 1875 else 1876 at_result="$at_result $at_were run, one failed" 1877 fi 1878 at_result="$at_result unexpectedly and inhibited subsequent tests." 1879 at_color=$at_red 1880else 1881 # Don't you just love exponential explosion of the number of cases? 1882 at_color=$at_red 1883 case $at_xpass_count:$at_fail_count:$at_xfail_count in 1884 # So far, so good. 1885 0:0:0) at_result="$at_result $at_were successful." at_color=$at_grn ;; 1886 0:0:*) at_result="$at_result behaved as expected." at_color=$at_lgn ;; 1887 1888 # Some unexpected failures 1889 0:*:0) at_result="$at_result $at_were run, 1890$at_fail_count failed unexpectedly." ;; 1891 1892 # Some failures, both expected and unexpected 1893 0:*:1) at_result="$at_result $at_were run, 1894$at_total_fail_count failed ($at_xfail_count expected failure)." ;; 1895 0:*:*) at_result="$at_result $at_were run, 1896$at_total_fail_count failed ($at_xfail_count expected failures)." ;; 1897 1898 # No unexpected failures, but some xpasses 1899 *:0:*) at_result="$at_result $at_were run, 1900$at_xpass_count passed unexpectedly." ;; 1901 1902 # No expected failures, but failures and xpasses 1903 *:1:0) at_result="$at_result $at_were run, 1904$at_unexpected_count did not behave as expected ($at_fail_count unexpected failure)." ;; 1905 *:*:0) at_result="$at_result $at_were run, 1906$at_unexpected_count did not behave as expected ($at_fail_count unexpected failures)." ;; 1907 1908 # All of them. 1909 *:*:1) at_result="$at_result $at_were run, 1910$at_xpass_count passed unexpectedly, 1911$at_total_fail_count failed ($at_xfail_count expected failure)." ;; 1912 *:*:*) at_result="$at_result $at_were run, 1913$at_xpass_count passed unexpectedly, 1914$at_total_fail_count failed ($at_xfail_count expected failures)." ;; 1915 esac 1916 1917 if test $at_skip_count = 0 && test $at_run_count -gt 1; then 1918 at_result="All $at_result" 1919 fi 1920fi 1921 1922# Now put skips in the mix. 1923case $at_skip_count in 1924 0) ;; 1925 1) at_result="$at_result 19261 test was skipped." ;; 1927 *) at_result="$at_result 1928$at_skip_count tests were skipped." ;; 1929esac 1930 1931if test $at_unexpected_count = 0; then 1932 echo "$at_color$at_result$at_std" 1933 echo "$at_result" >&5 1934else 1935 echo "${at_color}ERROR: $at_result$at_std" >&2 1936 echo "ERROR: $at_result" >&5 1937 { 1938 echo 1939 $as_echo "## ------------------------ ## 1940## Summary of the failures. ## 1941## ------------------------ ##" 1942 1943 # Summary of failed and skipped tests. 1944 if test $at_fail_count != 0; then 1945 echo "Failed tests:" 1946 $SHELL "$at_myself" $at_fail_list --list 1947 echo 1948 fi 1949 if test $at_skip_count != 0; then 1950 echo "Skipped tests:" 1951 $SHELL "$at_myself" $at_skip_list --list 1952 echo 1953 fi 1954 if test $at_xpass_count != 0; then 1955 echo "Unexpected passes:" 1956 $SHELL "$at_myself" $at_xpass_list --list 1957 echo 1958 fi 1959 if test $at_fail_count != 0; then 1960 $as_echo "## ---------------------- ## 1961## Detailed failed tests. ## 1962## ---------------------- ##" 1963 echo 1964 for at_group in $at_fail_list 1965 do 1966 at_group_normalized=$at_group 1967 1968 eval 'while :; do 1969 case $at_group_normalized in #( 1970 '"$at_format"'*) break;; 1971 esac 1972 at_group_normalized=0$at_group_normalized 1973 done' 1974 1975 cat "$at_suite_dir/$at_group_normalized/$as_me.log" 1976 echo 1977 done 1978 echo 1979 fi 1980 if test -n "$at_top_srcdir"; then 1981 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX 1982## ${at_top_build_prefix}config.log ## 1983_ASBOX 1984 sed 's/^/| /' ${at_top_build_prefix}config.log 1985 echo 1986 fi 1987 } >&5 1988 1989 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX 1990## $as_me.log was created. ## 1991_ASBOX 1992 1993 echo 1994 if $at_debug_p; then 1995 at_msg='per-test log files' 1996 else 1997 at_msg="\`${at_testdir+${at_testdir}/}$as_me.log'" 1998 fi 1999 $as_echo "Please send $at_msg and all information you think might help: 2000 2001 To: <bug-dico@gnu.org> 2002 Subject: [GNU dico 2.10] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly} 2003 2004You may investigate any problem if you feel able to do so, in which 2005case the test suite provides a good starting point. Its output may 2006be found below \`${at_testdir+${at_testdir}/}$as_me.dir'. 2007" 2008 exit 1 2009fi 2010 2011exit 0 2012 2013## ------------- ## 2014## Actual tests. ## 2015## ------------- ## 2016#AT_START_1 2017at_fn_group_banner 1 'showdb.at:17' \ 2018 "show db" " " 1 2019at_xfail=no 2020( 2021 $as_echo "1. $at_setup_line: testing $at_desc ..." 2022 $at_traceon 2023 2024 2025{ set +x 2026$as_echo "$at_srcdir/showdb.at:19: cat > dicod.conf <<__EOT__ 2027prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2028load-module dictorg { 2029 command \"dictorg dbdir=\$abs_srcdir/db\"; 2030} 2031 2032database { 2033 name eng-num; 2034 handler \"dictorg database=eng-num\"; 2035} 2036__EOT__ 2037 2038cat >input <<'_ATEOF' 2039show db 2040quit 2041_ATEOF 2042 2043dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2044" 2045at_fn_check_prepare_notrace 'an embedded newline' "showdb.at:19" 2046( $at_check_trace; cat > dicod.conf <<__EOT__ 2047prepend-load-path "$abs_top_builddir/modules/dict.org"; 2048load-module dictorg { 2049 command "dictorg dbdir=$abs_srcdir/db"; 2050} 2051 2052database { 2053 name eng-num; 2054 handler "dictorg database=eng-num"; 2055} 2056__EOT__ 2057 2058cat >input <<'_ATEOF' 2059show db 2060quit 2061_ATEOF 2062 2063dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2064 2065) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2066at_status=$? at_failed=false 2067$at_check_filter 2068at_fn_diff_devnull "$at_stderr" || at_failed=: 2069echo >>"$at_stdout"; $as_echo "220 2070110 1 databases present 2071eng-num \"English numerals from 1 to 200\" 2072. 2073250 2074221 2075" | \ 2076 $at_diff - "$at_stdout" || at_failed=: 2077at_fn_check_status 0 $at_status "$at_srcdir/showdb.at:19" 2078$at_failed && at_fn_log_failure 2079$at_traceon; } 2080 2081 set +x 2082 $at_times_p && times >"$at_times_file" 2083) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2084read at_status <"$at_status_file" 2085#AT_STOP_1 2086#AT_START_2 2087at_fn_group_banner 2 'showinfo.at:17' \ 2088 "show info" " " 1 2089at_xfail=no 2090( 2091 $as_echo "2. $at_setup_line: testing $at_desc ..." 2092 $at_traceon 2093 2094 2095{ set +x 2096$as_echo "$at_srcdir/showinfo.at:19: cat > dicod.conf <<__EOT__ 2097prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2098load-module dictorg { 2099 command \"dictorg dbdir=\$abs_srcdir/db\"; 2100} 2101 2102database { 2103 name eng-num; 2104 handler \"dictorg database=eng-num\"; 2105} 2106__EOT__ 2107 2108cat >input <<'_ATEOF' 2109show info eng-num 2110quit 2111_ATEOF 2112 2113dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2114" 2115at_fn_check_prepare_notrace 'an embedded newline' "showinfo.at:19" 2116( $at_check_trace; cat > dicod.conf <<__EOT__ 2117prepend-load-path "$abs_top_builddir/modules/dict.org"; 2118load-module dictorg { 2119 command "dictorg dbdir=$abs_srcdir/db"; 2120} 2121 2122database { 2123 name eng-num; 2124 handler "dictorg database=eng-num"; 2125} 2126__EOT__ 2127 2128cat >input <<'_ATEOF' 2129show info eng-num 2130quit 2131_ATEOF 2132 2133dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2134 2135) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2136at_status=$? at_failed=false 2137$at_check_filter 2138at_fn_diff_devnull "$at_stderr" || at_failed=: 2139echo >>"$at_stdout"; $as_echo "220 2140112 information for eng-num 2141The original data is available from: 2142 http://git.gnu.org.ua/cgit/dico.git 2143 2144Mock dictionary 2145 Mock dictionary for GNU dicod dictorg module. 2146 This dictionary contains English numerals from 1 to 200 2147License: 2148 Public domain. 2149 2150. 2151250 2152221 2153" | \ 2154 $at_diff - "$at_stdout" || at_failed=: 2155at_fn_check_status 0 $at_status "$at_srcdir/showinfo.at:19" 2156$at_failed && at_fn_log_failure 2157$at_traceon; } 2158 2159 set +x 2160 $at_times_p && times >"$at_times_file" 2161) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2162read at_status <"$at_status_file" 2163#AT_STOP_2 2164#AT_START_3 2165at_fn_group_banner 3 'exact.at:17' \ 2166 "exact" " " 2 2167at_xfail=no 2168( 2169 $as_echo "3. $at_setup_line: testing $at_desc ..." 2170 $at_traceon 2171 2172 2173{ set +x 2174$as_echo "$at_srcdir/exact.at:19: cat > dicod.conf <<__EOT__ 2175prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2176load-module dictorg { 2177 command \"dictorg dbdir=\$abs_srcdir/db\"; 2178} 2179 2180database { 2181 name eng-num; 2182 handler \"dictorg database=eng-num\"; 2183} 2184__EOT__ 2185 2186cat >input <<'_ATEOF' 2187match eng-num exact \"ten\" 2188quit 2189_ATEOF 2190 2191dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2192" 2193at_fn_check_prepare_notrace 'an embedded newline' "exact.at:19" 2194( $at_check_trace; cat > dicod.conf <<__EOT__ 2195prepend-load-path "$abs_top_builddir/modules/dict.org"; 2196load-module dictorg { 2197 command "dictorg dbdir=$abs_srcdir/db"; 2198} 2199 2200database { 2201 name eng-num; 2202 handler "dictorg database=eng-num"; 2203} 2204__EOT__ 2205 2206cat >input <<'_ATEOF' 2207match eng-num exact "ten" 2208quit 2209_ATEOF 2210 2211dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2212 2213) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2214at_status=$? at_failed=false 2215$at_check_filter 2216at_fn_diff_devnull "$at_stderr" || at_failed=: 2217echo >>"$at_stdout"; $as_echo "220 2218152 1 matches found: list follows 2219eng-num \"ten\" 2220. 2221250 2222221 2223" | \ 2224 $at_diff - "$at_stdout" || at_failed=: 2225at_fn_check_status 0 $at_status "$at_srcdir/exact.at:19" 2226$at_failed && at_fn_log_failure 2227$at_traceon; } 2228 2229 set +x 2230 $at_times_p && times >"$at_times_file" 2231) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2232read at_status <"$at_status_file" 2233#AT_STOP_3 2234#AT_START_4 2235at_fn_group_banner 4 'alnum.at:17' \ 2236 "exact (alphanumeric only)" " " 2 2237at_xfail=no 2238( 2239 $as_echo "4. $at_setup_line: testing $at_desc ..." 2240 $at_traceon 2241 2242 2243{ set +x 2244$as_echo "$at_srcdir/alnum.at:19: cat > dicod.conf <<__EOT__ 2245prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2246load-module dictorg { 2247 command \"dictorg dbdir=\$abs_srcdir/db\"; 2248} 2249 2250database { 2251 name eng-num; 2252 handler \"dictorg database=eng-num\"; 2253} 2254__EOT__ 2255 2256cat >input <<'_ATEOF' 2257match eng-num exact \"twentyfive\" 2258quit 2259_ATEOF 2260 2261dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2262" 2263at_fn_check_prepare_notrace 'an embedded newline' "alnum.at:19" 2264( $at_check_trace; cat > dicod.conf <<__EOT__ 2265prepend-load-path "$abs_top_builddir/modules/dict.org"; 2266load-module dictorg { 2267 command "dictorg dbdir=$abs_srcdir/db"; 2268} 2269 2270database { 2271 name eng-num; 2272 handler "dictorg database=eng-num"; 2273} 2274__EOT__ 2275 2276cat >input <<'_ATEOF' 2277match eng-num exact "twentyfive" 2278quit 2279_ATEOF 2280 2281dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2282 2283) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2284at_status=$? at_failed=false 2285$at_check_filter 2286at_fn_diff_devnull "$at_stderr" || at_failed=: 2287echo >>"$at_stdout"; $as_echo "220 2288152 1 matches found: list follows 2289eng-num \"twenty-five\" 2290. 2291250 2292221 2293" | \ 2294 $at_diff - "$at_stdout" || at_failed=: 2295at_fn_check_status 0 $at_status "$at_srcdir/alnum.at:19" 2296$at_failed && at_fn_log_failure 2297$at_traceon; } 2298 2299 set +x 2300 $at_times_p && times >"$at_times_file" 2301) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2302read at_status <"$at_status_file" 2303#AT_STOP_4 2304#AT_START_5 2305at_fn_group_banner 5 'allchars.at:17' \ 2306 "exact (all chars)" " " 2 2307at_xfail=no 2308( 2309 $as_echo "5. $at_setup_line: testing $at_desc ..." 2310 $at_traceon 2311 2312 2313{ set +x 2314$as_echo "$at_srcdir/allchars.at:19: cat > dicod.conf <<__EOT__ 2315prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2316load-module dictorg { 2317 command \"dictorg dbdir=\$abs_srcdir/db\"; 2318} 2319 2320database { 2321 name eng-num; 2322 handler \"dictorg database=eng-num_allchars\"; 2323} 2324__EOT__ 2325 2326cat >input <<'_ATEOF' 2327match eng-num exact \"twentyfive\" 2328match eng-num exact \"twenty-five\" 2329quit 2330_ATEOF 2331 2332dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2333" 2334at_fn_check_prepare_notrace 'an embedded newline' "allchars.at:19" 2335( $at_check_trace; cat > dicod.conf <<__EOT__ 2336prepend-load-path "$abs_top_builddir/modules/dict.org"; 2337load-module dictorg { 2338 command "dictorg dbdir=$abs_srcdir/db"; 2339} 2340 2341database { 2342 name eng-num; 2343 handler "dictorg database=eng-num_allchars"; 2344} 2345__EOT__ 2346 2347cat >input <<'_ATEOF' 2348match eng-num exact "twentyfive" 2349match eng-num exact "twenty-five" 2350quit 2351_ATEOF 2352 2353dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2354 2355) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2356at_status=$? at_failed=false 2357$at_check_filter 2358at_fn_diff_devnull "$at_stderr" || at_failed=: 2359echo >>"$at_stdout"; $as_echo "220 2360552 No match 2361152 1 matches found: list follows 2362eng-num \"twenty-five\" 2363. 2364250 2365221 2366" | \ 2367 $at_diff - "$at_stdout" || at_failed=: 2368at_fn_check_status 0 $at_status "$at_srcdir/allchars.at:19" 2369$at_failed && at_fn_log_failure 2370$at_traceon; } 2371 2372 set +x 2373 $at_times_p && times >"$at_times_file" 2374) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2375read at_status <"$at_status_file" 2376#AT_STOP_5 2377#AT_START_6 2378at_fn_group_banner 6 'prefix.at:17' \ 2379 "prefix" " " 2 2380at_xfail=no 2381( 2382 $as_echo "6. $at_setup_line: testing $at_desc ..." 2383 $at_traceon 2384 2385 2386{ set +x 2387$as_echo "$at_srcdir/prefix.at:19: cat > dicod.conf <<__EOT__ 2388prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2389load-module dictorg { 2390 command \"dictorg dbdir=\$abs_srcdir/db\"; 2391} 2392 2393database { 2394 name eng-num; 2395 handler \"dictorg database=eng-num\"; 2396} 2397__EOT__ 2398 2399cat >input <<'_ATEOF' 2400match eng-num prefix \"twenty\" 2401quit 2402_ATEOF 2403 2404dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2405" 2406at_fn_check_prepare_notrace 'an embedded newline' "prefix.at:19" 2407( $at_check_trace; cat > dicod.conf <<__EOT__ 2408prepend-load-path "$abs_top_builddir/modules/dict.org"; 2409load-module dictorg { 2410 command "dictorg dbdir=$abs_srcdir/db"; 2411} 2412 2413database { 2414 name eng-num; 2415 handler "dictorg database=eng-num"; 2416} 2417__EOT__ 2418 2419cat >input <<'_ATEOF' 2420match eng-num prefix "twenty" 2421quit 2422_ATEOF 2423 2424dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2425 2426) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2427at_status=$? at_failed=false 2428$at_check_filter 2429at_fn_diff_devnull "$at_stderr" || at_failed=: 2430echo >>"$at_stdout"; $as_echo "220 2431152 10 matches found: list follows 2432eng-num \"twenty\" 2433eng-num \"twenty-eight\" 2434eng-num \"twenty-five\" 2435eng-num \"twenty-four\" 2436eng-num \"twenty-nine\" 2437eng-num \"twenty-one\" 2438eng-num \"twenty-seven\" 2439eng-num \"twenty-six\" 2440eng-num \"twenty-three\" 2441eng-num \"twenty-two\" 2442. 2443250 2444221 2445" | \ 2446 $at_diff - "$at_stdout" || at_failed=: 2447at_fn_check_status 0 $at_status "$at_srcdir/prefix.at:19" 2448$at_failed && at_fn_log_failure 2449$at_traceon; } 2450 2451 set +x 2452 $at_times_p && times >"$at_times_file" 2453) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2454read at_status <"$at_status_file" 2455#AT_STOP_6 2456#AT_START_7 2457at_fn_group_banner 7 'suffix.at:17' \ 2458 "suffix" " " 2 2459at_xfail=no 2460( 2461 $as_echo "7. $at_setup_line: testing $at_desc ..." 2462 $at_traceon 2463 2464 2465{ set +x 2466$as_echo "$at_srcdir/suffix.at:19: cat > dicod.conf <<__EOT__ 2467prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2468load-module dictorg { 2469 command \"dictorg dbdir=\$abs_srcdir/db\"; 2470} 2471 2472database { 2473 name eng-num; 2474 handler \"dictorg database=eng-num\"; 2475} 2476__EOT__ 2477 2478cat >input <<'_ATEOF' 2479match eng-num suffix \"twenty\" 2480quit 2481_ATEOF 2482 2483dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2484" 2485at_fn_check_prepare_notrace 'an embedded newline' "suffix.at:19" 2486( $at_check_trace; cat > dicod.conf <<__EOT__ 2487prepend-load-path "$abs_top_builddir/modules/dict.org"; 2488load-module dictorg { 2489 command "dictorg dbdir=$abs_srcdir/db"; 2490} 2491 2492database { 2493 name eng-num; 2494 handler "dictorg database=eng-num"; 2495} 2496__EOT__ 2497 2498cat >input <<'_ATEOF' 2499match eng-num suffix "twenty" 2500quit 2501_ATEOF 2502 2503dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2504 2505) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2506at_status=$? at_failed=false 2507$at_check_filter 2508at_fn_diff_devnull "$at_stderr" || at_failed=: 2509echo >>"$at_stdout"; $as_echo "220 2510152 2 matches found: list follows 2511eng-num \"one hundred and twenty\" 2512eng-num \"twenty\" 2513. 2514250 2515221 2516" | \ 2517 $at_diff - "$at_stdout" || at_failed=: 2518at_fn_check_status 0 $at_status "$at_srcdir/suffix.at:19" 2519$at_failed && at_fn_log_failure 2520$at_traceon; } 2521 2522 set +x 2523 $at_times_p && times >"$at_times_file" 2524) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2525read at_status <"$at_status_file" 2526#AT_STOP_7 2527#AT_START_8 2528at_fn_group_banner 8 'word.at:17' \ 2529 "word" " " 2 2530at_xfail=no 2531( 2532 $as_echo "8. $at_setup_line: testing $at_desc ..." 2533 $at_traceon 2534 2535 2536{ set +x 2537$as_echo "$at_srcdir/word.at:19: cat > dicod.conf <<__EOT__ 2538prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2539load-module dictorg { 2540 command \"dictorg dbdir=\$abs_srcdir/db\"; 2541} 2542 2543prepend-load-path \"\$abs_top_builddir/modules/word\"; 2544load-module word; 2545database { 2546 name eng-num; 2547 handler \"dictorg database=eng-num\"; 2548} 2549__EOT__ 2550 2551cat >input <<'_ATEOF' 2552match eng-num word \"five\" 2553quit 2554_ATEOF 2555 2556dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2557" 2558at_fn_check_prepare_notrace 'an embedded newline' "word.at:19" 2559( $at_check_trace; cat > dicod.conf <<__EOT__ 2560prepend-load-path "$abs_top_builddir/modules/dict.org"; 2561load-module dictorg { 2562 command "dictorg dbdir=$abs_srcdir/db"; 2563} 2564 2565prepend-load-path "$abs_top_builddir/modules/word"; 2566load-module word; 2567database { 2568 name eng-num; 2569 handler "dictorg database=eng-num"; 2570} 2571__EOT__ 2572 2573cat >input <<'_ATEOF' 2574match eng-num word "five" 2575quit 2576_ATEOF 2577 2578dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2579 2580) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2581at_status=$? at_failed=false 2582$at_check_filter 2583at_fn_diff_devnull "$at_stderr" || at_failed=: 2584echo >>"$at_stdout"; $as_echo "220 2585152 2 matches found: list follows 2586eng-num \"five\" 2587eng-num \"one hundred and five\" 2588. 2589250 2590221 2591" | \ 2592 $at_diff - "$at_stdout" || at_failed=: 2593at_fn_check_status 0 $at_status "$at_srcdir/word.at:19" 2594$at_failed && at_fn_log_failure 2595$at_traceon; } 2596 2597 set +x 2598 $at_times_p && times >"$at_times_file" 2599) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2600read at_status <"$at_status_file" 2601#AT_STOP_8 2602#AT_START_9 2603at_fn_group_banner 9 'define.at:17' \ 2604 "define" " " 3 2605at_xfail=no 2606( 2607 $as_echo "9. $at_setup_line: testing $at_desc ..." 2608 $at_traceon 2609 2610 2611{ set +x 2612$as_echo "$at_srcdir/define.at:19: cat > dicod.conf <<__EOT__ 2613prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2614load-module dictorg { 2615 command \"dictorg dbdir=\$abs_srcdir/db\"; 2616} 2617 2618database { 2619 name eng-num; 2620 handler \"dictorg database=eng-num\"; 2621} 2622__EOT__ 2623 2624cat >input <<'_ATEOF' 2625define eng-num \"thirty-two\" 2626quit 2627_ATEOF 2628 2629dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2630" 2631at_fn_check_prepare_notrace 'an embedded newline' "define.at:19" 2632( $at_check_trace; cat > dicod.conf <<__EOT__ 2633prepend-load-path "$abs_top_builddir/modules/dict.org"; 2634load-module dictorg { 2635 command "dictorg dbdir=$abs_srcdir/db"; 2636} 2637 2638database { 2639 name eng-num; 2640 handler "dictorg database=eng-num"; 2641} 2642__EOT__ 2643 2644cat >input <<'_ATEOF' 2645define eng-num "thirty-two" 2646quit 2647_ATEOF 2648 2649dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2650 2651) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2652at_status=$? at_failed=false 2653$at_check_filter 2654at_fn_diff_devnull "$at_stderr" || at_failed=: 2655echo >>"$at_stdout"; $as_echo "220 2656150 1 definitions found: list follows 2657151 \"thirty-two\" eng-num \"English numerals from 1 to 200\" 2658thirty-two 2659 32 2660 2661. 2662250 2663221 2664" | \ 2665 $at_diff - "$at_stdout" || at_failed=: 2666at_fn_check_status 0 $at_status "$at_srcdir/define.at:19" 2667$at_failed && at_fn_log_failure 2668$at_traceon; } 2669 2670 set +x 2671 $at_times_p && times >"$at_times_file" 2672) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2673read at_status <"$at_status_file" 2674#AT_STOP_9 2675#AT_START_10 2676at_fn_group_banner 10 'ovshowdb.at:17' \ 2677 "show db" " " 4 2678at_xfail=no 2679( 2680 $as_echo "10. $at_setup_line: testing $at_desc ..." 2681 $at_traceon 2682 2683 2684{ set +x 2685$as_echo "$at_srcdir/ovshowdb.at:19: cat > dicod.conf <<__EOT__ 2686prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2687load-module dictorg { 2688 command \"dictorg dbdir=\$abs_srcdir/db\"; 2689} 2690 2691database { 2692 name ell-num_nomime; 2693 handler \"dictorg database=ell-num\"; 2694 visible no; 2695} 2696database { 2697 name ell-num_mime; 2698 handler \"dictorg database=ell-num_mime\"; 2699 visible no; 2700} 2701database { 2702 name ell-num; 2703 handler \"virtual\"; 2704 database ell-num_nomime nomime; 2705 database ell-num_mime mime; 2706} 2707 2708__EOT__ 2709 2710cat >input <<'_ATEOF' 2711show db 2712quit 2713_ATEOF 2714 2715dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2716" 2717at_fn_check_prepare_notrace 'an embedded newline' "ovshowdb.at:19" 2718( $at_check_trace; cat > dicod.conf <<__EOT__ 2719prepend-load-path "$abs_top_builddir/modules/dict.org"; 2720load-module dictorg { 2721 command "dictorg dbdir=$abs_srcdir/db"; 2722} 2723 2724database { 2725 name ell-num_nomime; 2726 handler "dictorg database=ell-num"; 2727 visible no; 2728} 2729database { 2730 name ell-num_mime; 2731 handler "dictorg database=ell-num_mime"; 2732 visible no; 2733} 2734database { 2735 name ell-num; 2736 handler "virtual"; 2737 database ell-num_nomime nomime; 2738 database ell-num_mime mime; 2739} 2740 2741__EOT__ 2742 2743cat >input <<'_ATEOF' 2744show db 2745quit 2746_ATEOF 2747 2748dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2749 2750) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2751at_status=$? at_failed=false 2752$at_check_filter 2753at_fn_diff_devnull "$at_stderr" || at_failed=: 2754echo >>"$at_stdout"; $as_echo "220 2755110 1 databases present 2756ell-num \"Greek numerals from 1 to 200\" 2757. 2758250 2759221 2760" | \ 2761 $at_diff - "$at_stdout" || at_failed=: 2762at_fn_check_status 0 $at_status "$at_srcdir/ovshowdb.at:19" 2763$at_failed && at_fn_log_failure 2764$at_traceon; } 2765 2766 set +x 2767 $at_times_p && times >"$at_times_file" 2768) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2769read at_status <"$at_status_file" 2770#AT_STOP_10 2771#AT_START_11 2772at_fn_group_banner 11 'ovexact.at:17' \ 2773 "exact match" " " 4 2774at_xfail=no 2775( 2776 $as_echo "11. $at_setup_line: testing $at_desc ..." 2777 $at_traceon 2778 2779 2780{ set +x 2781$as_echo "$at_srcdir/ovexact.at:19: cat > dicod.conf <<__EOT__ 2782prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2783load-module dictorg { 2784 command \"dictorg dbdir=\$abs_srcdir/db\"; 2785} 2786 2787capability mime; 2788database { 2789 name ell-num_nomime; 2790 handler \"dictorg database=ell-num\"; 2791 visible no; 2792} 2793database { 2794 name ell-num_mime; 2795 handler \"dictorg database=ell-num_mime\"; 2796 visible no; 2797} 2798database { 2799 name ell-num; 2800 handler \"virtual\"; 2801 database ell-num_nomime nomime; 2802 database ell-num_mime mime; 2803} 2804 2805__EOT__ 2806 2807cat >input <<'_ATEOF' 2808match * exact \"πενηντα εξι\" 2809quit 2810_ATEOF 2811 2812dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2813" 2814at_fn_check_prepare_notrace 'an embedded newline' "ovexact.at:19" 2815( $at_check_trace; cat > dicod.conf <<__EOT__ 2816prepend-load-path "$abs_top_builddir/modules/dict.org"; 2817load-module dictorg { 2818 command "dictorg dbdir=$abs_srcdir/db"; 2819} 2820 2821capability mime; 2822database { 2823 name ell-num_nomime; 2824 handler "dictorg database=ell-num"; 2825 visible no; 2826} 2827database { 2828 name ell-num_mime; 2829 handler "dictorg database=ell-num_mime"; 2830 visible no; 2831} 2832database { 2833 name ell-num; 2834 handler "virtual"; 2835 database ell-num_nomime nomime; 2836 database ell-num_mime mime; 2837} 2838 2839__EOT__ 2840 2841cat >input <<'_ATEOF' 2842match * exact "πενηντα εξι" 2843quit 2844_ATEOF 2845 2846dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2847 2848) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2849at_status=$? at_failed=false 2850$at_check_filter 2851at_fn_diff_devnull "$at_stderr" || at_failed=: 2852echo >>"$at_stdout"; $as_echo "220 2853152 1 matches found: list follows 2854ell-num \"πενήντα έξι\" 2855. 2856250 2857221 2858" | \ 2859 $at_diff - "$at_stdout" || at_failed=: 2860at_fn_check_status 0 $at_status "$at_srcdir/ovexact.at:19" 2861$at_failed && at_fn_log_failure 2862$at_traceon; } 2863 2864 set +x 2865 $at_times_p && times >"$at_times_file" 2866) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2867read at_status <"$at_status_file" 2868#AT_STOP_11 2869#AT_START_12 2870at_fn_group_banner 12 'ovdefnomime.at:17' \ 2871 "define (no mime)" " " 4 2872at_xfail=no 2873( 2874 $as_echo "12. $at_setup_line: testing $at_desc ..." 2875 $at_traceon 2876 2877 2878{ set +x 2879$as_echo "$at_srcdir/ovdefnomime.at:19: cat > dicod.conf <<__EOT__ 2880prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2881load-module dictorg { 2882 command \"dictorg dbdir=\$abs_srcdir/db\"; 2883} 2884 2885capability mime; 2886database { 2887 name ell-num_nomime; 2888 handler \"dictorg database=ell-num\"; 2889 visible no; 2890} 2891database { 2892 name ell-num_mime; 2893 handler \"dictorg database=ell-num_mime\"; 2894 visible no; 2895} 2896database { 2897 name ell-num; 2898 handler \"virtual\"; 2899 database ell-num_nomime nomime; 2900 database ell-num_mime mime; 2901} 2902 2903__EOT__ 2904 2905cat >input <<'_ATEOF' 2906define ell-num \"εκατόν είκοσι πέντε\" 2907quit 2908_ATEOF 2909 2910dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 2911" 2912at_fn_check_prepare_notrace 'an embedded newline' "ovdefnomime.at:19" 2913( $at_check_trace; cat > dicod.conf <<__EOT__ 2914prepend-load-path "$abs_top_builddir/modules/dict.org"; 2915load-module dictorg { 2916 command "dictorg dbdir=$abs_srcdir/db"; 2917} 2918 2919capability mime; 2920database { 2921 name ell-num_nomime; 2922 handler "dictorg database=ell-num"; 2923 visible no; 2924} 2925database { 2926 name ell-num_mime; 2927 handler "dictorg database=ell-num_mime"; 2928 visible no; 2929} 2930database { 2931 name ell-num; 2932 handler "virtual"; 2933 database ell-num_nomime nomime; 2934 database ell-num_mime mime; 2935} 2936 2937__EOT__ 2938 2939cat >input <<'_ATEOF' 2940define ell-num "εκατόν είκοσι πέντε" 2941quit 2942_ATEOF 2943 2944dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 2945 2946) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2947at_status=$? at_failed=false 2948$at_check_filter 2949at_fn_diff_devnull "$at_stderr" || at_failed=: 2950echo >>"$at_stdout"; $as_echo "220 2951150 1 definitions found: list follows 2952151 \"εκατόν είκοσι πέντε\" ell-num \"Greek numerals from 1 to 200\" 2953εκατόν είκοσι πέντε 2954 125 2955 2956. 2957250 2958221 2959" | \ 2960 $at_diff - "$at_stdout" || at_failed=: 2961at_fn_check_status 0 $at_status "$at_srcdir/ovdefnomime.at:19" 2962$at_failed && at_fn_log_failure 2963$at_traceon; } 2964 2965 set +x 2966 $at_times_p && times >"$at_times_file" 2967) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2968read at_status <"$at_status_file" 2969#AT_STOP_12 2970#AT_START_13 2971at_fn_group_banner 13 'ovdefmime.at:17' \ 2972 "define (mime)" " " 4 2973at_xfail=no 2974( 2975 $as_echo "13. $at_setup_line: testing $at_desc ..." 2976 $at_traceon 2977 2978 2979{ set +x 2980$as_echo "$at_srcdir/ovdefmime.at:19: cat > dicod.conf <<__EOT__ 2981prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 2982load-module dictorg { 2983 command \"dictorg dbdir=\$abs_srcdir/db\"; 2984} 2985 2986capability mime; 2987database { 2988 name ell-num_nomime; 2989 handler \"dictorg database=ell-num\"; 2990 visible no; 2991} 2992database { 2993 name ell-num_mime; 2994 handler \"dictorg database=ell-num_mime\"; 2995 visible no; 2996} 2997database { 2998 name ell-num; 2999 handler \"virtual\"; 3000 database ell-num_nomime nomime; 3001 database ell-num_mime mime; 3002} 3003 3004__EOT__ 3005 3006cat >input <<'_ATEOF' 3007option mime 3008define ell-num \"εκατόν είκοσι πέντε\" 3009quit 3010_ATEOF 3011 3012dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 3013" 3014at_fn_check_prepare_notrace 'an embedded newline' "ovdefmime.at:19" 3015( $at_check_trace; cat > dicod.conf <<__EOT__ 3016prepend-load-path "$abs_top_builddir/modules/dict.org"; 3017load-module dictorg { 3018 command "dictorg dbdir=$abs_srcdir/db"; 3019} 3020 3021capability mime; 3022database { 3023 name ell-num_nomime; 3024 handler "dictorg database=ell-num"; 3025 visible no; 3026} 3027database { 3028 name ell-num_mime; 3029 handler "dictorg database=ell-num_mime"; 3030 visible no; 3031} 3032database { 3033 name ell-num; 3034 handler "virtual"; 3035 database ell-num_nomime nomime; 3036 database ell-num_mime mime; 3037} 3038 3039__EOT__ 3040 3041cat >input <<'_ATEOF' 3042option mime 3043define ell-num "εκατόν είκοσι πέντε" 3044quit 3045_ATEOF 3046 3047dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 3048 3049) >>"$at_stdout" 2>>"$at_stderr" 5>&- 3050at_status=$? at_failed=false 3051$at_check_filter 3052at_fn_diff_devnull "$at_stderr" || at_failed=: 3053echo >>"$at_stdout"; $as_echo "220 3054250 3055150 1 definitions found: list follows 3056151 \"εκατόν είκοσι πέντε\" ell-num \"Greek numerals from 1 to 200\" 3057Content-Type: text/plain; charset=utf-8 3058Content-Transfer-Encoding: base64 3059 3060zrXOus6xz4TPjM69IM61zq/Ous6/z4POuSDPgM6tzr3PhM61CiAgIDEyNQo= 3061 3062. 3063250 3064221 3065" | \ 3066 $at_diff - "$at_stdout" || at_failed=: 3067at_fn_check_status 0 $at_status "$at_srcdir/ovdefmime.at:19" 3068$at_failed && at_fn_log_failure 3069$at_traceon; } 3070 3071 set +x 3072 $at_times_p && times >"$at_times_file" 3073) 5>&1 2>&1 7>&- | eval $at_tee_pipe 3074read at_status <"$at_status_file" 3075#AT_STOP_13 3076#AT_START_14 3077at_fn_group_banner 14 'vshowdb.at:17' \ 3078 "show db" " " 5 3079at_xfail=no 3080( 3081 $as_echo "14. $at_setup_line: testing $at_desc ..." 3082 $at_traceon 3083 3084 3085{ set +x 3086$as_echo "$at_srcdir/vshowdb.at:19: cat > dicod.conf <<__EOT__ 3087prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 3088load-module dictorg { 3089 command \"dictorg dbdir=\$abs_srcdir/db\"; 3090} 3091 3092database { 3093 name num-eng; 3094 handler \"dictorg database=num-eng\"; 3095} 3096database { 3097 name num-ell; 3098 handler \"dictorg database=num-ell\"; 3099} 3100database { 3101 name num; 3102 handler \"virtual\"; 3103 description \"Numerals\"; 3104 database num-eng; 3105 database num-ell; 3106} 3107 3108__EOT__ 3109 3110cat >input <<'_ATEOF' 3111show db 3112quit 3113_ATEOF 3114 3115dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 3116" 3117at_fn_check_prepare_notrace 'an embedded newline' "vshowdb.at:19" 3118( $at_check_trace; cat > dicod.conf <<__EOT__ 3119prepend-load-path "$abs_top_builddir/modules/dict.org"; 3120load-module dictorg { 3121 command "dictorg dbdir=$abs_srcdir/db"; 3122} 3123 3124database { 3125 name num-eng; 3126 handler "dictorg database=num-eng"; 3127} 3128database { 3129 name num-ell; 3130 handler "dictorg database=num-ell"; 3131} 3132database { 3133 name num; 3134 handler "virtual"; 3135 description "Numerals"; 3136 database num-eng; 3137 database num-ell; 3138} 3139 3140__EOT__ 3141 3142cat >input <<'_ATEOF' 3143show db 3144quit 3145_ATEOF 3146 3147dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 3148 3149) >>"$at_stdout" 2>>"$at_stderr" 5>&- 3150at_status=$? at_failed=false 3151$at_check_filter 3152at_fn_diff_devnull "$at_stderr" || at_failed=: 3153echo >>"$at_stdout"; $as_echo "220 3154110 3 databases present 3155num-eng \"Numbers to English numerals\" 3156num-ell \"Numbers to Greek numerals\" 3157num \"Numerals\" 3158. 3159250 3160221 3161" | \ 3162 $at_diff - "$at_stdout" || at_failed=: 3163at_fn_check_status 0 $at_status "$at_srcdir/vshowdb.at:19" 3164$at_failed && at_fn_log_failure 3165$at_traceon; } 3166 3167 set +x 3168 $at_times_p && times >"$at_times_file" 3169) 5>&1 2>&1 7>&- | eval $at_tee_pipe 3170read at_status <"$at_status_file" 3171#AT_STOP_14 3172#AT_START_15 3173at_fn_group_banner 15 'vexact.at:17' \ 3174 "exact match" " " 5 3175at_xfail=no 3176( 3177 $as_echo "15. $at_setup_line: testing $at_desc ..." 3178 $at_traceon 3179 3180 3181{ set +x 3182$as_echo "$at_srcdir/vexact.at:19: cat > dicod.conf <<__EOT__ 3183prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 3184load-module dictorg { 3185 command \"dictorg dbdir=\$abs_srcdir/db\"; 3186} 3187 3188database { 3189 name num-eng; 3190 handler \"dictorg database=num-eng\"; 3191} 3192database { 3193 name num-ell; 3194 handler \"dictorg database=num-ell\"; 3195} 3196database { 3197 name num; 3198 handler \"virtual\"; 3199 description \"Numerals\"; 3200 database num-eng; 3201 database num-ell; 3202} 3203 3204__EOT__ 3205 3206cat >input <<'_ATEOF' 3207match * exact \"20\" 3208quit 3209_ATEOF 3210 3211dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 3212" 3213at_fn_check_prepare_notrace 'an embedded newline' "vexact.at:19" 3214( $at_check_trace; cat > dicod.conf <<__EOT__ 3215prepend-load-path "$abs_top_builddir/modules/dict.org"; 3216load-module dictorg { 3217 command "dictorg dbdir=$abs_srcdir/db"; 3218} 3219 3220database { 3221 name num-eng; 3222 handler "dictorg database=num-eng"; 3223} 3224database { 3225 name num-ell; 3226 handler "dictorg database=num-ell"; 3227} 3228database { 3229 name num; 3230 handler "virtual"; 3231 description "Numerals"; 3232 database num-eng; 3233 database num-ell; 3234} 3235 3236__EOT__ 3237 3238cat >input <<'_ATEOF' 3239match * exact "20" 3240quit 3241_ATEOF 3242 3243dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 3244 3245) >>"$at_stdout" 2>>"$at_stderr" 5>&- 3246at_status=$? at_failed=false 3247$at_check_filter 3248at_fn_diff_devnull "$at_stderr" || at_failed=: 3249echo >>"$at_stdout"; $as_echo "220 3250152 2 matches found: list follows 3251num-eng \"20\" 3252num-ell \"20\" 3253. 3254250 3255221 3256" | \ 3257 $at_diff - "$at_stdout" || at_failed=: 3258at_fn_check_status 0 $at_status "$at_srcdir/vexact.at:19" 3259$at_failed && at_fn_log_failure 3260$at_traceon; } 3261 3262 set +x 3263 $at_times_p && times >"$at_times_file" 3264) 5>&1 2>&1 7>&- | eval $at_tee_pipe 3265read at_status <"$at_status_file" 3266#AT_STOP_15 3267#AT_START_16 3268at_fn_group_banner 16 'vdefine.at:17' \ 3269 "define" " " 5 3270at_xfail=no 3271( 3272 $as_echo "16. $at_setup_line: testing $at_desc ..." 3273 $at_traceon 3274 3275 3276{ set +x 3277$as_echo "$at_srcdir/vdefine.at:19: cat > dicod.conf <<__EOT__ 3278prepend-load-path \"\$abs_top_builddir/modules/dict.org\"; 3279load-module dictorg { 3280 command \"dictorg dbdir=\$abs_srcdir/db\"; 3281} 3282 3283database { 3284 name num-eng; 3285 handler \"dictorg database=num-eng\"; 3286} 3287database { 3288 name num-ell; 3289 handler \"dictorg database=num-ell\"; 3290} 3291database { 3292 name num; 3293 handler \"virtual\"; 3294 description \"Numerals\"; 3295 database num-eng; 3296 database num-ell; 3297} 3298 3299__EOT__ 3300 3301cat >input <<'_ATEOF' 3302define * \"20\" 3303quit 3304_ATEOF 3305 3306dicod --config ./dicod.conf --stderr -i < input | tr -d '\\r' | sed 's/^\\(2[25][0-9]\\) .*/\\1/;s/ *\$//' 3307" 3308at_fn_check_prepare_notrace 'an embedded newline' "vdefine.at:19" 3309( $at_check_trace; cat > dicod.conf <<__EOT__ 3310prepend-load-path "$abs_top_builddir/modules/dict.org"; 3311load-module dictorg { 3312 command "dictorg dbdir=$abs_srcdir/db"; 3313} 3314 3315database { 3316 name num-eng; 3317 handler "dictorg database=num-eng"; 3318} 3319database { 3320 name num-ell; 3321 handler "dictorg database=num-ell"; 3322} 3323database { 3324 name num; 3325 handler "virtual"; 3326 description "Numerals"; 3327 database num-eng; 3328 database num-ell; 3329} 3330 3331__EOT__ 3332 3333cat >input <<'_ATEOF' 3334define * "20" 3335quit 3336_ATEOF 3337 3338dicod --config ./dicod.conf --stderr -i < input | tr -d '\r' | sed 's/^\(2[25][0-9]\) .*/\1/;s/ *$//' 3339 3340) >>"$at_stdout" 2>>"$at_stderr" 5>&- 3341at_status=$? at_failed=false 3342$at_check_filter 3343at_fn_diff_devnull "$at_stderr" || at_failed=: 3344echo >>"$at_stdout"; $as_echo "220 3345150 2 definitions found: list follows 3346151 \"20\" num-eng \"Numbers to English numerals\" 334720 3348 twenty 3349 3350. 3351151 \"20\" num-ell \"Numbers to Greek numerals\" 335220 3353 είκοσι 3354 3355. 3356250 3357221 3358" | \ 3359 $at_diff - "$at_stdout" || at_failed=: 3360at_fn_check_status 0 $at_status "$at_srcdir/vdefine.at:19" 3361$at_failed && at_fn_log_failure 3362$at_traceon; } 3363 3364 set +x 3365 $at_times_p && times >"$at_times_file" 3366) 5>&1 2>&1 7>&- | eval $at_tee_pipe 3367read at_status <"$at_status_file" 3368#AT_STOP_16 3369