X-Git-Url: http://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/f7845ef1698291a23975052a100c12bf38a0664d..14c0c9a9e5eeacc82904f4cc33e0842f5ee9ec44:/tests/functions.at diff --git a/tests/functions.at b/tests/functions.at index 71a282d..01a96a7 100644 --- a/tests/functions.at +++ b/tests/functions.at @@ -1,4 +1,4 @@ -dnl Copyright © 2015, 2021-2023 Nick Bowler +dnl Copyright © 2015, 2021-2024 Nick Bowler dnl dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2. dnl This is free software: you are free to do what the fuck you want to. @@ -56,7 +56,31 @@ AT_CLEANUP AT_SETUP([help_print_optstring]) AT_KEYWORDS([help]) -AT_SKIP_IF([test ! -x "$builddir/t/helpopt"]) +AT_DATA([expout], +[[ --foo 6 + -b, --bar 10 + --baz=ARG 10 + -B, --baz=ARG 14 + --quux[=ARG] 13 + -q, --quux[=ARG] 17 + --hello-this-is-a-very-long-option + 0 + --hello-this-is-a-very-long-option 35 + --not-long 11 + --flagged 10 +]]) + +# 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/helpopt"], @@ -69,26 +93,42 @@ 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], -[[ --foo 7 - -b, --bar 11 - --baz=ARG 11 - -B, --baz=ARG 15 - --quux[=ARG] 14 - -q, --quux[=ARG] 18 - --hello-this-is-a-very-long-option - 0 - --hello-this-is-a-very-long-option 36 - --not-long 12 - --flagged 11 -]]) + [--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_SKIP_IF([test ! -x "$builddir/t/helpopt2"]) +AT_DATA([expout], +[[ -foo 5 + -bar 5 + -baz ARG 9 + -baz ARG 9 + -quux [ARG] 12 + -quux [ARG] 12 + -hello-this-is-a-very-long-option + 0 + -hello-this-is-a-very-long-option 34 + -not-long 10 + -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"], @@ -101,19 +141,11 @@ 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], -[[ -foo 6 - -bar 6 - -baz ARG 10 - -baz ARG 10 - -quux [ARG] 13 - -quux [ARG] 13 - -hello-this-is-a-very-long-option - 0 - -hello-this-is-a-very-long-option 35 - -not-long 11 - -flagged 10 -]]) + [--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 @@ -125,17 +157,15 @@ TEST_UTF8_LOCALE([locale_utf8]) # Avoid some deficient shell parsers barfing on UTF-8 sequences by # generating them this way using octal escapes. -$AWK -f - >expout <<'EOF' -BEGIN { +$AWK 'BEGIN { zenkaku = "--\345\205\250\350\247\222"; hankaku = "--\357\276\212\357\276\235\357\275\266\357\275\270" print zenkaku, hankaku >"args" - print " " zenkaku "\t" "8" - print " " hankaku "\t" "8" -} -EOF + print " " zenkaku "\t" "7" + print " " hankaku "\t" "7" +}' >expout