123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385 |
- #!/bin/bash
-
- . "$TF_DIR/include/subtest.sh"
- . "$TF_DIR/include/tools.sh"
-
- . "$(sfpath)" || tf_exit_error "failed to init shellfu"
- PRETTY=plain
- shellfu import pretty || tf_exit_error "failed to import pretty"
-
- tf_enum_subtests() {
- echo "v0_d0_debug"
- echo "v0_d0_debug_pipe"
- echo "v0_d0_echos"
- echo "v0_d0_think"
- echo "v0_d0_warn"
- echo "v0_d0_wrap_debug"
- echo "v0_d0_wrap_die"
- echo "v0_d0_wrap_mkusage"
- echo "v0_d1_debug"
- echo "v0_d1_debug_pipe"
- echo "v0_d1_debugv"
- echo "v0_d1_echos"
- echo "v0_d1_think"
- echo "v0_d1_warn"
- echo "v0_d1_wrap_debug"
- echo "v0_d1_wrap_die"
- echo "v0_d1_wrap_mkusage"
- echo "v1_d0_debug"
- echo "v1_d0_debug_pipe"
- echo "v1_d0_echos"
- echo "v1_d0_think"
- echo "v1_d0_warn"
- echo "v1_d0_wrap_debug"
- echo "v1_d0_wrap_die"
- echo "v1_d0_wrap_mkusage"
- echo "v1_d1_debug"
- echo "v1_d1_debug_pipe"
- echo "v1_d1_echos"
- echo "v1_d1_think"
- echo "v1_d1_warn"
- echo "v1_d1_wrap_debug"
- echo "v1_d1_wrap_debug_xmod"
- echo "v1_d1_wrap_die"
- echo "v1_d1_wrap_mkusage"
- echo "v1_d1_wrap_mkusage_0"
- echo "v1_d1_wrap_mkusage_0w"
- echo "v1_d1_wrap_mkusage_1"
- echo "v1_d1_wrap_mkusage_2"
- echo "v1_d1_wrap_mkusage_o"
- echo "v1_d1_wrap_mkusage_p"
- echo "v1_d1_wrap_mkusage_i"
- echo "v1_d1_wrap_mkusage_c"
- echo "v1_d1_wrap_mkusage_all"
- echo "v1_d1_wrap_mkusage_allw"
- echo "v1_d1_wrap_mkusage_conflict"
- echo "v1_d1_wrap_mkusage_self"
- echo "v1_d1_wrap_mkusage-subcommand"
- }
-
- BASH_VER_X=${BASH_VERSION%%.*}
- BASH_VER_YZ=${BASH_VERSION#$BASH_VER_X.}
- BASH_VER_Y=${BASH_VER_YZ%%.**}
-
- mkoracle() {
- local file=$1
- case $file in
-
- oracle/v0_d0/debug_pipe.stdout)
- echo 'line 1'
- echo 'line 2'
- ;;
- oracle/v0_d0/echos.stdout)
- echo 'foo'
- ;;
- oracle/v0_d0/warn.stderr)
- echo 'foo'
- ;;
- oracle/v0_d0/wrap_die.stderr)
- echo 'foo'
- ;;
- oracle/v0_d0/wrap_mkusage.stderr)
- echo 'usage:'
- echo ' wrap_mkusage [-d] load [-f file]'
- echo ' wrap_mkusage [-d] save [-f file]'
- ;;
-
- oracle/v0_d1/debug.stderr)
- echo 'debug:tf_testflt(): foo'
- ;;
- oracle/v0_d1/debug_pipe.stderr)
- echo "debug:tf_testflt(): |foo: 'line 1'"
- echo "debug:tf_testflt(): |foo: 'line 2'"
- ;;
- oracle/v0_d1/debug_pipe.stdout)
- echo 'line 1'
- echo 'line 2'
- ;;
- oracle/v0_d1/debugv.stderr)
- echo 'debug:tf_testflt(): foo="bar"'
- if test $BASH_VER_X -eq 4 && test $BASH_VER_Y -lt 4; then
- echo 'debug:tf_testflt(): fooarr='\''([0]="bar" [1]="baz")'\'''
- echo 'debug:tf_testflt(): fooassoc='\''([bar]="baz" [qux]="quux" )'\'''
- else
- echo 'debug:tf_testflt(): fooarr=([0]="bar" [1]="baz")'
- echo 'debug:tf_testflt(): fooassoc=([bar]="baz" [qux]="quux" )'
- fi
- echo 'debug:tf_testflt(): fooint="29"'
- echo 'debug:tf_testflt(): fooup="BAR"'
- echo 'debug:tf_testflt(): fooempty=""'
- echo 'debug:tf_testflt(): foounset #Unset'
- ;;
- oracle/v0_d1/echos.stdout)
- echo 'foo'
- ;;
- oracle/v0_d1/warn.stderr)
- echo 'foo'
- ;;
- oracle/v0_d1/wrap_debug.stderr)
- echo 'debug:wrap_debug: just poking about'
- echo 'debug:process_job(): in house'
- echo 'debug:process_task(): about to do a task'
- echo 'debug:__do_process_task(): really starting the task'
- echo 'debug:__really_do_process_task(): totally really starting the task'
- echo 'debug:foomod__room(): in a room'
- echo 'debug:foomod__desk(): in a desk'
- echo 'debug:foomod__drawer(): in a drawer'
- echo 'debug:_foomod__box(): in a secret box'
- echo 'debug:__foomod__document(): in a secret document'
- echo 'debug:barmod__page(): on a page'
- echo 'debug:barmod__paragraph(): in a paragraph'
- echo 'debug:barmod__sentence(): in a sentence'
- echo 'debug:_barmod__word(): in an unknown word'
- echo 'debug:__barmod__letter(): is an unknown letter'
- ;;
- oracle/v0_d1/wrap_die.stderr)
- echo '== trace =='
- echo ' test/wrap_die:19:main()'
- echo ' test/wrap_die:8:room()'
- echo ' test/wrap_die:12:desk()'
- echo ' -> test/wrap_die:16:drawer()'
- echo 'foo'
- ;;
- oracle/v0_d1/wrap_mkusage.stderr)
- echo 'usage:'
- echo ' wrap_mkusage [-d] load [-f file]'
- echo ' wrap_mkusage [-d] save [-f file]'
- ;;
-
- oracle/v1_d0/debug_pipe.stdout)
- echo 'line 1'
- echo 'line 2'
- ;;
- oracle/v1_d0/echos.stdout)
- echo 'foo'
- ;;
- oracle/v1_d0/think.stderr)
- echo 'foo'
- ;;
- oracle/v1_d0/warn.stderr)
- echo 'foo'
- ;;
- oracle/v1_d0/wrap_die.stderr)
- echo 'foo'
- ;;
- oracle/v1_d0/wrap_mkusage.stderr)
- echo 'usage:'
- echo ' wrap_mkusage [-d] load [-f file]'
- echo ' wrap_mkusage [-d] save [-f file]'
- ;;
-
- oracle/v1_d1/debug.stderr)
- echo 'debug:tf_testflt(): foo'
- ;;
- oracle/v1_d1/debug_pipe.stderr)
- echo "debug:tf_testflt(): |foo: 'line 1'"
- echo "debug:tf_testflt(): |foo: 'line 2'"
- ;;
- oracle/v1_d1/debug_pipe.stdout)
- echo 'line 1'
- echo 'line 2'
- ;;
- oracle/v1_d1/echos.stdout)
- echo 'foo'
- ;;
- oracle/v1_d1/think.stderr)
- echo 'foo'
- ;;
- oracle/v1_d1/warn.stderr)
- echo 'foo'
- ;;
- oracle/v1_d1/wrap_debug.stderr)
- echo 'debug:wrap_debug: just poking about'
- echo 'debug:process_job(): in house'
- echo 'debug:process_task(): about to do a task'
- echo 'debug:__do_process_task(): really starting the task'
- echo 'debug:__really_do_process_task(): totally really starting the task'
- echo 'debug:foomod__room(): in a room'
- echo 'debug:foomod__desk(): in a desk'
- echo 'debug:foomod__drawer(): in a drawer'
- echo 'debug:_foomod__box(): in a secret box'
- echo 'debug:__foomod__document(): in a secret document'
- echo 'debug:barmod__page(): on a page'
- echo 'debug:barmod__paragraph(): in a paragraph'
- echo 'debug:barmod__sentence(): in a sentence'
- echo 'debug:_barmod__word(): in an unknown word'
- echo 'debug:__barmod__letter(): is an unknown letter'
- ;;
- oracle/v1_d1/wrap_debug.stdout)
- ;;
- oracle/v1_d1/wrap_debug_xmod.stderr)
- echo 'debug:wrap_debug: just poking about'
- echo 'debug:process_task(): about to do a task'
- echo 'debug:__really_do_process_task(): totally really starting the task'
- echo 'debug:foomod__room(): in a room'
- echo 'debug:foomod__desk(): in a desk'
- echo 'debug:foomod__drawer(): in a drawer'
- echo 'debug:_foomod__box(): in a secret box'
- echo 'debug:__foomod__document(): in a secret document'
- ;;
- oracle/v1_d1/wrap_debug_xmod.stdout)
- ;;
- oracle/v1_d1/wrap_die.stderr)
- echo '== trace =='
- echo ' test/wrap_die:19:main()'
- echo ' test/wrap_die:8:room()'
- echo ' test/wrap_die:12:desk()'
- echo ' -> test/wrap_die:16:drawer()'
- echo 'foo'
- ;;
- oracle/v1_d1/wrap_mkusage-subcommand.stderr)
- echo 'usage:'
- echo ' wrap_mkusage subcommand [-d] load [-f file]'
- echo ' wrap_mkusage subcommand [-d] save [-f file]'
- ;;
- oracle/v1_d1/wrap_mkusage-subcommand.stdout)
- ;;
- oracle/v1_d1/wrap_mkusage.stderr)
- echo 'usage:'
- echo ' wrap_mkusage [-d] load [-f file]'
- echo ' wrap_mkusage [-d] save [-f file]'
- ;;
- oracle/v1_d1/wrap_mkusage_0w.stderr)
- echo 'bad usage: there should be no arguments'
- ;;
- oracle/v1_d1/wrap_mkusage_1.stderr)
- echo 'usage: wrap_mkusage_1 [-d] load [-f file]'
- ;;
- oracle/v1_d1/wrap_mkusage_2.stderr)
- echo 'usage:'
- echo ' wrap_mkusage_2 [-d] load [-f file]'
- echo ' wrap_mkusage_2 [-d] save [-f file]'
- ;;
- oracle/v1_d1/wrap_mkusage_all.stderr)
- echo 'usage:'
- echo ' wrap_mkusage_all [-d] load [-f file]'
- echo ' wrap_mkusage_all [-d] save [-f file]'
- echo ''
- echo 'options:'
- echo ' -d debug'
- echo ' -f file some file'
- echo ''
- echo 'commands:'
- echo ' load - load a file or something'
- echo ' save - save a file or something'
- echo ''
- echo 'other items:'
- echo ' data1'
- echo ' data2'
- echo ' data3'
- echo ''
- echo "and that's all folks!"
- ;;
- oracle/v1_d1/wrap_mkusage_allw.stderr)
- echo 'usage:'
- echo ' wrap_mkusage_allw [-d] load [-f file]'
- echo ' wrap_mkusage_allw [-d] save [-f file]'
- echo ''
- echo 'options:'
- echo ' -d debug'
- echo ' -f file some file'
- echo ''
- echo 'commands:'
- echo ' load - load a file or something'
- echo ' save - save a file or something'
- echo ''
- echo 'other items:'
- echo ' item1'
- echo ' item2'
- echo ' item3'
- echo ''
- echo "and that's all folks!"
- echo ''
- echo 'bad usage: missing an important argument'
- ;;
- oracle/v1_d1/wrap_mkusage_c.stderr)
- echo 'usage:'
- echo ' wrap_mkusage_c [-d] load [-f file]'
- echo ' wrap_mkusage_c [-d] save [-f file]'
- echo ''
- echo 'commands:'
- echo ' load - load a file or something'
- echo ' save - save a file or something'
- ;;
- oracle/v1_d1/wrap_mkusage_conflict.stderr)
- echo 'usage:'
- echo ' wrap_mkusage_conflict -o'
- echo ' wrap_mkusage_conflict [-d] load [-f file]'
- echo ' wrap_mkusage_conflict [-d] save [-f file]'
- ;;
- oracle/v1_d1/wrap_mkusage_i.stderr)
- echo 'usage:'
- echo ' wrap_mkusage_i [-d] load [-f file]'
- echo ' wrap_mkusage_i [-d] save [-f file]'
- echo ''
- echo 'other items:'
- echo ' item1'
- echo ' item2'
- echo ' item3'
- ;;
- oracle/v1_d1/wrap_mkusage_o.stderr)
- echo 'usage:'
- echo ' wrap_mkusage_o [-d] load [-f file]'
- echo ' wrap_mkusage_o [-d] save [-f file]'
- echo ''
- echo 'options:'
- echo ' -d debug'
- echo ' -f file some file'
- ;;
- oracle/v1_d1/wrap_mkusage_p.stderr)
- echo 'usage:'
- echo ' wrap_mkusage_p [-d] load [-f file]'
- echo ' wrap_mkusage_p [-d] save [-f file]'
- echo ''
- echo 'Author: chucky'
- ;;
- oracle/v1_d1/wrap_mkusage_self.stderr)
- echo 'usage:'
- echo ' somebody else [-d] load [-f file]'
- echo ' somebody else [-d] save [-f file]'
- ;;
-
- esac >"$file"
- }
-
-
- tf_do_subtest() {
- local name=$1
- local ttype="${name:0:5}"
- local tfun="${name:6}"
- local t_in="/dev/null"
- local o_es=0
- local o_out="oracle/$ttype/$tfun.stdout"
- local o_err="oracle/$ttype/$tfun.stderr"
- local cmd
- mkdir -p "oracle/$ttype"
- mkoracle "$o_out"
- mkoracle "$o_err"
- tf_debug "PRETTY=$PRETTY"
- case $tfun in
- debug) cmd='debug foo' ;;
- debug_pipe) cmd='debug_pipe foo'; t_in="test/$name.stdin" ;;
- debugv) cmd='foo=bar;
- fooarr=( bar baz );
- declare -A fooassoc;
- fooassoc[bar]=baz;
- fooassoc[qux]=quux;
- declare -i fooint;
- fooint=29;
- declare -u fooup;
- fooup=bar
- fooempty=
- debug -v foo fooarr fooassoc fooint fooup fooempty foounset'
- ;;
- echos) cmd='echos foo' ;;
- think) cmd='think foo' ;;
- warn) cmd='warn foo' ;;
- wrap_die) cmd='bash test/wrap_die foo'; o_es=3 ;;
- wrap_debug) cmd='bash test/wrap_debug' ;;
- wrap_debug_xmod)cmd='PRETTY_DEBUG_EXCLUDE=barmod,process,foo,process_job,__do_process_task bash test/wrap_debug' ;;
- wrap_mkusage*) cmd="bash test/$tfun"; o_es=2 ;;
- esac
- tf_testflt -n "$name" -i "$t_in" -S "$o_es" -O "$o_out" -E "$o_err" "$cmd"
- }
-
- tf_do_subtests
|