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. dnl There is NO WARRANTY, to the extent permitted by law. AT_BANNER([Binary packing functions]) TEST_TAP_SIMPLE([signed unpacking], [packtests], [], [pack]) TEST_TAP_SIMPLE([unsigned unpacking], [packtestu], [], [pack]) TEST_TAP_SIMPLE([64-bit signed unpacking], [packtests64], [], [pack]) TEST_TAP_SIMPLE([64-bit unsigned unpacking], [packtestu64], [], [pack]) AT_BANNER([Help formatting functions]) AT_SETUP([help_print_desc]) AT_KEYWORDS([help]) AT_SKIP_IF([test ! -x "$builddir/t/helpdesc"]) AT_DATA([test.txt], [[this is the first line this is the second line this is the third line and so on ]]) sed -e '5,$s/^/ /' -e '6,$s/^/ /' \ -e '10,$s/^/ /' \ -e '13s/^ *//' -e '14,$s/^/ /' \ test.txt test.txt test.txt test.txt >expout AT_CHECK(["$builddir/t/helpdesc" 0 0 10 5 30 20 40 40 /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"], [--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 (getopt_long_only)]) AT_KEYWORDS([help]) 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"], [--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)]) AT_KEYWORDS([help nls]) AT_SKIP_IF([test ! -x "$builddir/t/helpopt3"]) TEST_UTF8_LOCALE([locale_utf8]) # Avoid some deficient shell parsers barfing on UTF-8 sequences by # generating them this way using octal escapes. $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" "7" print " " hankaku "\t" "7" }' >expout