diff options
Diffstat (limited to 'test')
-rwxr-xr-x | test | 561 |
1 files changed, 23 insertions, 538 deletions
@@ -6,6 +6,7 @@ if test $# = 0; then printf 'Testing is broken!\n' >&2 exit 2 fi + set +e "$0" $$ r=$? rm -f -- .?-$$.tmp @@ -21,566 +22,50 @@ b=.b-$pid.tmp PATH="$(dirname -- "$0")/testutil:$PATH" export PATH +. tests/load-functions - -stderr () { - ("$@") 2>&1 >/dev/null -} - -getlist () { - getlist_list="$1" - shift 1 - if test $# = 0; then set cat; fi - "$@" < libsyscalls.h \ - | tr , '\n' \ - | sed -n 's/^\s*LIBSYSCALLS_'"${getlist_list}"'_\([A-Z0-9_]\+\(\s*=\s*[ 0-9A-Fa-fxXULul()^&|!*/<>~+-]\+\)\?\)\b.*$/\1/p' \ - | tr = ' ' \ - | (i=0; while read name value; do - if test -n "$value"; then - i=$(( $(printf '%s\n' "$value" | tr -d 'ULul') )) - i=$(printf '%s\n' "$i" | cut -d . -f 1) - fi - printf '%i %s\n' $(( i++ )) $name; - done) -} - -getnamelist () { - getlist "$@" | cut -d ' ' -f 2 -} - -getnumlist () { - getlist "$@" | cut -d ' ' -f 1 -} - -getname () { - (getlist "$1" | grep "^$2 " | cut -d ' ' -f 2 | tee /dev/stderr | grep . >/dev/null) 2>&1 -} - -getnum () { - (getlist "$1" | grep " $2"\$ | cut -d ' ' -f 1 | tee /dev/stderr | grep . >/dev/null) 2>&1 -} - -lookupname () { - (printf '%s\n' "$1" | grep "^$2 " | cut -d ' ' -f 2 | tee /dev/stderr | grep . >/dev/null) 2>&1 -} - -lookupnum () { - (printf '%s\n' "$1" | grep " $2"\$ | cut -d ' ' -f 1 | tee /dev/stderr | grep . >/dev/null) 2>&1 -} - -issupported () { - if test $# = 1; then - printf '%s\n' ${SUPPORTED_OSES} | grep -i "^$1"\$ > /dev/null - else - printf '%s\n' ${SUPPORTED_OSES} | grep -i "^$1"\$ > /dev/null && - env | sed -n 's/^SUPPORTED_'"$1"'_ARCHES=//p' | xargs printf '%s\n' | grep -i "^$2"\$ > /dev/null - fi -} - +alias t=. +# this is for test development; set to : to skip tests +# have already been written and passed, set to . otherwise set -v +test -n "${SUPPORTED_OSES}" # This check that the test's environment has set up, if this fails, run through `make check` -# self check -( - set -e - stderr_printf () { - printf "$@" >&2 - } - test "$(stderr_printf 'hello\n')" = '' - test "$(stderr stderr_printf 'hello\n' 2>&1)" = 'hello' - (! (false > $a) ) - getname OS 0 - (! getname OS) - getnum OS LINUX - (! getnum OS 0) - getnamelist OS | grep LINUX - getnamelist ARCH | grep AMD64_X32 - getnumlist OS | grep '^0$' - getnumlist ARCH | grep 10 - getnumlist OS ${CPP} | grep '^0$' - test -n "${CPP}" - test "$(getname OS 0)" = LINUX - test "$(getnum OS LINUX)" = 0 - test "$(lookupnum "$(getlist OS)" LINUX)" = 0 - test "$(lookupname "$(getlist OS)" 0)" = LINUX - printf 'a\n' > $a - printf 'b\n' > $b - (! diff -u $a $b) - printf 'a\n' > $b - diff -u $a $b - for os in ${SUPPORTED_OSES}; do - issupported $os - for arch in $(env | sed -n 's/^SUPPORTED_'"$os"'_ARCHES=//p' | xargs printf '%s\n'); do - issupported $os $arch - done - done -) >/dev/null 2>/dev/null - - - -### enums ### - -cpp_enum_clean () { - $CPP < libsyscalls.h | grep -v '#' | tr '\n,{}' ' \n\n\n' -} -check_enum_good () { - test -n "$(getnamelist "$@")" - test -n "$(getnumlist "$@")" - test -z "$(getnamelist "$@" | sort | uniq -d)" - test -z "$(getnumlist "$@" | sort | uniq -d)" - (( "$(getnumlist "$@" | sort -n | sed -n \$p)" <= 0xFFFF )) -} -check_enum_good OS -check_enum_good ARCH -check_enum_good CAT -for cat in $(getnamelist CAT); do - if test "$cat" = SUPPORT_PENDING || test "$cat" = NOT_IMPLEMENTED; then - continue - fi - check_enum_good ${cat}_SUBCAT - grep -i "enum.libsyscalls_${cat}_syscall_subcategory"'\s\+'"$cat"\\b < libsyscalls.h >/dev/null -done -check_enum_good SIGN -check_enum_good ANNOTATION -check_enum_good SECTION -check_enum_good TYPE cpp_enum_clean -types="$(getlist TYPE cpp_enum_clean)" - - - -### libsyscalls errors ### - -strerror-all.tu > $a -stderr perror-all.tu > $b -diff -u $a $b -test $(wc -l < $a) -ge 10 - -strerror-bad.tu > $a -stderr perror-bad.tu > $b -diff -u $a $b -test $(wc -l < $a) = 2 -grep -i '\(un\|not \)recogni[sz]ed' > /dev/null < $a -test "$(sed 1q < $a)" = "$(sed 1d < $a)" - -for t in perror-bad.tu perror-all.tu; do - stderr $t "" > $a - stderr $t > $b - diff -u $a $b - - stderr $t "test" > $a - stderr $t > $b - (! diff -u $a $b >/dev/null) - - stderr $t "test" > $a - stderr $t | sed 's/^/test: /' > $b - diff -u $a $b -done - -strerror-all.tu > $a -list-errors.tu > $b -(! grep '^-' >/dev/null < $b) -grep '^[0-9]\+ ' >/dev/null < $b -grep '^[0-9]\+ LIBSYSCALLS_E_[A-Z]\+ ' >/dev/null < $b -grep '^[0-9]\+ LIBSYSCALLS_E_[A-Z]\+ [A-Z].*[^.]$' >/dev/null < $b -cut -d ' ' -f 3- < $b | diff -u $a - -sed 1q < $b | grep '^0 LIBSYSCALLS_E_OK Success$' >/dev/null -test -z "$(cut -d ' ' -f 1 < $b | sort | uniq -d)" -test -z "$(cut -d ' ' -f 2 < $b | sort | uniq -d)" -test -z "$(cut -d ' ' -f 3- < $b | sort | uniq -d)" - -test "$(get-error.tu LIBSYSCALLS_E_OK)" = 'Success' -test "$(get-error.tu LIBSYSCALLS_E_OSNOSUP)" = 'Operating system not supported' -test "$(get-error.tu LIBSYSCALLS_E_NOSUCHSYSCALL)" = 'No such system call' - -# This can be updated, its just to check that nothing is accidentally changed in LIBSYSCALLS_LIST_ERRORS -cat > $a <<. -0 LIBSYSCALLS_E_OK Success -1 LIBSYSCALLS_E_OSNOSUP Operating system not supported -2 LIBSYSCALLS_E_ARCHNOSUP Architecture not supported for selected operating system -3 LIBSYSCALLS_E_NOSUCHSYSCALL No such system call -4 LIBSYSCALLS_E_NOERRORS There is no error listing for selected operating system -5 LIBSYSCALLS_E_NOSIGNALS There is no signal listing for selected operating system -6 LIBSYSCALLS_E_NOMEM Failed to allocate required memory -7 LIBSYSCALLS_E_INVAL Invalid arguments passed to function -8 LIBSYSCALLS_E_NOSUCHTYPE Type does not exist on the selected operating system or architecture -9 LIBSYSCALLS_E_ISSTRUCT Type is a structure or union -. -list-errors.tu | diff -u $a - - - - -### System call number ranges ### - -for os in $(getnamelist OS); do - osn=$(getnum OS $os) - for arch in $(getnamelist ARCH); do - archn=$(getnum ARCH $arch) - get-syscall-range.tu $osn $archn $os $arch > $a - min="$(sed -n 's/min: //p' < $a)" - max="$(sed -n 's/max: //p' < $a)" - test -n "$min" - test -n "$max" - if test $min = x || test $max = x; then - (! issupported $os $arch) - continue - fi - issupported $os $arch - done -done -check_range () { - if issupported $1 $2; then - osn=$(getnum OS $1) - archn=$(getnum ARCH $2) - get-syscall-range.tu $osn $archn $1 $2 > $a - min="$(sed -n 's/min: //p' < $a)" - max="$(sed -n 's/max: //p' < $a)" - test $min -le $3 - test $max -ge $4 - test -z "$5" || test $min -ge $5 - fi -} -check_range LINUX AMD64 0 453 0 -check_range LINUX AMD64_X32 0 547 0 -check_range LINUX M68K 0 452 0 -check_range LINUX PARISC_32 0 452 0 -check_range LINUX PARISC_64 0 452 0 -check_range LINUX SPARC_32 0 452 0 -check_range LINUX I386 0 452 0 - - - -### System call errors ### - -for os in $(getnamelist OS); do - osn=$(getnum OS $os) - for arch in $(getnamelist ARCH); do - archn=$(getnum ARCH $arch) - get-syscall-errors.tu $osn $archn $os $arch > $a - grep -v '^[0-9]\+ -' >/dev/null < $a - grep -v '^-' < $a > $b - grep '^\([0-9]\+\) \1 ' < $a | diff -u $a - - if issupported $os $arch; then - (! test "$(cat $a)" = x) - if test "$os" = LINUX; then - signed=1 - grep '^[0-9]\+ [0-9]\+ [A-Z0-9_]\+$' >/dev/null < $a - test -z "$(grep -v '^[0-9]\+ [0-9]\+ [A-Z0-9_]\+$' < $a)" - required="ERESTARTSYS ERESTARTNOINTR ERESTARTNOHAND ERESTART_RESTARTBLOCK EPERM ENOENT EDOM ELOOP" - else - continue; - fi - for req in $required; do - grep '^-\?[0-9]\+ [0-9]\+ '"$req"\$ >/dev/null < $a - done - cut -d ' ' -f $(( 2 - signed )) < $a > $b && sort -n < $b | diff -u $b - - if test -f testcases/errors-$os-$arch; then - if ! diff -u testcases/errors-$os-$arch $a; then - printf '\x1b[33m%s\x1b[m\n' "Maybe new errors have been added for $os on $arch" - exit 1 - fi - fi - else - # Can still be successful because it may be hardcorded to - # use the same table as another architecture that is supported, - # however it cannot be successful if the OS is not supported - issupported $os - fi - test -z "$(cut -d ' ' -f 1 < $a | sort | uniq -d)" - test -z "$(cut -d ' ' -f 2 < $a | sort | uniq -d)" - test -z "$(cut -d ' ' -f 3 < $a | sort | uniq -d)" - done -done -test -f testcases/errors-LINUX-AMD64 -test -f testcases/errors-LINUX-PARISC_32 -test -f testcases/errors-LINUX-PARISC_64 -(! diff -u testcases/errors-LINUX-AMD64 testcases/errors-LINUX-PARISC_32 >/dev/null) - - - -### Operating system signals ### - -for os in $(getnamelist OS); do - osn=$(getnum OS $os) - for arch in $(getnamelist ARCH); do - archn=$(getnum ARCH $arch) - get-signals.tu $osn $archn $os $arch > $a - grep -v '^[0-9]\+ -' >/dev/null < $a - grep -v '^-' < $a > $b - grep '^\([0-9]\+\) \1 ' < $a | diff -u $a - - if issupported $os $arch; then - (! test "$(cat $a)" = x) - if test "$os" = LINUX; then - signed=1 - grep '^[0-9]\+ [0-9]\+ [A-Z0-9_+]\+$' >/dev/null < $a - test -z "$(grep -v '^[0-9]\+ [0-9]\+ [A-Z0-9_+]\+$' < $a)" - required="SIGKILL SIGTERM SIGCONT SIGSTOP SIGHUP _SIGRTMIN _SIGRTMIN+8" - else - continue; - fi - for req in $required; do - grep '^-\?[0-9]\+ [0-9]\+ '"$req"\$ >/dev/null < $a - done - cut -d ' ' -f $(( 2 - signed )) < $a > $b && sort -n < $b | diff -u $b - - if test -f testcases/signals-$os-$arch; then - if ! diff -u testcases/signals-$os-$arch $a; then - printf '\x1b[33m%s\x1b[m\n' "Maybe new signals have been added for $os on $arch" - exit 1 - fi - fi - else - # Can still be successful because it may be hardcorded to - # use the same table as another architecture that is supported, - # however it cannot be successful if the OS is not supported - issupported $os - fi - test -z "$(cut -d ' ' -f 1 < $a | sort | uniq -d)" - test -z "$(cut -d ' ' -f 2 < $a | sort | uniq -d)" - test -z "$(cut -d ' ' -f 3 < $a | sort | uniq -d)" - done -done -test -f testcases/signals-LINUX-AMD64 - - - -### Split register classifications ### - -test $(getnamelist SECTION | grep '_HALF$' | wc -l) -ge 8 -for sec in $(getnamelist SECTION | grep '_HALF$'); do - secn=$(getnum SECTION $sec) - is-section-half.tu $secn - (! is-section-quarter.tu $secn) - test $(get-section-fraction.tu $secn) = 2 -done - -test $(getnamelist SECTION | grep '_QUARTER$' | wc -l) -ge 4 -for sec in $(getnamelist SECTION | grep '_QUARTER$'); do - secn=$(getnum SECTION $sec) - is-section-quarter.tu $secn - (! is-section-half.tu $secn) - test $(get-section-fraction.tu $secn) = 4 -done - -secn="$(getnum SECTION WHOLE)" -test -n "$secn" -test $(get-section-fraction.tu $secn) = 1 - - - -### Data types ### +(. tests/test-self-check;) >/dev/null 2>/dev/null -#in this test, we are assuming that char is 8 bits -intsizes="8 16 32 64" -cat > $b <<. -8Little 0 -16Little 0 8 -32Little 0 8 16 24 -64Little 0 8 16 24 32 40 48 56 -8Big 0 -16Big 8 0 -32Big 24 16 8 0 -64Big 56 48 40 32 24 16 8 0 -. -byteorders="$(cat $b)" -getbyteorder () { - printf '%s\n' "$byteorders" | grep "^$1$2 " | cut -d ' ' -f 2- -} -sed '1,/LIST_ARCH_SPECS/d' < libsyscalls_get_datatype_description.c \ -| sed '/#include/q' \ -| sed 's/\(TO''DO\)\s*([^)]*)/\1/g' \ -| sed -n 's/^\s*[A-Z_]\+(LIBSYSCALLS_ARCH_\([^)]*\)).*$/\1/p' \ -| sed 's/,\s*/ /g' > $b -grep '^AMD64 8 64 64 Little TWOS_COMPLEMENT' >/dev/null < $b -grep '^AMD64_X32 8 32 32 Little TWOS_COMPLEMENT' >/dev/null < $b -grep '^M68K 8 32 32 Big TWOS_COMPLEMENT' >/dev/null < $b -grep '^PARISC_32 8 32 32 Big TWOS_COMPLEMENT' >/dev/null < $b -grep '^PARISC_64 8 64 64 Big TWOS_COMPLEMENT' >/dev/null < $b -grep '^SPARC_32 8 32 32 Big TWOS_COMPLEMENT' >/dev/null < $b -grep '^I386 8 32 32 Little TWOS_COMPLEMENT' >/dev/null < $b -archinfo="$(cat $b)" -getbytesize () { - printf '%s\n' "$archinfo" | grep "^$1 " | cut -d ' ' -f 2 -} -getaddrsize () { - printf '%s\n' "$archinfo" | grep "^$1 " | cut -d ' ' -f 3 -} -getsizesize () { - printf '%s\n' "$archinfo" | grep "^$1 " | cut -d ' ' -f 4 -} -getendian () { - printf '%s\n' "$archinfo" | grep "^$1 " | cut -d ' ' -f 5 -} -getsign () { - printf '%s\n' "$archinfo" | grep "^$1 " | cut -d ' ' -f 6 -} -whole=$(getnum SECTION WHOLE) -noannotation=$(getnum ANNOTATION NONE) -for os in $(getnamelist OS); do - osn=$(getnum OS $os) - for arch in $(getnamelist ARCH); do - archn=$(getnum ARCH $arch) - if ! issupported $os $arch; then - continue - fi +t tests/enums +. tests/load-types - endian=$(getendian $arch) +t tests/errors - sign_representation=$(getsign $arch) - if test ${sign_representation} = TWOS_COMPLEMENT; then - min_is_minus_max=0 - elif test ${sign_representation} = ONES_COMPLEMENT; then - min_is_minus_max=1 - elif test ${sign_representation} = SIGN_MAGNITUDE; then - min_is_minus_max=1 - elif test ${sign_representation} = EXCESS_HALF; then - min_is_minus_max=0 - else - false - fi - sign_representation=$(getnum SIGN ${sign_representation}) +t tests/syscall-ranges - for n in $intsizes; do - type=INT$n - desc="$(get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type)" - printf '%s\n' "$desc" | grep "^width_in_bits = ${n}"\$ >/dev/null - printf '%s\n' "$desc" | grep "^array_size = 1"\$ >/dev/null - printf '%s\n' "$desc" | grep "^relative_position_of_array_size = 0"\$ >/dev/null - printf '%s\n' "$desc" | grep "^absolute_position_of_array_size = -1"\$ >/dev/null - printf '%s\n' "$desc" | grep "^is_signed = 1"\$ >/dev/null - printf '%s\n' "$desc" | grep "^is_unsigned = 0"\$ >/dev/null - printf '%s\n' "$desc" | grep "^min_is_minus_max = ${min_is_minus_max}"\$ >/dev/null - printf '%s\n' "$desc" | grep "^sign_representation = ${sign_representation}"\$ >/dev/null - printf '%s\n' "$desc" | grep "^annotation = ${noannotation}"\$ >/dev/null - printf '%s\n' "$desc" | grep "^section = ${whole}"\$ >/dev/null - printf '%s\n' "$desc" | grep "^byteorder = $(getbyteorder $n $endian)"\$ >/dev/null - done - for n in $intsizes; do - type=UINT$n - desc="$(get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type)" - printf '%s\n' "$desc" | grep "^width_in_bits = ${n}"\$ >/dev/null - printf '%s\n' "$desc" | grep "^array_size = 1"\$ >/dev/null - printf '%s\n' "$desc" | grep "^relative_position_of_array_size = 0"\$ >/dev/null - printf '%s\n' "$desc" | grep "^absolute_position_of_array_size = -1"\$ >/dev/null - printf '%s\n' "$desc" | grep "^is_signed = 0"\$ >/dev/null - printf '%s\n' "$desc" | grep "^is_unsigned = 1"\$ >/dev/null - printf '%s\n' "$desc" | grep "^annotation = ${noannotation}"\$ >/dev/null - printf '%s\n' "$desc" | grep "^section = ${whole}"\$ >/dev/null - printf '%s\n' "$desc" | grep "^byteorder = $(getbyteorder $n $endian)"\$ >/dev/null - done +t tests/syscall-errors - type=VOID - desc="$(get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type | tee $a)" - printf '%s\n' "$desc" | grep "^width_in_bits = 0"\$ >/dev/null - printf '%s\n' "$desc" | grep "^array_size = 1"\$ >/dev/null - printf '%s\n' "$desc" | grep "^relative_position_of_array_size = 0"\$ >/dev/null - printf '%s\n' "$desc" | grep "^absolute_position_of_array_size = -1"\$ >/dev/null - printf '%s\n' "$desc" | grep "^is_signed = 0"\$ >/dev/null - printf '%s\n' "$desc" | grep "^is_unsigned = 0"\$ >/dev/null - printf '%s\n' "$desc" | grep "^annotation = ${noannotation}"\$ >/dev/null - printf '%s\n' "$desc" | grep "^section = ${whole}"\$ >/dev/null - printf '%s\n' "$desc" | grep "^byteorder =\s*"\$ >/dev/null - type=NO_RETURN - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type | diff -u $a - +t tests/signals - type=INT - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $a - type=INT_SIGNAL - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b - sed 's/^\(annotation\) .*$/\1 = '"$(getnum ANNOTATION SIGNAL)"'/' < $a | diff -u - $b - type=INT_FD - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b - sed 's/^\(annotation\) .*$/\1 = '"$(getnum ANNOTATION FD)"'/' < $a | diff -u - $b - type=INT_ATFD - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b - sed 's/^\(annotation\) .*$/\1 = '"$(getnum ANNOTATION ATFD)"'/' < $a | diff -u - $b +t tests/split-register-classes - type=LONG - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $a - type=LONG_FD - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b - sed 's/^\(annotation\) .*$/\1 = '"$(getnum ANNOTATION FD)"'/' < $a | diff -u - $b - type=LONG_ATFD - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b - sed 's/^\(annotation\) .*$/\1 = '"$(getnum ANNOTATION ATFD)"'/' < $a | diff -u - $b +. tests/load-archinfo +t tests/archinfo - for type in SCHAR SHORT INT LONG LLONG PTRDIFF INTPTR SSIZE; do - if test $type = SCHAR; then - utype=UCHAR - elif test $type = SSIZE; then - utype=SIZE - else - utype=U$type - fi +t tests/fundamental-primitives - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $a - grep "^width_in_bits = ." < $a >/dev/null - grep "^array_size = 1"\$ < $a >/dev/null - grep "^relative_position_of_array_size = 0"\$ < $a >/dev/null - grep "^absolute_position_of_array_size = -1"\$ < $a >/dev/null - grep "^is_signed = 1"\$ < $a >/dev/null - grep "^is_unsigned = 0"\$ < $a >/dev/null - grep "^min_is_minus_max = ${min_is_minus_max}"\$ < $a >/dev/null - grep "^sign_representation = ${sign_representation}"\$ < $a >/dev/null - grep "^annotation = ${noannotation}"\$ < $a >/dev/null - grep "^section = ${whole}"\$ < $a >/dev/null - n="$(grep "^width_in_bits = ." < $a | cut -d ' ' -f 3)" - grep "^byteorder = $(getbyteorder $n $endian)"\$ < $a >/dev/null +t tests/is-struct - sed -e 's/^\(is_signed =\) .$/\1 0/' -e 's/^\(is_unsigned =\) .$/\1 1/' < $a > $b - ( ! diff -u $b $a > /dev/null) - grep -v '^\(min_is_minus_max\|sign_representation\) = ' < $b > $a - ( ! diff -u $a $b > /dev/null) - get-datatype-description.tu $osn $archn $(lookupnum "$types" $utype) $os $arch $utype > $b - grep -v '^\(min_is_minus_max\|sign_representation\) = ' < $b | diff -u $a - +t tests/array-types - if test $type = SCHAR; then - xtypes=CHAR - elif test $type = INTPTR; then - xtypes="MEMORY_ADDRESS STRING STRINGS_THEN_NULL" - else - xtypes= - fi - for xtype in $xtypes; do - get-datatype-description.tu $osn $archn $(lookupnum "$types" $xtype) $os $arch $xtype \ - | grep -v '^\(min_is_minus_max\|sign_representation\) = ' > $b - sed 's/^\(is_\(un\)signed =\) .$/\1 0/' < $a | diff -u - $b - done - done +t tests/fixed-array-types - type=INTPTR - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $a - type=PTRDIFF - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b - diff -u $a $b +t tests/split-register-types - type=DYNAMIC - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $a - type=UNKNOWN - get-datatype-description.tu $osn $archn $(lookupnum "$types" $type) $os $arch $type > $b - diff -u $a $b - done -done +t tests/os-dependent-primitives -printf '%s\n' "$types" | grep STRUCT >/dev/null -printf '%s\n' "$types" | grep UNION >/dev/null -structs="$(printf '%s\n' "$types" | grep '\(STRUCT\|UNION\)' | cut -d ' ' -f 1)" -int=$(lookupnum "$types" INT) -for os in $(getnamelist OS); do - osn=$(getnum OS $os) - for arch in $(getnamelist ARCH); do - archn=$(getnum ARCH $arch) - if ! issupported $os $arch; then - continue - fi - ( ! is-datatype-struct.tu $osn $archn $int $os $arch INT ) - for type in $structs; do - is-datatype-struct.tu $osn $archn $type $os $arch 'some struct or union' - done - done -done +t tests/os-dependent-arrays |