X-Git-Url: http://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/cc589a8b1539e9515985081d9498dda2b6b6caf7..2849f722ef8dd9bf9dcdfb0aa11e08a050cf302e:/tests/functions.at diff --git a/tests/functions.at b/tests/functions.at index 6b092a0..4a9aeb5 100644 --- a/tests/functions.at +++ b/tests/functions.at @@ -56,20 +56,7 @@ AT_CLEANUP AT_SETUP([help_print_optstring]) AT_KEYWORDS([help]) -AT_SKIP_IF([test ! -x "$builddir/t/helpopt"]) - -AT_CHECK([m4_join([ ], - ["$builddir/t/helpopt"], - [--foo], - [--bar -b], - [--baz ARG], - [--baz -B ARG], - [--quux '@<:@ARG@:>@'], - [--quux -q '@<:@ARG@:>@'], - [--hello-this-is-a-very-long-option 20], - [--hello-this-is-a-very-long-option 50], - [--not-long 12], - [--flagged -f \&])], [0], +AT_DATA([expout], [[ --foo 6 -b, --bar 10 --baz=ARG 10 @@ -83,15 +70,20 @@ AT_CHECK([m4_join([ ], --flagged 10 ]]) -AT_CLEANUP - -AT_SETUP([help_print_optstring (getopt_long_only)]) -AT_KEYWORDS([help]) - -AT_SKIP_IF([test ! -x "$builddir/t/helpopt2"]) +# Some very old printf implementations return 0 on success instead of the +# number of bytes written. The help_print_optstring function is not fully +# functional in this case. It should fallback to printing a newline and +# returning 0 so the overall --help output should be mostly acceptable. +# +# We verify that this indeed works properly by adjusting the expected +# output accordingly, but ... +AS_IF(["$builddir/t/printfchk" >/dev/null], [ancient_printf=false], +[[sed -n -e 's/ [0-9]*$//' -e '/^ *-/p' -e 's/^ *-.*/ 0/p' expout >expout.tmp +mv -f expout.tmp expout +ancient_printf=:]]) AT_CHECK([m4_join([ ], - ["$builddir/t/helpopt2"], + ["$builddir/t/helpopt"], [--foo], [--bar -b], [--baz ARG], @@ -101,7 +93,18 @@ AT_CHECK([m4_join([ ], [--hello-this-is-a-very-long-option 20], [--hello-this-is-a-very-long-option 50], [--not-long 12], - [--flagged -f \&])], [0], + [--flagged -f \&])], [0], [expout]) + +# ... we ultimately skip the test so there's an indication (other than an +# outright failure) that the function is not working completely. +AT_SKIP_IF([$ancient_printf]) + +AT_CLEANUP + +AT_SETUP([help_print_optstring (getopt_long_only)]) +AT_KEYWORDS([help]) + +AT_DATA([expout], [[ -foo 5 -bar 5 -baz ARG 9 @@ -115,6 +118,35 @@ AT_CHECK([m4_join([ ], -flagged 9 ]]) +# Some very old printf implementations return 0 on success instead of the +# number of bytes written. The help_print_optstring function is not fully +# functional in this case. It should fallback to printing a newline and +# returning 0 so the overall --help output should be mostly acceptable. +# +# We verify that this indeed works properly by adjusting the expected +# output accordingly, but ... +AS_IF(["$builddir/t/printfchk" >/dev/null], [ancient_printf=false], +[[sed -n -e 's/ [0-9]*$//' -e '/^ *-/p' -e 's/^ *-.*/ 0/p' expout >expout.tmp +mv -f expout.tmp expout +ancient_printf=:]]) + +AT_CHECK([m4_join([ ], + ["$builddir/t/helpopt2"], + [--foo], + [--bar -b], + [--baz ARG], + [--baz -B ARG], + [--quux '@<:@ARG@:>@'], + [--quux -q '@<:@ARG@:>@'], + [--hello-this-is-a-very-long-option 20], + [--hello-this-is-a-very-long-option 50], + [--not-long 12], + [--flagged -f \&])], [0], [expout]) + +# ... we ultimately skip the test so there's an indication (other than an +# outright failure) that the function is not working completely. +AT_SKIP_IF([$ancient_printf]) + AT_CLEANUP AT_SETUP([help_print_optstring (NLS fullwidth/halfwidth)])