1#! /bin/sh 2# Generated from bootstrap/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='kyua' 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;testsuite.at:70;test program crashes in test list;; 5942;testsuite.at:81;test program prints an empty test list;; 5953;testsuite.at:92;test program with zero test cases;; 5964;testsuite.at:103;run test case that passes;; 5975;testsuite.at:115;run test case that fails;; 5986;testsuite.at:128;run test case that skips;; 5997;testsuite.at:141;run two test cases, success;; 6008;testsuite.at:154;run two test cases, failure;; 6019;testsuite.at:167;run mixed test cases;; 60210;testsuite.at:181;run tests from build directories;; 603" 604# List of the all the test groups. 605at_groups_all=`$as_echo "$at_help_all" | sed 's/;.*//'` 606 607# at_fn_validate_ranges NAME... 608# ----------------------------- 609# Validate and normalize the test group number contained in each variable 610# NAME. Leading zeroes are treated as decimal. 611at_fn_validate_ranges () 612{ 613 for at_grp 614 do 615 eval at_value=\$$at_grp 616 if test $at_value -lt 1 || test $at_value -gt 10; then 617 $as_echo "invalid test group: $at_value" >&2 618 exit 1 619 fi 620 case $at_value in 621 0*) # We want to treat leading 0 as decimal, like expr and test, but 622 # AS_VAR_ARITH treats it as octal if it uses $(( )). 623 # With XSI shells, ${at_value#${at_value%%[1-9]*}} avoids the 624 # expr fork, but it is not worth the effort to determine if the 625 # shell supports XSI when the user can just avoid leading 0. 626 eval $at_grp='`expr $at_value + 0`' ;; 627 esac 628 done 629} 630 631at_prev= 632for at_option 633do 634 # If the previous option needs an argument, assign it. 635 if test -n "$at_prev"; then 636 at_option=$at_prev=$at_option 637 at_prev= 638 fi 639 640 case $at_option in 641 *=?*) at_optarg=`expr "X$at_option" : '[^=]*=\(.*\)'` ;; 642 *) at_optarg= ;; 643 esac 644 645 # Accept the important Cygnus configure options, so we can diagnose typos. 646 647 case $at_option in 648 --help | -h ) 649 at_help_p=: 650 ;; 651 652 --list | -l ) 653 at_list_p=: 654 ;; 655 656 --version | -V ) 657 at_version_p=: 658 ;; 659 660 --clean | -c ) 661 at_clean=: 662 ;; 663 664 --color ) 665 at_color=always 666 ;; 667 --color=* ) 668 case $at_optarg in 669 no | never | none) at_color=never ;; 670 auto | tty | if-tty) at_color=auto ;; 671 always | yes | force) at_color=always ;; 672 *) at_optname=`echo " $at_option" | sed 's/^ //; s/=.*//'` 673 as_fn_error $? "unrecognized argument to $at_optname: $at_optarg" ;; 674 esac 675 ;; 676 677 --debug | -d ) 678 at_debug_p=: 679 ;; 680 681 --errexit | -e ) 682 at_debug_p=: 683 at_errexit_p=: 684 ;; 685 686 --verbose | -v ) 687 at_verbose=; at_quiet=: 688 ;; 689 690 --trace | -x ) 691 at_traceon='set -x' 692 at_trace_echo=echo 693 at_check_filter_trace=at_fn_filter_trace 694 ;; 695 696 [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9]) 697 at_fn_validate_ranges at_option 698 as_fn_append at_groups "$at_option$as_nl" 699 ;; 700 701 # Ranges 702 [0-9]- | [0-9][0-9]- | [0-9][0-9][0-9]- | [0-9][0-9][0-9][0-9]-) 703 at_range_start=`echo $at_option |tr -d X-` 704 at_fn_validate_ranges at_range_start 705 at_range=`$as_echo "$at_groups_all" | \ 706 sed -ne '/^'$at_range_start'$/,$p'` 707 as_fn_append at_groups "$at_range$as_nl" 708 ;; 709 710 -[0-9] | -[0-9][0-9] | -[0-9][0-9][0-9] | -[0-9][0-9][0-9][0-9]) 711 at_range_end=`echo $at_option |tr -d X-` 712 at_fn_validate_ranges at_range_end 713 at_range=`$as_echo "$at_groups_all" | \ 714 sed -ne '1,/^'$at_range_end'$/p'` 715 as_fn_append at_groups "$at_range$as_nl" 716 ;; 717 718 [0-9]-[0-9] | [0-9]-[0-9][0-9] | [0-9]-[0-9][0-9][0-9] | \ 719 [0-9]-[0-9][0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9] | \ 720 [0-9][0-9]-[0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9][0-9][0-9] | \ 721 [0-9][0-9][0-9]-[0-9][0-9][0-9] | \ 722 [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] | \ 723 [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] ) 724 at_range_start=`expr $at_option : '\(.*\)-'` 725 at_range_end=`expr $at_option : '.*-\(.*\)'` 726 if test $at_range_start -gt $at_range_end; then 727 at_tmp=$at_range_end 728 at_range_end=$at_range_start 729 at_range_start=$at_tmp 730 fi 731 at_fn_validate_ranges at_range_start at_range_end 732 at_range=`$as_echo "$at_groups_all" | \ 733 sed -ne '/^'$at_range_start'$/,/^'$at_range_end'$/p'` 734 as_fn_append at_groups "$at_range$as_nl" 735 ;; 736 737 # Directory selection. 738 --directory | -C ) 739 at_prev=--directory 740 ;; 741 --directory=* ) 742 at_change_dir=: 743 at_dir=$at_optarg 744 if test x- = "x$at_dir" ; then 745 at_dir=./- 746 fi 747 ;; 748 749 # Parallel execution. 750 --jobs | -j ) 751 at_jobs=0 752 ;; 753 --jobs=* | -j[0-9]* ) 754 if test -n "$at_optarg"; then 755 at_jobs=$at_optarg 756 else 757 at_jobs=`expr X$at_option : 'X-j\(.*\)'` 758 fi 759 case $at_jobs in *[!0-9]*) 760 at_optname=`echo " $at_option" | sed 's/^ //; s/[0-9=].*//'` 761 as_fn_error $? "non-numeric argument to $at_optname: $at_jobs" ;; 762 esac 763 ;; 764 765 # Keywords. 766 --keywords | -k ) 767 at_prev=--keywords 768 ;; 769 --keywords=* ) 770 at_groups_selected=$at_help_all 771 at_save_IFS=$IFS 772 IFS=, 773 set X $at_optarg 774 shift 775 IFS=$at_save_IFS 776 for at_keyword 777 do 778 at_invert= 779 case $at_keyword in 780 '!'*) 781 at_invert="-v" 782 at_keyword=`expr "X$at_keyword" : 'X!\(.*\)'` 783 ;; 784 esac 785 # It is on purpose that we match the test group titles too. 786 at_groups_selected=`$as_echo "$at_groups_selected" | 787 grep -i $at_invert "^[1-9][^;]*;.*[; ]$at_keyword[ ;]"` 788 done 789 # Smash the keywords. 790 at_groups_selected=`$as_echo "$at_groups_selected" | sed 's/;.*//'` 791 as_fn_append at_groups "$at_groups_selected$as_nl" 792 ;; 793 --recheck) 794 at_recheck=: 795 ;; 796 797 *=*) 798 at_envvar=`expr "x$at_option" : 'x\([^=]*\)='` 799 # Reject names that are not valid shell variable names. 800 case $at_envvar in 801 '' | [0-9]* | *[!_$as_cr_alnum]* ) 802 as_fn_error $? "invalid variable name: \`$at_envvar'" ;; 803 esac 804 at_value=`$as_echo "$at_optarg" | sed "s/'/'\\\\\\\\''/g"` 805 # Export now, but save eval for later and for debug scripts. 806 export $at_envvar 807 as_fn_append at_debug_args " $at_envvar='$at_value'" 808 ;; 809 810 *) $as_echo "$as_me: invalid option: $at_option" >&2 811 $as_echo "Try \`$0 --help' for more information." >&2 812 exit 1 813 ;; 814 esac 815done 816 817# Verify our last option didn't require an argument 818if test -n "$at_prev"; then : 819 as_fn_error $? "\`$at_prev' requires an argument" 820fi 821 822# The file containing the suite. 823at_suite_log=$at_dir/$as_me.log 824 825# Selected test groups. 826if test -z "$at_groups$at_recheck"; then 827 at_groups=$at_groups_all 828else 829 if test -n "$at_recheck" && test -r "$at_suite_log"; then 830 at_oldfails=`sed -n ' 831 /^Failed tests:$/,/^Skipped tests:$/{ 832 s/^[ ]*\([1-9][0-9]*\):.*/\1/p 833 } 834 /^Unexpected passes:$/,/^## Detailed failed tests/{ 835 s/^[ ]*\([1-9][0-9]*\):.*/\1/p 836 } 837 /^## Detailed failed tests/q 838 ' "$at_suite_log"` 839 as_fn_append at_groups "$at_oldfails$as_nl" 840 fi 841 # Sort the tests, removing duplicates. 842 at_groups=`$as_echo "$at_groups" | sort -nu | sed '/^$/d'` 843fi 844 845if test x"$at_color" = xalways \ 846 || { test x"$at_color" = xauto && test -t 1; }; then 847 at_red=`printf '\033[0;31m'` 848 at_grn=`printf '\033[0;32m'` 849 at_lgn=`printf '\033[1;32m'` 850 at_blu=`printf '\033[1;34m'` 851 at_std=`printf '\033[m'` 852else 853 at_red= at_grn= at_lgn= at_blu= at_std= 854fi 855 856# Help message. 857if $at_help_p; then 858 cat <<_ATEOF || at_write_fail=1 859Usage: $0 [OPTION]... [VARIABLE=VALUE]... [TESTS] 860 861Run all the tests, or the selected TESTS, given by numeric ranges, and 862save a detailed log file. Upon failure, create debugging scripts. 863 864Do not change environment variables directly. Instead, set them via 865command line arguments. Set \`AUTOTEST_PATH' to select the executables 866to exercise. Each relative directory is expanded as build and source 867directories relative to the top level of this distribution. 868E.g., from within the build directory /tmp/foo-1.0, invoking this: 869 870 $ $0 AUTOTEST_PATH=bin 871 872is equivalent to the following, assuming the source directory is /src/foo-1.0: 873 874 PATH=/tmp/foo-1.0/bin:/src/foo-1.0/bin:\$PATH $0 875_ATEOF 876cat <<_ATEOF || at_write_fail=1 877 878Operation modes: 879 -h, --help print the help message, then exit 880 -V, --version print version number, then exit 881 -c, --clean remove all the files this test suite might create and exit 882 -l, --list describes all the tests, or the selected TESTS 883_ATEOF 884cat <<_ATEOF || at_write_fail=1 885 886Execution tuning: 887 -C, --directory=DIR 888 change to directory DIR before starting 889 --color[=never|auto|always] 890 enable colored test results on terminal, or always 891 -j, --jobs[=N] 892 Allow N jobs at once; infinite jobs with no arg (default 1) 893 -k, --keywords=KEYWORDS 894 select the tests matching all the comma-separated KEYWORDS 895 multiple \`-k' accumulate; prefixed \`!' negates a KEYWORD 896 --recheck select all tests that failed or passed unexpectedly last time 897 -e, --errexit abort as soon as a test fails; implies --debug 898 -v, --verbose force more detailed output 899 default for debugging scripts 900 -d, --debug inhibit clean up and top-level logging 901 default for debugging scripts 902 -x, --trace enable tests shell tracing 903_ATEOF 904cat <<_ATEOF || at_write_fail=1 905 906Report bugs to <kyua-discuss@googlegroups.com>. 907_ATEOF 908 exit $at_write_fail 909fi 910 911# List of tests. 912if $at_list_p; then 913 cat <<_ATEOF || at_write_fail=1 914Kyua - Command line interface 0.7 test suite: bootstrapping tests test groups: 915 916 NUM: FILE-NAME:LINE TEST-GROUP-NAME 917 KEYWORDS 918 919_ATEOF 920 # Pass an empty line as separator between selected groups and help. 921 $as_echo "$at_groups$as_nl$as_nl$at_help_all" | 922 awk 'NF == 1 && FS != ";" { 923 selected[$ 1] = 1 924 next 925 } 926 /^$/ { FS = ";" } 927 NF > 0 { 928 if (selected[$ 1]) { 929 printf " %3d: %-18s %s\n", $ 1, $ 2, $ 3 930 if ($ 4) { 931 lmax = 79 932 indent = " " 933 line = indent 934 len = length (line) 935 n = split ($ 4, a, " ") 936 for (i = 1; i <= n; i++) { 937 l = length (a[i]) + 1 938 if (i > 1 && len + l > lmax) { 939 print line 940 line = indent " " a[i] 941 len = length (line) 942 } else { 943 line = line " " a[i] 944 len += l 945 } 946 } 947 if (n) 948 print line 949 } 950 } 951 }' || at_write_fail=1 952 exit $at_write_fail 953fi 954if $at_version_p; then 955 $as_echo "$as_me (Kyua - Command line interface 0.7)" && 956 cat <<\_ATEOF || at_write_fail=1 957 958Copyright (C) 2012 Free Software Foundation, Inc. 959This test suite is free software; the Free Software Foundation gives 960unlimited permission to copy, distribute and modify it. 961_ATEOF 962 exit $at_write_fail 963fi 964 965# Should we print banners? Yes if more than one test is run. 966case $at_groups in #( 967 *$as_nl* ) 968 at_print_banners=: ;; #( 969 * ) at_print_banners=false ;; 970esac 971# Text for banner N, set to a single space once printed. 972 973# Take any -C into account. 974if $at_change_dir ; then 975 test x != "x$at_dir" && cd "$at_dir" \ 976 || as_fn_error $? "unable to change directory" 977 at_dir=`pwd` 978fi 979 980# Load the config files for any default variable assignments. 981for at_file in atconfig atlocal 982do 983 test -r $at_file || continue 984 . ./$at_file || as_fn_error $? "invalid content: $at_file" 985done 986 987# Autoconf <=2.59b set at_top_builddir instead of at_top_build_prefix: 988: "${at_top_build_prefix=$at_top_builddir}" 989 990# Perform any assignments requested during argument parsing. 991eval "$at_debug_args" 992 993# atconfig delivers names relative to the directory the test suite is 994# in, but the groups themselves are run in testsuite-dir/group-dir. 995if test -n "$at_top_srcdir"; then 996 builddir=../.. 997 for at_dir_var in srcdir top_srcdir top_build_prefix 998 do 999 eval at_val=\$at_$at_dir_var 1000 case $at_val in 1001 [\\/$]* | ?:[\\/]* ) at_prefix= ;; 1002 *) at_prefix=../../ ;; 1003 esac 1004 eval "$at_dir_var=\$at_prefix\$at_val" 1005 done 1006fi 1007 1008## -------------------- ## 1009## Directory structure. ## 1010## -------------------- ## 1011 1012# This is the set of directories and files used by this script 1013# (non-literals are capitalized): 1014# 1015# TESTSUITE - the testsuite 1016# TESTSUITE.log - summarizes the complete testsuite run 1017# TESTSUITE.dir/ - created during a run, remains after -d or failed test 1018# + at-groups/ - during a run: status of all groups in run 1019# | + NNN/ - during a run: meta-data about test group NNN 1020# | | + check-line - location (source file and line) of current AT_CHECK 1021# | | + status - exit status of current AT_CHECK 1022# | | + stdout - stdout of current AT_CHECK 1023# | | + stder1 - stderr, including trace 1024# | | + stderr - stderr, with trace filtered out 1025# | | + test-source - portion of testsuite that defines group 1026# | | + times - timestamps for computing duration 1027# | | + pass - created if group passed 1028# | | + xpass - created if group xpassed 1029# | | + fail - created if group failed 1030# | | + xfail - created if group xfailed 1031# | | + skip - created if group skipped 1032# + at-stop - during a run: end the run if this file exists 1033# + at-source-lines - during a run: cache of TESTSUITE line numbers for extraction 1034# + 0..NNN/ - created for each group NNN, remains after -d or failed test 1035# | + TESTSUITE.log - summarizes the group results 1036# | + ... - files created during the group 1037 1038# The directory the whole suite works in. 1039# Should be absolute to let the user `cd' at will. 1040at_suite_dir=$at_dir/$as_me.dir 1041# The file containing the suite ($at_dir might have changed since earlier). 1042at_suite_log=$at_dir/$as_me.log 1043# The directory containing helper files per test group. 1044at_helper_dir=$at_suite_dir/at-groups 1045# Stop file: if it exists, do not start new jobs. 1046at_stop_file=$at_suite_dir/at-stop 1047# The fifo used for the job dispatcher. 1048at_job_fifo=$at_suite_dir/at-job-fifo 1049 1050if $at_clean; then 1051 test -d "$at_suite_dir" && 1052 find "$at_suite_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \; 1053 rm -f -r "$at_suite_dir" "$at_suite_log" 1054 exit $? 1055fi 1056 1057# Don't take risks: use only absolute directories in PATH. 1058# 1059# For stand-alone test suites (ie. atconfig was not found), 1060# AUTOTEST_PATH is relative to `.'. 1061# 1062# For embedded test suites, AUTOTEST_PATH is relative to the top level 1063# of the package. Then expand it into build/src parts, since users 1064# may create executables in both places. 1065AUTOTEST_PATH=`$as_echo "$AUTOTEST_PATH" | sed "s|:|$PATH_SEPARATOR|g"` 1066at_path= 1067as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 1068for as_dir in $AUTOTEST_PATH $PATH 1069do 1070 IFS=$as_save_IFS 1071 test -z "$as_dir" && as_dir=. 1072 test -n "$at_path" && as_fn_append at_path $PATH_SEPARATOR 1073case $as_dir in 1074 [\\/]* | ?:[\\/]* ) 1075 as_fn_append at_path "$as_dir" 1076 ;; 1077 * ) 1078 if test -z "$at_top_build_prefix"; then 1079 # Stand-alone test suite. 1080 as_fn_append at_path "$as_dir" 1081 else 1082 # Embedded test suite. 1083 as_fn_append at_path "$at_top_build_prefix$as_dir$PATH_SEPARATOR" 1084 as_fn_append at_path "$at_top_srcdir/$as_dir" 1085 fi 1086 ;; 1087esac 1088 done 1089IFS=$as_save_IFS 1090 1091 1092# Now build and simplify PATH. 1093# 1094# There might be directories that don't exist, but don't redirect 1095# builtins' (eg., cd) stderr directly: Ultrix's sh hates that. 1096at_new_path= 1097as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 1098for as_dir in $at_path 1099do 1100 IFS=$as_save_IFS 1101 test -z "$as_dir" && as_dir=. 1102 test -d "$as_dir" || continue 1103case $as_dir in 1104 [\\/]* | ?:[\\/]* ) ;; 1105 * ) as_dir=`(cd "$as_dir" && pwd) 2>/dev/null` ;; 1106esac 1107case $PATH_SEPARATOR$at_new_path$PATH_SEPARATOR in 1108 *$PATH_SEPARATOR$as_dir$PATH_SEPARATOR*) ;; 1109 $PATH_SEPARATOR$PATH_SEPARATOR) at_new_path=$as_dir ;; 1110 *) as_fn_append at_new_path "$PATH_SEPARATOR$as_dir" ;; 1111esac 1112 done 1113IFS=$as_save_IFS 1114 1115PATH=$at_new_path 1116export PATH 1117 1118# Setting up the FDs. 1119 1120 1121 1122# 5 is the log file. Not to be overwritten if `-d'. 1123if $at_debug_p; then 1124 at_suite_log=/dev/null 1125else 1126 : >"$at_suite_log" 1127fi 1128exec 5>>"$at_suite_log" 1129 1130# Banners and logs. 1131$as_echo "## ------------------------------------------------------------------ ## 1132## Kyua - Command line interface 0.7 test suite: bootstrapping tests. ## 1133## ------------------------------------------------------------------ ##" 1134{ 1135 $as_echo "## ------------------------------------------------------------------ ## 1136## Kyua - Command line interface 0.7 test suite: bootstrapping tests. ## 1137## ------------------------------------------------------------------ ##" 1138 echo 1139 1140 $as_echo "$as_me: command line was:" 1141 $as_echo " \$ $0 $at_cli_args" 1142 echo 1143 1144 # If ChangeLog exists, list a few lines in case it might help determining 1145 # the exact version. 1146 if test -n "$at_top_srcdir" && test -f "$at_top_srcdir/ChangeLog"; then 1147 $as_echo "## ---------- ## 1148## ChangeLog. ## 1149## ---------- ##" 1150 echo 1151 sed 's/^/| /;10q' "$at_top_srcdir/ChangeLog" 1152 echo 1153 fi 1154 1155 { 1156cat <<_ASUNAME 1157## --------- ## 1158## Platform. ## 1159## --------- ## 1160 1161hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` 1162uname -m = `(uname -m) 2>/dev/null || echo unknown` 1163uname -r = `(uname -r) 2>/dev/null || echo unknown` 1164uname -s = `(uname -s) 2>/dev/null || echo unknown` 1165uname -v = `(uname -v) 2>/dev/null || echo unknown` 1166 1167/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` 1168/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` 1169 1170/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` 1171/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` 1172/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` 1173/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` 1174/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` 1175/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` 1176/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` 1177 1178_ASUNAME 1179 1180as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 1181for as_dir in $PATH 1182do 1183 IFS=$as_save_IFS 1184 test -z "$as_dir" && as_dir=. 1185 $as_echo "PATH: $as_dir" 1186 done 1187IFS=$as_save_IFS 1188 1189} 1190 echo 1191 1192 # Contents of the config files. 1193 for at_file in atconfig atlocal 1194 do 1195 test -r $at_file || continue 1196 $as_echo "$as_me: $at_file:" 1197 sed 's/^/| /' $at_file 1198 echo 1199 done 1200} >&5 1201 1202 1203## ------------------------- ## 1204## Autotest shell functions. ## 1205## ------------------------- ## 1206 1207# at_fn_banner NUMBER 1208# ------------------- 1209# Output banner NUMBER, provided the testsuite is running multiple groups and 1210# this particular banner has not yet been printed. 1211at_fn_banner () 1212{ 1213 $at_print_banners || return 0 1214 eval at_banner_text=\$at_banner_text_$1 1215 test "x$at_banner_text" = "x " && return 0 1216 eval "at_banner_text_$1=\" \"" 1217 if test -z "$at_banner_text"; then 1218 $at_first || echo 1219 else 1220 $as_echo "$as_nl$at_banner_text$as_nl" 1221 fi 1222} # at_fn_banner 1223 1224# at_fn_check_prepare_notrace REASON LINE 1225# --------------------------------------- 1226# Perform AT_CHECK preparations for the command at LINE for an untraceable 1227# command; REASON is the reason for disabling tracing. 1228at_fn_check_prepare_notrace () 1229{ 1230 $at_trace_echo "Not enabling shell tracing (command contains $1)" 1231 $as_echo "$2" >"$at_check_line_file" 1232 at_check_trace=: at_check_filter=: 1233 : >"$at_stdout"; : >"$at_stderr" 1234} 1235 1236# at_fn_check_prepare_trace LINE 1237# ------------------------------ 1238# Perform AT_CHECK preparations for the command at LINE for a traceable 1239# command. 1240at_fn_check_prepare_trace () 1241{ 1242 $as_echo "$1" >"$at_check_line_file" 1243 at_check_trace=$at_traceon at_check_filter=$at_check_filter_trace 1244 : >"$at_stdout"; : >"$at_stderr" 1245} 1246 1247# at_fn_check_prepare_dynamic COMMAND LINE 1248# ---------------------------------------- 1249# Decide if COMMAND at LINE is traceable at runtime, and call the appropriate 1250# preparation function. 1251at_fn_check_prepare_dynamic () 1252{ 1253 case $1 in 1254 *$as_nl*) 1255 at_fn_check_prepare_notrace 'an embedded newline' "$2" ;; 1256 *) 1257 at_fn_check_prepare_trace "$2" ;; 1258 esac 1259} 1260 1261# at_fn_filter_trace 1262# ------------------ 1263# Remove the lines in the file "$at_stderr" generated by "set -x" and print 1264# them to stderr. 1265at_fn_filter_trace () 1266{ 1267 mv "$at_stderr" "$at_stder1" 1268 grep '^ *+' "$at_stder1" >&2 1269 grep -v '^ *+' "$at_stder1" >"$at_stderr" 1270} 1271 1272# at_fn_log_failure FILE-LIST 1273# --------------------------- 1274# Copy the files in the list on stdout with a "> " prefix, and exit the shell 1275# with a failure exit code. 1276at_fn_log_failure () 1277{ 1278 for file 1279 do $as_echo "$file:"; sed 's/^/> /' "$file"; done 1280 echo 1 > "$at_status_file" 1281 exit 1 1282} 1283 1284# at_fn_check_skip EXIT-CODE LINE 1285# ------------------------------- 1286# Check whether EXIT-CODE is a special exit code (77 or 99), and if so exit 1287# the test group subshell with that same exit code. Use LINE in any report 1288# about test failure. 1289at_fn_check_skip () 1290{ 1291 case $1 in 1292 99) echo 99 > "$at_status_file"; at_failed=: 1293 $as_echo "$2: hard failure"; exit 99;; 1294 77) echo 77 > "$at_status_file"; exit 77;; 1295 esac 1296} 1297 1298# at_fn_check_status EXPECTED EXIT-CODE LINE 1299# ------------------------------------------ 1300# Check whether EXIT-CODE is the EXPECTED exit code, and if so do nothing. 1301# Otherwise, if it is 77 or 99, exit the test group subshell with that same 1302# exit code; if it is anything else print an error message referring to LINE, 1303# and fail the test. 1304at_fn_check_status () 1305{ 1306 case $2 in 1307 $1 ) ;; 1308 77) echo 77 > "$at_status_file"; exit 77;; 1309 99) echo 99 > "$at_status_file"; at_failed=: 1310 $as_echo "$3: hard failure"; exit 99;; 1311 *) $as_echo "$3: exit code was $2, expected $1" 1312 at_failed=:;; 1313 esac 1314} 1315 1316# at_fn_diff_devnull FILE 1317# ----------------------- 1318# Emit a diff between /dev/null and FILE. Uses "test -s" to avoid useless diff 1319# invocations. 1320at_fn_diff_devnull () 1321{ 1322 test -s "$1" || return 0 1323 $at_diff "$at_devnull" "$1" 1324} 1325 1326# at_fn_test NUMBER 1327# ----------------- 1328# Parse out test NUMBER from the tail of this file. 1329at_fn_test () 1330{ 1331 eval at_sed=\$at_sed$1 1332 sed "$at_sed" "$at_myself" > "$at_test_source" 1333} 1334 1335# at_fn_create_debugging_script 1336# ----------------------------- 1337# Create the debugging script $at_group_dir/run which will reproduce the 1338# current test group. 1339at_fn_create_debugging_script () 1340{ 1341 { 1342 echo "#! /bin/sh" && 1343 echo 'test "${ZSH_VERSION+set}" = set && alias -g '\''${1+"$@"}'\''='\''"$@"'\''' && 1344 $as_echo "cd '$at_dir'" && 1345 $as_echo "exec \${CONFIG_SHELL-$SHELL} \"$at_myself\" -v -d $at_debug_args $at_group \${1+\"\$@\"}" && 1346 echo 'exit 1' 1347 } >"$at_group_dir/run" && 1348 chmod +x "$at_group_dir/run" 1349} 1350 1351## -------------------------------- ## 1352## End of autotest shell functions. ## 1353## -------------------------------- ## 1354{ 1355 $as_echo "## ---------------- ## 1356## Tested programs. ## 1357## ---------------- ##" 1358 echo 1359} >&5 1360 1361# Report what programs are being tested. 1362for at_program in : $at_tested 1363do 1364 test "$at_program" = : && continue 1365 case $at_program in 1366 [\\/]* | ?:[\\/]* ) $at_program_=$at_program ;; 1367 * ) 1368 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 1369for as_dir in $PATH 1370do 1371 IFS=$as_save_IFS 1372 test -z "$as_dir" && as_dir=. 1373 test -f "$as_dir/$at_program" && break 1374 done 1375IFS=$as_save_IFS 1376 1377 at_program_=$as_dir/$at_program ;; 1378 esac 1379 if test -f "$at_program_"; then 1380 { 1381 $as_echo "$at_srcdir/testsuite.at:29: $at_program_ --version" 1382 "$at_program_" --version </dev/null 1383 echo 1384 } >&5 2>&1 1385 else 1386 as_fn_error $? "cannot find $at_program" "$LINENO" 5 1387 fi 1388done 1389 1390{ 1391 $as_echo "## ------------------ ## 1392## Running the tests. ## 1393## ------------------ ##" 1394} >&5 1395 1396at_start_date=`date` 1397at_start_time=`date +%s 2>/dev/null` 1398$as_echo "$as_me: starting at: $at_start_date" >&5 1399 1400# Create the master directory if it doesn't already exist. 1401as_dir="$at_suite_dir"; as_fn_mkdir_p || 1402 as_fn_error $? "cannot create \`$at_suite_dir'" "$LINENO" 5 1403 1404# Can we diff with `/dev/null'? DU 5.0 refuses. 1405if diff /dev/null /dev/null >/dev/null 2>&1; then 1406 at_devnull=/dev/null 1407else 1408 at_devnull=$at_suite_dir/devnull 1409 >"$at_devnull" 1410fi 1411 1412# Use `diff -u' when possible. 1413if at_diff=`diff -u "$at_devnull" "$at_devnull" 2>&1` && test -z "$at_diff" 1414then 1415 at_diff='diff -u' 1416else 1417 at_diff=diff 1418fi 1419 1420# Get the last needed group. 1421for at_group in : $at_groups; do :; done 1422 1423# Extract the start and end lines of each test group at the tail 1424# of this file 1425awk ' 1426BEGIN { FS="" } 1427/^#AT_START_/ { 1428 start = NR 1429} 1430/^#AT_STOP_/ { 1431 test = substr ($ 0, 10) 1432 print "at_sed" test "=\"1," start "d;" (NR-1) "q\"" 1433 if (test == "'"$at_group"'") exit 1434}' "$at_myself" > "$at_suite_dir/at-source-lines" && 1435. "$at_suite_dir/at-source-lines" || 1436 as_fn_error $? "cannot create test line number cache" "$LINENO" 5 1437rm -f "$at_suite_dir/at-source-lines" 1438 1439# Set number of jobs for `-j'; avoid more jobs than test groups. 1440set X $at_groups; shift; at_max_jobs=$# 1441if test $at_max_jobs -eq 0; then 1442 at_jobs=1 1443fi 1444if test $at_jobs -ne 1 && 1445 { test $at_jobs -eq 0 || test $at_jobs -gt $at_max_jobs; }; then 1446 at_jobs=$at_max_jobs 1447fi 1448 1449# If parallel mode, don't output banners, don't split summary lines. 1450if test $at_jobs -ne 1; then 1451 at_print_banners=false 1452 at_quiet=: 1453fi 1454 1455# Set up helper dirs. 1456rm -rf "$at_helper_dir" && 1457mkdir "$at_helper_dir" && 1458cd "$at_helper_dir" && 1459{ test -z "$at_groups" || mkdir $at_groups; } || 1460as_fn_error $? "testsuite directory setup failed" "$LINENO" 5 1461 1462# Functions for running a test group. We leave the actual 1463# test group execution outside of a shell function in order 1464# to avoid hitting zsh 4.x exit status bugs. 1465 1466# at_fn_group_prepare 1467# ------------------- 1468# Prepare for running a test group. 1469at_fn_group_prepare () 1470{ 1471 # The directory for additional per-group helper files. 1472 at_job_dir=$at_helper_dir/$at_group 1473 # The file containing the location of the last AT_CHECK. 1474 at_check_line_file=$at_job_dir/check-line 1475 # The file containing the exit status of the last command. 1476 at_status_file=$at_job_dir/status 1477 # The files containing the output of the tested commands. 1478 at_stdout=$at_job_dir/stdout 1479 at_stder1=$at_job_dir/stder1 1480 at_stderr=$at_job_dir/stderr 1481 # The file containing the code for a test group. 1482 at_test_source=$at_job_dir/test-source 1483 # The file containing dates. 1484 at_times_file=$at_job_dir/times 1485 1486 # Be sure to come back to the top test directory. 1487 cd "$at_suite_dir" 1488 1489 # Clearly separate the test groups when verbose. 1490 $at_first || $at_verbose echo 1491 1492 at_group_normalized=$at_group 1493 1494 eval 'while :; do 1495 case $at_group_normalized in #( 1496 '"$at_format"'*) break;; 1497 esac 1498 at_group_normalized=0$at_group_normalized 1499 done' 1500 1501 1502 # Create a fresh directory for the next test group, and enter. 1503 # If one already exists, the user may have invoked ./run from 1504 # within that directory; we remove the contents, but not the 1505 # directory itself, so that we aren't pulling the rug out from 1506 # under the shell's notion of the current directory. 1507 at_group_dir=$at_suite_dir/$at_group_normalized 1508 at_group_log=$at_group_dir/$as_me.log 1509 if test -d "$at_group_dir"; then 1510 find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx {} \; 1511 rm -fr "$at_group_dir"/* "$at_group_dir"/.[!.] "$at_group_dir"/.??* 1512fi || 1513 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: test directory for $at_group_normalized could not be cleaned" >&5 1514$as_echo "$as_me: WARNING: test directory for $at_group_normalized could not be cleaned" >&2;} 1515 # Be tolerant if the above `rm' was not able to remove the directory. 1516 as_dir="$at_group_dir"; as_fn_mkdir_p 1517 1518 echo 0 > "$at_status_file" 1519 1520 # In verbose mode, append to the log file *and* show on 1521 # the standard output; in quiet mode only write to the log. 1522 if test -z "$at_verbose"; then 1523 at_tee_pipe='tee -a "$at_group_log"' 1524 else 1525 at_tee_pipe='cat >> "$at_group_log"' 1526 fi 1527} 1528 1529# at_fn_group_banner ORDINAL LINE DESC PAD [BANNER] 1530# ------------------------------------------------- 1531# Declare the test group ORDINAL, located at LINE with group description DESC, 1532# and residing under BANNER. Use PAD to align the status column. 1533at_fn_group_banner () 1534{ 1535 at_setup_line="$2" 1536 test -n "$5" && at_fn_banner $5 1537 at_desc="$3" 1538 case $1 in 1539 [0-9]) at_desc_line=" $1: ";; 1540 [0-9][0-9]) at_desc_line=" $1: " ;; 1541 *) at_desc_line="$1: " ;; 1542 esac 1543 as_fn_append at_desc_line "$3$4" 1544 $at_quiet $as_echo_n "$at_desc_line" 1545 echo "# -*- compilation -*-" >> "$at_group_log" 1546} 1547 1548# at_fn_group_postprocess 1549# ----------------------- 1550# Perform cleanup after running a test group. 1551at_fn_group_postprocess () 1552{ 1553 # Be sure to come back to the suite directory, in particular 1554 # since below we might `rm' the group directory we are in currently. 1555 cd "$at_suite_dir" 1556 1557 if test ! -f "$at_check_line_file"; then 1558 sed "s/^ */$as_me: WARNING: /" <<_ATEOF 1559 A failure happened in a test group before any test could be 1560 run. This means that test suite is improperly designed. Please 1561 report this failure to <kyua-discuss@googlegroups.com>. 1562_ATEOF 1563 $as_echo "$at_setup_line" >"$at_check_line_file" 1564 at_status=99 1565 fi 1566 $at_verbose $as_echo_n "$at_group. $at_setup_line: " 1567 $as_echo_n "$at_group. $at_setup_line: " >> "$at_group_log" 1568 case $at_xfail:$at_status in 1569 yes:0) 1570 at_msg="UNEXPECTED PASS" 1571 at_res=xpass 1572 at_errexit=$at_errexit_p 1573 at_color=$at_red 1574 ;; 1575 no:0) 1576 at_msg="ok" 1577 at_res=pass 1578 at_errexit=false 1579 at_color=$at_grn 1580 ;; 1581 *:77) 1582 at_msg='skipped ('`cat "$at_check_line_file"`')' 1583 at_res=skip 1584 at_errexit=false 1585 at_color=$at_blu 1586 ;; 1587 no:* | *:99) 1588 at_msg='FAILED ('`cat "$at_check_line_file"`')' 1589 at_res=fail 1590 at_errexit=$at_errexit_p 1591 at_color=$at_red 1592 ;; 1593 yes:*) 1594 at_msg='expected failure ('`cat "$at_check_line_file"`')' 1595 at_res=xfail 1596 at_errexit=false 1597 at_color=$at_lgn 1598 ;; 1599 esac 1600 echo "$at_res" > "$at_job_dir/$at_res" 1601 # In parallel mode, output the summary line only afterwards. 1602 if test $at_jobs -ne 1 && test -n "$at_verbose"; then 1603 $as_echo "$at_desc_line $at_color$at_msg$at_std" 1604 else 1605 # Make sure there is a separator even with long titles. 1606 $as_echo " $at_color$at_msg$at_std" 1607 fi 1608 at_log_msg="$at_group. $at_desc ($at_setup_line): $at_msg" 1609 case $at_status in 1610 0|77) 1611 # $at_times_file is only available if the group succeeded. 1612 # We're not including the group log, so the success message 1613 # is written in the global log separately. But we also 1614 # write to the group log in case they're using -d. 1615 if test -f "$at_times_file"; then 1616 at_log_msg="$at_log_msg ("`sed 1d "$at_times_file"`')' 1617 rm -f "$at_times_file" 1618 fi 1619 $as_echo "$at_log_msg" >> "$at_group_log" 1620 $as_echo "$at_log_msg" >&5 1621 1622 # Cleanup the group directory, unless the user wants the files 1623 # or the success was unexpected. 1624 if $at_debug_p || test $at_res = xpass; then 1625 at_fn_create_debugging_script 1626 if test $at_res = xpass && $at_errexit; then 1627 echo stop > "$at_stop_file" 1628 fi 1629 else 1630 if test -d "$at_group_dir"; then 1631 find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \; 1632 rm -fr "$at_group_dir" 1633 fi 1634 rm -f "$at_test_source" 1635 fi 1636 ;; 1637 *) 1638 # Upon failure, include the log into the testsuite's global 1639 # log. The failure message is written in the group log. It 1640 # is later included in the global log. 1641 $as_echo "$at_log_msg" >> "$at_group_log" 1642 1643 # Upon failure, keep the group directory for autopsy, and create 1644 # the debugging script. With -e, do not start any further tests. 1645 at_fn_create_debugging_script 1646 if $at_errexit; then 1647 echo stop > "$at_stop_file" 1648 fi 1649 ;; 1650 esac 1651} 1652 1653 1654## ------------ ## 1655## Driver loop. ## 1656## ------------ ## 1657 1658 1659if (set -m && set +m && set +b) >/dev/null 2>&1; then 1660 set +b 1661 at_job_control_on='set -m' at_job_control_off='set +m' at_job_group=- 1662else 1663 at_job_control_on=: at_job_control_off=: at_job_group= 1664fi 1665 1666for at_signal in 1 2 15; do 1667 trap 'set +x; set +e 1668 $at_job_control_off 1669 at_signal='"$at_signal"' 1670 echo stop > "$at_stop_file" 1671 trap "" $at_signal 1672 at_pgids= 1673 for at_pgid in `jobs -p 2>/dev/null`; do 1674 at_pgids="$at_pgids $at_job_group$at_pgid" 1675 done 1676 test -z "$at_pgids" || kill -$at_signal $at_pgids 2>/dev/null 1677 wait 1678 if test "$at_jobs" -eq 1 || test -z "$at_verbose"; then 1679 echo >&2 1680 fi 1681 at_signame=`kill -l $at_signal 2>&1 || echo $at_signal` 1682 set x $at_signame 1683 test 1 -gt 2 && at_signame=$at_signal 1684 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: caught signal $at_signame, bailing out" >&5 1685$as_echo "$as_me: WARNING: caught signal $at_signame, bailing out" >&2;} 1686 as_fn_arith 128 + $at_signal && exit_status=$as_val 1687 as_fn_exit $exit_status' $at_signal 1688done 1689 1690rm -f "$at_stop_file" 1691at_first=: 1692 1693if test $at_jobs -ne 1 && 1694 rm -f "$at_job_fifo" && 1695 test -n "$at_job_group" && 1696 ( mkfifo "$at_job_fifo" && trap 'exit 1' PIPE STOP TSTP ) 2>/dev/null 1697then 1698 # FIFO job dispatcher. 1699 1700 trap 'at_pids= 1701 for at_pid in `jobs -p`; do 1702 at_pids="$at_pids $at_job_group$at_pid" 1703 done 1704 if test -n "$at_pids"; then 1705 at_sig=TSTP 1706 test "${TMOUT+set}" = set && at_sig=STOP 1707 kill -$at_sig $at_pids 2>/dev/null 1708 fi 1709 kill -STOP $$ 1710 test -z "$at_pids" || kill -CONT $at_pids 2>/dev/null' TSTP 1711 1712 echo 1713 # Turn jobs into a list of numbers, starting from 1. 1714 at_joblist=`$as_echo "$at_groups" | sed -n 1,${at_jobs}p` 1715 1716 set X $at_joblist 1717 shift 1718 for at_group in $at_groups; do 1719 $at_job_control_on 2>/dev/null 1720 ( 1721 # Start one test group. 1722 $at_job_control_off 1723 if $at_first; then 1724 exec 7>"$at_job_fifo" 1725 else 1726 exec 6<&- 1727 fi 1728 trap 'set +x; set +e 1729 trap "" PIPE 1730 echo stop > "$at_stop_file" 1731 echo >&7 1732 as_fn_exit 141' PIPE 1733 at_fn_group_prepare 1734 if cd "$at_group_dir" && 1735 at_fn_test $at_group && 1736 . "$at_test_source" 1737 then :; else 1738 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5 1739$as_echo "$as_me: WARNING: unable to parse test group: $at_group" >&2;} 1740 at_failed=: 1741 fi 1742 at_fn_group_postprocess 1743 echo >&7 1744 ) & 1745 $at_job_control_off 1746 if $at_first; then 1747 at_first=false 1748 exec 6<"$at_job_fifo" 7>"$at_job_fifo" 1749 fi 1750 shift # Consume one token. 1751 if test $# -gt 0; then :; else 1752 read at_token <&6 || break 1753 set x $* 1754 fi 1755 test -f "$at_stop_file" && break 1756 done 1757 exec 7>&- 1758 # Read back the remaining ($at_jobs - 1) tokens. 1759 set X $at_joblist 1760 shift 1761 if test $# -gt 0; then 1762 shift 1763 for at_job 1764 do 1765 read at_token 1766 done <&6 1767 fi 1768 exec 6<&- 1769 wait 1770else 1771 # Run serially, avoid forks and other potential surprises. 1772 for at_group in $at_groups; do 1773 at_fn_group_prepare 1774 if cd "$at_group_dir" && 1775 at_fn_test $at_group && 1776 . "$at_test_source"; then :; else 1777 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5 1778$as_echo "$as_me: WARNING: unable to parse test group: $at_group" >&2;} 1779 at_failed=: 1780 fi 1781 at_fn_group_postprocess 1782 test -f "$at_stop_file" && break 1783 at_first=false 1784 done 1785fi 1786 1787# Wrap up the test suite with summary statistics. 1788cd "$at_helper_dir" 1789 1790# Use ?..???? when the list must remain sorted, the faster * otherwise. 1791at_pass_list=`for f in */pass; do echo $f; done | sed '/\*/d; s,/pass,,'` 1792at_skip_list=`for f in */skip; do echo $f; done | sed '/\*/d; s,/skip,,'` 1793at_xfail_list=`for f in */xfail; do echo $f; done | sed '/\*/d; s,/xfail,,'` 1794at_xpass_list=`for f in ?/xpass ??/xpass ???/xpass ????/xpass; do 1795 echo $f; done | sed '/?/d; s,/xpass,,'` 1796at_fail_list=`for f in ?/fail ??/fail ???/fail ????/fail; do 1797 echo $f; done | sed '/?/d; s,/fail,,'` 1798 1799set X $at_pass_list $at_xpass_list $at_xfail_list $at_fail_list $at_skip_list 1800shift; at_group_count=$# 1801set X $at_xpass_list; shift; at_xpass_count=$#; at_xpass_list=$* 1802set X $at_xfail_list; shift; at_xfail_count=$# 1803set X $at_fail_list; shift; at_fail_count=$#; at_fail_list=$* 1804set X $at_skip_list; shift; at_skip_count=$# 1805 1806as_fn_arith $at_group_count - $at_skip_count && at_run_count=$as_val 1807as_fn_arith $at_xpass_count + $at_fail_count && at_unexpected_count=$as_val 1808as_fn_arith $at_xfail_count + $at_fail_count && at_total_fail_count=$as_val 1809 1810# Back to the top directory. 1811cd "$at_dir" 1812rm -rf "$at_helper_dir" 1813 1814# Compute the duration of the suite. 1815at_stop_date=`date` 1816at_stop_time=`date +%s 2>/dev/null` 1817$as_echo "$as_me: ending at: $at_stop_date" >&5 1818case $at_start_time,$at_stop_time in 1819 [0-9]*,[0-9]*) 1820 as_fn_arith $at_stop_time - $at_start_time && at_duration_s=$as_val 1821 as_fn_arith $at_duration_s / 60 && at_duration_m=$as_val 1822 as_fn_arith $at_duration_m / 60 && at_duration_h=$as_val 1823 as_fn_arith $at_duration_s % 60 && at_duration_s=$as_val 1824 as_fn_arith $at_duration_m % 60 && at_duration_m=$as_val 1825 at_duration="${at_duration_h}h ${at_duration_m}m ${at_duration_s}s" 1826 $as_echo "$as_me: test suite duration: $at_duration" >&5 1827 ;; 1828esac 1829 1830echo 1831$as_echo "## ------------- ## 1832## Test results. ## 1833## ------------- ##" 1834echo 1835{ 1836 echo 1837 $as_echo "## ------------- ## 1838## Test results. ## 1839## ------------- ##" 1840 echo 1841} >&5 1842 1843if test $at_run_count = 1; then 1844 at_result="1 test" 1845 at_were=was 1846else 1847 at_result="$at_run_count tests" 1848 at_were=were 1849fi 1850if $at_errexit_p && test $at_unexpected_count != 0; then 1851 if test $at_xpass_count = 1; then 1852 at_result="$at_result $at_were run, one passed" 1853 else 1854 at_result="$at_result $at_were run, one failed" 1855 fi 1856 at_result="$at_result unexpectedly and inhibited subsequent tests." 1857 at_color=$at_red 1858else 1859 # Don't you just love exponential explosion of the number of cases? 1860 at_color=$at_red 1861 case $at_xpass_count:$at_fail_count:$at_xfail_count in 1862 # So far, so good. 1863 0:0:0) at_result="$at_result $at_were successful." at_color=$at_grn ;; 1864 0:0:*) at_result="$at_result behaved as expected." at_color=$at_lgn ;; 1865 1866 # Some unexpected failures 1867 0:*:0) at_result="$at_result $at_were run, 1868$at_fail_count failed unexpectedly." ;; 1869 1870 # Some failures, both expected and unexpected 1871 0:*:1) at_result="$at_result $at_were run, 1872$at_total_fail_count failed ($at_xfail_count expected failure)." ;; 1873 0:*:*) at_result="$at_result $at_were run, 1874$at_total_fail_count failed ($at_xfail_count expected failures)." ;; 1875 1876 # No unexpected failures, but some xpasses 1877 *:0:*) at_result="$at_result $at_were run, 1878$at_xpass_count passed unexpectedly." ;; 1879 1880 # No expected failures, but failures and xpasses 1881 *:1:0) at_result="$at_result $at_were run, 1882$at_unexpected_count did not behave as expected ($at_fail_count unexpected failure)." ;; 1883 *:*:0) at_result="$at_result $at_were run, 1884$at_unexpected_count did not behave as expected ($at_fail_count unexpected failures)." ;; 1885 1886 # All of them. 1887 *:*:1) at_result="$at_result $at_were run, 1888$at_xpass_count passed unexpectedly, 1889$at_total_fail_count failed ($at_xfail_count expected failure)." ;; 1890 *:*:*) at_result="$at_result $at_were run, 1891$at_xpass_count passed unexpectedly, 1892$at_total_fail_count failed ($at_xfail_count expected failures)." ;; 1893 esac 1894 1895 if test $at_skip_count = 0 && test $at_run_count -gt 1; then 1896 at_result="All $at_result" 1897 fi 1898fi 1899 1900# Now put skips in the mix. 1901case $at_skip_count in 1902 0) ;; 1903 1) at_result="$at_result 19041 test was skipped." ;; 1905 *) at_result="$at_result 1906$at_skip_count tests were skipped." ;; 1907esac 1908 1909if test $at_unexpected_count = 0; then 1910 echo "$at_color$at_result$at_std" 1911 echo "$at_result" >&5 1912else 1913 echo "${at_color}ERROR: $at_result$at_std" >&2 1914 echo "ERROR: $at_result" >&5 1915 { 1916 echo 1917 $as_echo "## ------------------------ ## 1918## Summary of the failures. ## 1919## ------------------------ ##" 1920 1921 # Summary of failed and skipped tests. 1922 if test $at_fail_count != 0; then 1923 echo "Failed tests:" 1924 $SHELL "$at_myself" $at_fail_list --list 1925 echo 1926 fi 1927 if test $at_skip_count != 0; then 1928 echo "Skipped tests:" 1929 $SHELL "$at_myself" $at_skip_list --list 1930 echo 1931 fi 1932 if test $at_xpass_count != 0; then 1933 echo "Unexpected passes:" 1934 $SHELL "$at_myself" $at_xpass_list --list 1935 echo 1936 fi 1937 if test $at_fail_count != 0; then 1938 $as_echo "## ---------------------- ## 1939## Detailed failed tests. ## 1940## ---------------------- ##" 1941 echo 1942 for at_group in $at_fail_list 1943 do 1944 at_group_normalized=$at_group 1945 1946 eval 'while :; do 1947 case $at_group_normalized in #( 1948 '"$at_format"'*) break;; 1949 esac 1950 at_group_normalized=0$at_group_normalized 1951 done' 1952 1953 cat "$at_suite_dir/$at_group_normalized/$as_me.log" 1954 echo 1955 done 1956 echo 1957 fi 1958 if test -n "$at_top_srcdir"; then 1959 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX 1960## ${at_top_build_prefix}config.log ## 1961_ASBOX 1962 sed 's/^/| /' ${at_top_build_prefix}config.log 1963 echo 1964 fi 1965 } >&5 1966 1967 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX 1968## $as_me.log was created. ## 1969_ASBOX 1970 1971 echo 1972 if $at_debug_p; then 1973 at_msg='per-test log files' 1974 else 1975 at_msg="\`${at_testdir+${at_testdir}/}$as_me.log'" 1976 fi 1977 $as_echo "Please send $at_msg and all information you think might help: 1978 1979 To: <kyua-discuss@googlegroups.com> 1980 Subject: [Kyua - Command line interface 0.7] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly} 1981 1982You may investigate any problem if you feel able to do so, in which 1983case the test suite provides a good starting point. Its output may 1984be found below \`${at_testdir+${at_testdir}/}$as_me.dir'. 1985" 1986 exit 1 1987fi 1988 1989exit 0 1990 1991## ------------- ## 1992## Actual tests. ## 1993## ------------- ## 1994#AT_START_1 1995at_fn_group_banner 1 'testsuite.at:70' \ 1996 "test program crashes in test list" " " 1997at_xfail=no 1998( 1999 $as_echo "1. $at_setup_line: testing $at_desc ..." 2000 $at_traceon 2001 2002 2003 2004 2005 cat >Kyuafile <<'_ATEOF' 2006 2007syntax(2) 2008test_suite("bootstrap") 2009atf_test_program{name="plain_helpers"} 2010_ATEOF 2011 2012 ln -s $({ 2013 old=$(pwd) 2014 cd "${at_suite_dir}" 2015 # We need to locate a build product, not a source file, because the 2016 # test suite may be run outside of the source tree (think distcheck). 2017 while test $(pwd) != '/' -a ! -e engine/test_case_test; do 2018 cd .. 2019 done 2020 topdir=$(pwd) 2021 cd ${old} 2022 echo ${topdir} 2023})/bootstrap/plain_helpers plain_helpers 2024 2025{ set +x 2026$as_echo "$at_srcdir/testsuite.at:74: HOME=\$(pwd) HELPER=\"abort_test_cases_list\" kyua --config=none test --store=bootstrap.db" 2027at_fn_check_prepare_notrace 'a $(...) command substitution' "testsuite.at:74" 2028( $at_check_trace; HOME=$(pwd) HELPER="abort_test_cases_list" kyua --config=none test --store=bootstrap.db 2029) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2030at_status=$? at_failed=false 2031$at_check_filter 2032at_fn_diff_devnull "$at_stderr" || at_failed=: 2033echo stdout:; tee stdout <"$at_stdout" 2034at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:74" 2035$at_failed && at_fn_log_failure 2036$at_traceon; } 2037 2038re='plain_helpers:__test_cases_list__.*broken.*Test program list did not return success' 2039{ set +x 2040$as_echo "$at_srcdir/testsuite.at:76: grep \"\${re}\" stdout" 2041at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:76" 2042( $at_check_trace; grep "${re}" stdout 2043) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2044at_status=$? at_failed=false 2045$at_check_filter 2046at_fn_diff_devnull "$at_stderr" || at_failed=: 2047echo stdout:; cat "$at_stdout" 2048at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:76" 2049$at_failed && at_fn_log_failure 2050$at_traceon; } 2051 2052 2053 set +x 2054 $at_times_p && times >"$at_times_file" 2055) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2056read at_status <"$at_status_file" 2057#AT_STOP_1 2058#AT_START_2 2059at_fn_group_banner 2 'testsuite.at:81' \ 2060 "test program prints an empty test list" " " 2061at_xfail=no 2062( 2063 $as_echo "2. $at_setup_line: testing $at_desc ..." 2064 $at_traceon 2065 2066 2067 2068 2069 cat >Kyuafile <<'_ATEOF' 2070 2071syntax(2) 2072test_suite("bootstrap") 2073atf_test_program{name="plain_helpers"} 2074_ATEOF 2075 2076 ln -s $({ 2077 old=$(pwd) 2078 cd "${at_suite_dir}" 2079 # We need to locate a build product, not a source file, because the 2080 # test suite may be run outside of the source tree (think distcheck). 2081 while test $(pwd) != '/' -a ! -e engine/test_case_test; do 2082 cd .. 2083 done 2084 topdir=$(pwd) 2085 cd ${old} 2086 echo ${topdir} 2087})/bootstrap/plain_helpers plain_helpers 2088 2089{ set +x 2090$as_echo "$at_srcdir/testsuite.at:85: HOME=\$(pwd) HELPER=\"empty_test_cases_list\" kyua --config=none test --store=bootstrap.db" 2091at_fn_check_prepare_notrace 'a $(...) command substitution' "testsuite.at:85" 2092( $at_check_trace; HOME=$(pwd) HELPER="empty_test_cases_list" kyua --config=none test --store=bootstrap.db 2093) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2094at_status=$? at_failed=false 2095$at_check_filter 2096at_fn_diff_devnull "$at_stderr" || at_failed=: 2097echo stdout:; tee stdout <"$at_stdout" 2098at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:85" 2099$at_failed && at_fn_log_failure 2100$at_traceon; } 2101 2102re='plain_helpers:__test_cases_list__.*broken.*failed to read.*unexpected EOF' 2103{ set +x 2104$as_echo "$at_srcdir/testsuite.at:87: grep \"\${re}\" stdout" 2105at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:87" 2106( $at_check_trace; grep "${re}" stdout 2107) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2108at_status=$? at_failed=false 2109$at_check_filter 2110at_fn_diff_devnull "$at_stderr" || at_failed=: 2111echo stdout:; cat "$at_stdout" 2112at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:87" 2113$at_failed && at_fn_log_failure 2114$at_traceon; } 2115 2116 2117 set +x 2118 $at_times_p && times >"$at_times_file" 2119) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2120read at_status <"$at_status_file" 2121#AT_STOP_2 2122#AT_START_3 2123at_fn_group_banner 3 'testsuite.at:92' \ 2124 "test program with zero test cases" " " 2125at_xfail=no 2126( 2127 $as_echo "3. $at_setup_line: testing $at_desc ..." 2128 $at_traceon 2129 2130 2131 2132 2133 cat >Kyuafile <<'_ATEOF' 2134 2135syntax(2) 2136test_suite("bootstrap") 2137atf_test_program{name="plain_helpers"} 2138_ATEOF 2139 2140 ln -s $({ 2141 old=$(pwd) 2142 cd "${at_suite_dir}" 2143 # We need to locate a build product, not a source file, because the 2144 # test suite may be run outside of the source tree (think distcheck). 2145 while test $(pwd) != '/' -a ! -e engine/test_case_test; do 2146 cd .. 2147 done 2148 topdir=$(pwd) 2149 cd ${old} 2150 echo ${topdir} 2151})/bootstrap/plain_helpers plain_helpers 2152 2153{ set +x 2154$as_echo "$at_srcdir/testsuite.at:96: HOME=\$(pwd) HELPER=\"zero_test_cases\" kyua --config=none test --store=bootstrap.db" 2155at_fn_check_prepare_notrace 'a $(...) command substitution' "testsuite.at:96" 2156( $at_check_trace; HOME=$(pwd) HELPER="zero_test_cases" kyua --config=none test --store=bootstrap.db 2157) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2158at_status=$? at_failed=false 2159$at_check_filter 2160at_fn_diff_devnull "$at_stderr" || at_failed=: 2161echo stdout:; tee stdout <"$at_stdout" 2162at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:96" 2163$at_failed && at_fn_log_failure 2164$at_traceon; } 2165 2166re='plain_helpers:__test_cases_list__.*broken.*Empty test cases list' 2167{ set +x 2168$as_echo "$at_srcdir/testsuite.at:98: grep \"\${re}\" stdout" 2169at_fn_check_prepare_notrace 'a ${...} parameter expansion' "testsuite.at:98" 2170( $at_check_trace; grep "${re}" stdout 2171) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2172at_status=$? at_failed=false 2173$at_check_filter 2174at_fn_diff_devnull "$at_stderr" || at_failed=: 2175echo stdout:; cat "$at_stdout" 2176at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:98" 2177$at_failed && at_fn_log_failure 2178$at_traceon; } 2179 2180 2181 set +x 2182 $at_times_p && times >"$at_times_file" 2183) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2184read at_status <"$at_status_file" 2185#AT_STOP_3 2186#AT_START_4 2187at_fn_group_banner 4 'testsuite.at:103' \ 2188 "run test case that passes" " " 2189at_xfail=no 2190( 2191 $as_echo "4. $at_setup_line: testing $at_desc ..." 2192 $at_traceon 2193 2194 2195 2196 2197 cat >Kyuafile <<'_ATEOF' 2198 2199syntax(2) 2200test_suite("bootstrap") 2201atf_test_program{name="atf_helpers"} 2202_ATEOF 2203 2204 ln -s $({ 2205 old=$(pwd) 2206 cd "${at_suite_dir}" 2207 # We need to locate a build product, not a source file, because the 2208 # test suite may be run outside of the source tree (think distcheck). 2209 while test $(pwd) != '/' -a ! -e engine/test_case_test; do 2210 cd .. 2211 done 2212 topdir=$(pwd) 2213 cd ${old} 2214 echo ${topdir} 2215})/bootstrap/atf_helpers atf_helpers 2216 2217{ set +x 2218$as_echo "$at_srcdir/testsuite.at:107: HOME=\$(pwd) TESTS=\"passes\" kyua --config=none test --store=bootstrap.db " 2219at_fn_check_prepare_notrace 'a $(...) command substitution' "testsuite.at:107" 2220( $at_check_trace; HOME=$(pwd) TESTS="passes" kyua --config=none test --store=bootstrap.db 2221) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2222at_status=$? at_failed=false 2223$at_check_filter 2224at_fn_diff_devnull "$at_stderr" || at_failed=: 2225echo stdout:; tee stdout <"$at_stdout" 2226at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:107" 2227$at_failed && at_fn_log_failure 2228$at_traceon; } 2229 2230{ set +x 2231$as_echo "$at_srcdir/testsuite.at:108: grep \"atf_helpers:fails\" stdout" 2232at_fn_check_prepare_trace "testsuite.at:108" 2233( $at_check_trace; grep "atf_helpers:fails" stdout 2234) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2235at_status=$? at_failed=false 2236$at_check_filter 2237at_fn_diff_devnull "$at_stderr" || at_failed=: 2238at_fn_diff_devnull "$at_stdout" || at_failed=: 2239at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:108" 2240$at_failed && at_fn_log_failure 2241$at_traceon; } 2242 2243{ set +x 2244$as_echo "$at_srcdir/testsuite.at:109: grep \"atf_helpers:passes.*passed\" stdout" 2245at_fn_check_prepare_trace "testsuite.at:109" 2246( $at_check_trace; grep "atf_helpers:passes.*passed" stdout 2247) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2248at_status=$? at_failed=false 2249$at_check_filter 2250at_fn_diff_devnull "$at_stderr" || at_failed=: 2251echo stdout:; cat "$at_stdout" 2252at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:109" 2253$at_failed && at_fn_log_failure 2254$at_traceon; } 2255 2256{ set +x 2257$as_echo "$at_srcdir/testsuite.at:110: grep \"atf_helpers:skips\" stdout" 2258at_fn_check_prepare_trace "testsuite.at:110" 2259( $at_check_trace; grep "atf_helpers:skips" stdout 2260) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2261at_status=$? at_failed=false 2262$at_check_filter 2263at_fn_diff_devnull "$at_stderr" || at_failed=: 2264at_fn_diff_devnull "$at_stdout" || at_failed=: 2265at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:110" 2266$at_failed && at_fn_log_failure 2267$at_traceon; } 2268 2269 2270 set +x 2271 $at_times_p && times >"$at_times_file" 2272) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2273read at_status <"$at_status_file" 2274#AT_STOP_4 2275#AT_START_5 2276at_fn_group_banner 5 'testsuite.at:115' \ 2277 "run test case that fails" " " 2278at_xfail=no 2279( 2280 $as_echo "5. $at_setup_line: testing $at_desc ..." 2281 $at_traceon 2282 2283 2284 2285 2286 cat >Kyuafile <<'_ATEOF' 2287 2288syntax(2) 2289test_suite("bootstrap") 2290atf_test_program{name="atf_helpers"} 2291_ATEOF 2292 2293 ln -s $({ 2294 old=$(pwd) 2295 cd "${at_suite_dir}" 2296 # We need to locate a build product, not a source file, because the 2297 # test suite may be run outside of the source tree (think distcheck). 2298 while test $(pwd) != '/' -a ! -e engine/test_case_test; do 2299 cd .. 2300 done 2301 topdir=$(pwd) 2302 cd ${old} 2303 echo ${topdir} 2304})/bootstrap/atf_helpers atf_helpers 2305 2306{ set +x 2307$as_echo "$at_srcdir/testsuite.at:119: HOME=\$(pwd) TESTS=\"fails\" kyua --config=none test --store=bootstrap.db " 2308at_fn_check_prepare_notrace 'a $(...) command substitution' "testsuite.at:119" 2309( $at_check_trace; HOME=$(pwd) TESTS="fails" kyua --config=none test --store=bootstrap.db 2310) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2311at_status=$? at_failed=false 2312$at_check_filter 2313at_fn_diff_devnull "$at_stderr" || at_failed=: 2314echo stdout:; tee stdout <"$at_stdout" 2315at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:119" 2316$at_failed && at_fn_log_failure 2317$at_traceon; } 2318 2319{ set +x 2320$as_echo "$at_srcdir/testsuite.at:120: grep \"atf_helpers:fails.*failed.*Failed on purpose\" stdout" 2321at_fn_check_prepare_trace "testsuite.at:120" 2322( $at_check_trace; grep "atf_helpers:fails.*failed.*Failed on purpose" stdout 2323) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2324at_status=$? at_failed=false 2325$at_check_filter 2326at_fn_diff_devnull "$at_stderr" || at_failed=: 2327echo stdout:; cat "$at_stdout" 2328at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:120" 2329$at_failed && at_fn_log_failure 2330$at_traceon; } 2331 2332{ set +x 2333$as_echo "$at_srcdir/testsuite.at:122: grep \"atf_helpers:passes\" stdout" 2334at_fn_check_prepare_trace "testsuite.at:122" 2335( $at_check_trace; grep "atf_helpers:passes" stdout 2336) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2337at_status=$? at_failed=false 2338$at_check_filter 2339at_fn_diff_devnull "$at_stderr" || at_failed=: 2340at_fn_diff_devnull "$at_stdout" || at_failed=: 2341at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:122" 2342$at_failed && at_fn_log_failure 2343$at_traceon; } 2344 2345{ set +x 2346$as_echo "$at_srcdir/testsuite.at:123: grep \"atf_helpers:skips\" stdout" 2347at_fn_check_prepare_trace "testsuite.at:123" 2348( $at_check_trace; grep "atf_helpers:skips" stdout 2349) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2350at_status=$? at_failed=false 2351$at_check_filter 2352at_fn_diff_devnull "$at_stderr" || at_failed=: 2353at_fn_diff_devnull "$at_stdout" || at_failed=: 2354at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:123" 2355$at_failed && at_fn_log_failure 2356$at_traceon; } 2357 2358 2359 set +x 2360 $at_times_p && times >"$at_times_file" 2361) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2362read at_status <"$at_status_file" 2363#AT_STOP_5 2364#AT_START_6 2365at_fn_group_banner 6 'testsuite.at:128' \ 2366 "run test case that skips" " " 2367at_xfail=no 2368( 2369 $as_echo "6. $at_setup_line: testing $at_desc ..." 2370 $at_traceon 2371 2372 2373 2374 2375 cat >Kyuafile <<'_ATEOF' 2376 2377syntax(2) 2378test_suite("bootstrap") 2379atf_test_program{name="atf_helpers"} 2380_ATEOF 2381 2382 ln -s $({ 2383 old=$(pwd) 2384 cd "${at_suite_dir}" 2385 # We need to locate a build product, not a source file, because the 2386 # test suite may be run outside of the source tree (think distcheck). 2387 while test $(pwd) != '/' -a ! -e engine/test_case_test; do 2388 cd .. 2389 done 2390 topdir=$(pwd) 2391 cd ${old} 2392 echo ${topdir} 2393})/bootstrap/atf_helpers atf_helpers 2394 2395{ set +x 2396$as_echo "$at_srcdir/testsuite.at:132: HOME=\$(pwd) TESTS=\"skips\" kyua --config=none test --store=bootstrap.db " 2397at_fn_check_prepare_notrace 'a $(...) command substitution' "testsuite.at:132" 2398( $at_check_trace; HOME=$(pwd) TESTS="skips" kyua --config=none test --store=bootstrap.db 2399) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2400at_status=$? at_failed=false 2401$at_check_filter 2402at_fn_diff_devnull "$at_stderr" || at_failed=: 2403echo stdout:; tee stdout <"$at_stdout" 2404at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:132" 2405$at_failed && at_fn_log_failure 2406$at_traceon; } 2407 2408{ set +x 2409$as_echo "$at_srcdir/testsuite.at:133: grep \"atf_helpers:fails\" stdout" 2410at_fn_check_prepare_trace "testsuite.at:133" 2411( $at_check_trace; grep "atf_helpers:fails" stdout 2412) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2413at_status=$? at_failed=false 2414$at_check_filter 2415at_fn_diff_devnull "$at_stderr" || at_failed=: 2416at_fn_diff_devnull "$at_stdout" || at_failed=: 2417at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:133" 2418$at_failed && at_fn_log_failure 2419$at_traceon; } 2420 2421{ set +x 2422$as_echo "$at_srcdir/testsuite.at:134: grep \"atf_helpers:passes\" stdout" 2423at_fn_check_prepare_trace "testsuite.at:134" 2424( $at_check_trace; grep "atf_helpers:passes" stdout 2425) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2426at_status=$? at_failed=false 2427$at_check_filter 2428at_fn_diff_devnull "$at_stderr" || at_failed=: 2429at_fn_diff_devnull "$at_stdout" || at_failed=: 2430at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:134" 2431$at_failed && at_fn_log_failure 2432$at_traceon; } 2433 2434{ set +x 2435$as_echo "$at_srcdir/testsuite.at:135: grep \"atf_helpers:skips.*skipped.*Skipped on purpose\" stdout" 2436at_fn_check_prepare_trace "testsuite.at:135" 2437( $at_check_trace; grep "atf_helpers:skips.*skipped.*Skipped on purpose" stdout 2438) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2439at_status=$? at_failed=false 2440$at_check_filter 2441at_fn_diff_devnull "$at_stderr" || at_failed=: 2442echo stdout:; cat "$at_stdout" 2443at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:135" 2444$at_failed && at_fn_log_failure 2445$at_traceon; } 2446 2447 2448 set +x 2449 $at_times_p && times >"$at_times_file" 2450) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2451read at_status <"$at_status_file" 2452#AT_STOP_6 2453#AT_START_7 2454at_fn_group_banner 7 'testsuite.at:141' \ 2455 "run two test cases, success" " " 2456at_xfail=no 2457( 2458 $as_echo "7. $at_setup_line: testing $at_desc ..." 2459 $at_traceon 2460 2461 2462 2463 2464 cat >Kyuafile <<'_ATEOF' 2465 2466syntax(2) 2467test_suite("bootstrap") 2468atf_test_program{name="atf_helpers"} 2469_ATEOF 2470 2471 ln -s $({ 2472 old=$(pwd) 2473 cd "${at_suite_dir}" 2474 # We need to locate a build product, not a source file, because the 2475 # test suite may be run outside of the source tree (think distcheck). 2476 while test $(pwd) != '/' -a ! -e engine/test_case_test; do 2477 cd .. 2478 done 2479 topdir=$(pwd) 2480 cd ${old} 2481 echo ${topdir} 2482})/bootstrap/atf_helpers atf_helpers 2483 2484{ set +x 2485$as_echo "$at_srcdir/testsuite.at:145: HOME=\$(pwd) TESTS=\"passes skips\" kyua --config=none test --store=bootstrap.db " 2486at_fn_check_prepare_notrace 'a $(...) command substitution' "testsuite.at:145" 2487( $at_check_trace; HOME=$(pwd) TESTS="passes skips" kyua --config=none test --store=bootstrap.db 2488) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2489at_status=$? at_failed=false 2490$at_check_filter 2491at_fn_diff_devnull "$at_stderr" || at_failed=: 2492echo stdout:; tee stdout <"$at_stdout" 2493at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:145" 2494$at_failed && at_fn_log_failure 2495$at_traceon; } 2496 2497{ set +x 2498$as_echo "$at_srcdir/testsuite.at:146: grep \"atf_helpers:fails\" stdout" 2499at_fn_check_prepare_trace "testsuite.at:146" 2500( $at_check_trace; grep "atf_helpers:fails" stdout 2501) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2502at_status=$? at_failed=false 2503$at_check_filter 2504at_fn_diff_devnull "$at_stderr" || at_failed=: 2505at_fn_diff_devnull "$at_stdout" || at_failed=: 2506at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:146" 2507$at_failed && at_fn_log_failure 2508$at_traceon; } 2509 2510{ set +x 2511$as_echo "$at_srcdir/testsuite.at:147: grep \"atf_helpers:passes.*passed\" stdout" 2512at_fn_check_prepare_trace "testsuite.at:147" 2513( $at_check_trace; grep "atf_helpers:passes.*passed" stdout 2514) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2515at_status=$? at_failed=false 2516$at_check_filter 2517at_fn_diff_devnull "$at_stderr" || at_failed=: 2518echo stdout:; cat "$at_stdout" 2519at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:147" 2520$at_failed && at_fn_log_failure 2521$at_traceon; } 2522 2523{ set +x 2524$as_echo "$at_srcdir/testsuite.at:148: grep \"atf_helpers:skips.*skipped.*Skipped on purpose\" stdout" 2525at_fn_check_prepare_trace "testsuite.at:148" 2526( $at_check_trace; grep "atf_helpers:skips.*skipped.*Skipped on purpose" stdout 2527) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2528at_status=$? at_failed=false 2529$at_check_filter 2530at_fn_diff_devnull "$at_stderr" || at_failed=: 2531echo stdout:; cat "$at_stdout" 2532at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:148" 2533$at_failed && at_fn_log_failure 2534$at_traceon; } 2535 2536 2537 set +x 2538 $at_times_p && times >"$at_times_file" 2539) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2540read at_status <"$at_status_file" 2541#AT_STOP_7 2542#AT_START_8 2543at_fn_group_banner 8 'testsuite.at:154' \ 2544 "run two test cases, failure" " " 2545at_xfail=no 2546( 2547 $as_echo "8. $at_setup_line: testing $at_desc ..." 2548 $at_traceon 2549 2550 2551 2552 2553 cat >Kyuafile <<'_ATEOF' 2554 2555syntax(2) 2556test_suite("bootstrap") 2557atf_test_program{name="atf_helpers"} 2558_ATEOF 2559 2560 ln -s $({ 2561 old=$(pwd) 2562 cd "${at_suite_dir}" 2563 # We need to locate a build product, not a source file, because the 2564 # test suite may be run outside of the source tree (think distcheck). 2565 while test $(pwd) != '/' -a ! -e engine/test_case_test; do 2566 cd .. 2567 done 2568 topdir=$(pwd) 2569 cd ${old} 2570 echo ${topdir} 2571})/bootstrap/atf_helpers atf_helpers 2572 2573{ set +x 2574$as_echo "$at_srcdir/testsuite.at:158: HOME=\$(pwd) TESTS=\"fails passes\" kyua --config=none test --store=bootstrap.db " 2575at_fn_check_prepare_notrace 'a $(...) command substitution' "testsuite.at:158" 2576( $at_check_trace; HOME=$(pwd) TESTS="fails passes" kyua --config=none test --store=bootstrap.db 2577) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2578at_status=$? at_failed=false 2579$at_check_filter 2580at_fn_diff_devnull "$at_stderr" || at_failed=: 2581echo stdout:; tee stdout <"$at_stdout" 2582at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:158" 2583$at_failed && at_fn_log_failure 2584$at_traceon; } 2585 2586{ set +x 2587$as_echo "$at_srcdir/testsuite.at:159: grep \"atf_helpers:fails.*failure.*Failed on purpose\" stdout" 2588at_fn_check_prepare_trace "testsuite.at:159" 2589( $at_check_trace; grep "atf_helpers:fails.*failure.*Failed on purpose" stdout 2590) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2591at_status=$? at_failed=false 2592$at_check_filter 2593at_fn_diff_devnull "$at_stderr" || at_failed=: 2594at_fn_diff_devnull "$at_stdout" || at_failed=: 2595at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:159" 2596$at_failed && at_fn_log_failure 2597$at_traceon; } 2598 2599{ set +x 2600$as_echo "$at_srcdir/testsuite.at:161: grep \"atf_helpers:passes.*passed\" stdout" 2601at_fn_check_prepare_trace "testsuite.at:161" 2602( $at_check_trace; grep "atf_helpers:passes.*passed" stdout 2603) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2604at_status=$? at_failed=false 2605$at_check_filter 2606at_fn_diff_devnull "$at_stderr" || at_failed=: 2607echo stdout:; cat "$at_stdout" 2608at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:161" 2609$at_failed && at_fn_log_failure 2610$at_traceon; } 2611 2612{ set +x 2613$as_echo "$at_srcdir/testsuite.at:162: grep \"atf_helpers:skips\" stdout" 2614at_fn_check_prepare_trace "testsuite.at:162" 2615( $at_check_trace; grep "atf_helpers:skips" stdout 2616) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2617at_status=$? at_failed=false 2618$at_check_filter 2619at_fn_diff_devnull "$at_stderr" || at_failed=: 2620at_fn_diff_devnull "$at_stdout" || at_failed=: 2621at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:162" 2622$at_failed && at_fn_log_failure 2623$at_traceon; } 2624 2625 2626 set +x 2627 $at_times_p && times >"$at_times_file" 2628) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2629read at_status <"$at_status_file" 2630#AT_STOP_8 2631#AT_START_9 2632at_fn_group_banner 9 'testsuite.at:167' \ 2633 "run mixed test cases" " " 2634at_xfail=no 2635( 2636 $as_echo "9. $at_setup_line: testing $at_desc ..." 2637 $at_traceon 2638 2639 2640 2641 2642 cat >Kyuafile <<'_ATEOF' 2643 2644syntax(2) 2645test_suite("bootstrap") 2646atf_test_program{name="atf_helpers"} 2647_ATEOF 2648 2649 ln -s $({ 2650 old=$(pwd) 2651 cd "${at_suite_dir}" 2652 # We need to locate a build product, not a source file, because the 2653 # test suite may be run outside of the source tree (think distcheck). 2654 while test $(pwd) != '/' -a ! -e engine/test_case_test; do 2655 cd .. 2656 done 2657 topdir=$(pwd) 2658 cd ${old} 2659 echo ${topdir} 2660})/bootstrap/atf_helpers atf_helpers 2661 2662{ set +x 2663$as_echo "$at_srcdir/testsuite.at:171: HOME=\$(pwd) TESTS=\"fails passes skips\" kyua --config=none test --store=bootstrap.db " 2664at_fn_check_prepare_notrace 'a $(...) command substitution' "testsuite.at:171" 2665( $at_check_trace; HOME=$(pwd) TESTS="fails passes skips" kyua --config=none test --store=bootstrap.db 2666) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2667at_status=$? at_failed=false 2668$at_check_filter 2669at_fn_diff_devnull "$at_stderr" || at_failed=: 2670echo stdout:; tee stdout <"$at_stdout" 2671at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:171" 2672$at_failed && at_fn_log_failure 2673$at_traceon; } 2674 2675{ set +x 2676$as_echo "$at_srcdir/testsuite.at:172: grep \"atf_helpers:fails.*failure.*Failed on purpose\" stdout" 2677at_fn_check_prepare_trace "testsuite.at:172" 2678( $at_check_trace; grep "atf_helpers:fails.*failure.*Failed on purpose" stdout 2679) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2680at_status=$? at_failed=false 2681$at_check_filter 2682at_fn_diff_devnull "$at_stderr" || at_failed=: 2683at_fn_diff_devnull "$at_stdout" || at_failed=: 2684at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:172" 2685$at_failed && at_fn_log_failure 2686$at_traceon; } 2687 2688{ set +x 2689$as_echo "$at_srcdir/testsuite.at:174: grep \"atf_helpers:passes.*passed\" stdout" 2690at_fn_check_prepare_trace "testsuite.at:174" 2691( $at_check_trace; grep "atf_helpers:passes.*passed" stdout 2692) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2693at_status=$? at_failed=false 2694$at_check_filter 2695at_fn_diff_devnull "$at_stderr" || at_failed=: 2696echo stdout:; cat "$at_stdout" 2697at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:174" 2698$at_failed && at_fn_log_failure 2699$at_traceon; } 2700 2701{ set +x 2702$as_echo "$at_srcdir/testsuite.at:175: grep \"atf_helpers:skips.*skipped.*Skipped on purpose\" stdout" 2703at_fn_check_prepare_trace "testsuite.at:175" 2704( $at_check_trace; grep "atf_helpers:skips.*skipped.*Skipped on purpose" stdout 2705) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2706at_status=$? at_failed=false 2707$at_check_filter 2708at_fn_diff_devnull "$at_stderr" || at_failed=: 2709echo stdout:; cat "$at_stdout" 2710at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:175" 2711$at_failed && at_fn_log_failure 2712$at_traceon; } 2713 2714 2715 set +x 2716 $at_times_p && times >"$at_times_file" 2717) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2718read at_status <"$at_status_file" 2719#AT_STOP_9 2720#AT_START_10 2721at_fn_group_banner 10 'testsuite.at:181' \ 2722 "run tests from build directories" " " 2723at_xfail=no 2724( 2725 $as_echo "10. $at_setup_line: testing $at_desc ..." 2726 $at_traceon 2727 2728 2729 2730 2731 cat >Kyuafile <<'_ATEOF' 2732 2733syntax(2) 2734test_suite("bootstrap") 2735atf_test_program{name="atf_helpers"} 2736_ATEOF 2737 2738 ln -s $({ 2739 old=$(pwd) 2740 cd "${at_suite_dir}" 2741 # We need to locate a build product, not a source file, because the 2742 # test suite may be run outside of the source tree (think distcheck). 2743 while test $(pwd) != '/' -a ! -e engine/test_case_test; do 2744 cd .. 2745 done 2746 topdir=$(pwd) 2747 cd ${old} 2748 echo ${topdir} 2749})/bootstrap/atf_helpers atf_helpers 2750 2751{ set +x 2752$as_echo "$at_srcdir/testsuite.at:185: mkdir src" 2753at_fn_check_prepare_trace "testsuite.at:185" 2754( $at_check_trace; mkdir src 2755) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2756at_status=$? at_failed=false 2757$at_check_filter 2758at_fn_diff_devnull "$at_stderr" || at_failed=: 2759at_fn_diff_devnull "$at_stdout" || at_failed=: 2760at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:185" 2761$at_failed && at_fn_log_failure 2762$at_traceon; } 2763 2764{ set +x 2765$as_echo "$at_srcdir/testsuite.at:186: mv Kyuafile src" 2766at_fn_check_prepare_trace "testsuite.at:186" 2767( $at_check_trace; mv Kyuafile src 2768) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2769at_status=$? at_failed=false 2770$at_check_filter 2771at_fn_diff_devnull "$at_stderr" || at_failed=: 2772at_fn_diff_devnull "$at_stdout" || at_failed=: 2773at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:186" 2774$at_failed && at_fn_log_failure 2775$at_traceon; } 2776 2777{ set +x 2778$as_echo "$at_srcdir/testsuite.at:187: mkdir obj" 2779at_fn_check_prepare_trace "testsuite.at:187" 2780( $at_check_trace; mkdir obj 2781) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2782at_status=$? at_failed=false 2783$at_check_filter 2784at_fn_diff_devnull "$at_stderr" || at_failed=: 2785at_fn_diff_devnull "$at_stdout" || at_failed=: 2786at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:187" 2787$at_failed && at_fn_log_failure 2788$at_traceon; } 2789 2790{ set +x 2791$as_echo "$at_srcdir/testsuite.at:188: mv atf_helpers obj" 2792at_fn_check_prepare_trace "testsuite.at:188" 2793( $at_check_trace; mv atf_helpers obj 2794) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2795at_status=$? at_failed=false 2796$at_check_filter 2797at_fn_diff_devnull "$at_stderr" || at_failed=: 2798at_fn_diff_devnull "$at_stdout" || at_failed=: 2799at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:188" 2800$at_failed && at_fn_log_failure 2801$at_traceon; } 2802 2803{ set +x 2804$as_echo "$at_srcdir/testsuite.at:189: HOME=\$(pwd) TESTS=\"fails passes skips\" kyua --config=none test --store=bootstrap.db --kyuafile=src/Kyuafile --build-root=obj" 2805at_fn_check_prepare_notrace 'a $(...) command substitution' "testsuite.at:189" 2806( $at_check_trace; HOME=$(pwd) TESTS="fails passes skips" kyua --config=none test --store=bootstrap.db --kyuafile=src/Kyuafile --build-root=obj 2807) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2808at_status=$? at_failed=false 2809$at_check_filter 2810at_fn_diff_devnull "$at_stderr" || at_failed=: 2811echo stdout:; tee stdout <"$at_stdout" 2812at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:189" 2813$at_failed && at_fn_log_failure 2814$at_traceon; } 2815 2816{ set +x 2817$as_echo "$at_srcdir/testsuite.at:192: grep \"atf_helpers:fails.*failure.*Failed on purpose\" stdout" 2818at_fn_check_prepare_trace "testsuite.at:192" 2819( $at_check_trace; grep "atf_helpers:fails.*failure.*Failed on purpose" stdout 2820) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2821at_status=$? at_failed=false 2822$at_check_filter 2823at_fn_diff_devnull "$at_stderr" || at_failed=: 2824at_fn_diff_devnull "$at_stdout" || at_failed=: 2825at_fn_check_status 1 $at_status "$at_srcdir/testsuite.at:192" 2826$at_failed && at_fn_log_failure 2827$at_traceon; } 2828 2829{ set +x 2830$as_echo "$at_srcdir/testsuite.at:194: grep \"atf_helpers:passes.*passed\" stdout" 2831at_fn_check_prepare_trace "testsuite.at:194" 2832( $at_check_trace; grep "atf_helpers:passes.*passed" stdout 2833) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2834at_status=$? at_failed=false 2835$at_check_filter 2836at_fn_diff_devnull "$at_stderr" || at_failed=: 2837echo stdout:; cat "$at_stdout" 2838at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:194" 2839$at_failed && at_fn_log_failure 2840$at_traceon; } 2841 2842{ set +x 2843$as_echo "$at_srcdir/testsuite.at:195: grep \"atf_helpers:skips.*skipped.*Skipped on purpose\" stdout" 2844at_fn_check_prepare_trace "testsuite.at:195" 2845( $at_check_trace; grep "atf_helpers:skips.*skipped.*Skipped on purpose" stdout 2846) >>"$at_stdout" 2>>"$at_stderr" 5>&- 2847at_status=$? at_failed=false 2848$at_check_filter 2849at_fn_diff_devnull "$at_stderr" || at_failed=: 2850echo stdout:; cat "$at_stdout" 2851at_fn_check_status 0 $at_status "$at_srcdir/testsuite.at:195" 2852$at_failed && at_fn_log_failure 2853$at_traceon; } 2854 2855 2856 set +x 2857 $at_times_p && times >"$at_times_file" 2858) 5>&1 2>&1 7>&- | eval $at_tee_pipe 2859read at_status <"$at_status_file" 2860#AT_STOP_10 2861