]> git.draconx.ca Git - dxcommon.git/blobdiff - tests/functions.at
help_print_optstring: Fix handling of 'flag' options.
[dxcommon.git] / tests / functions.at
index 115b8cffa08593530fb533d928a5cc15d27b0351..cfd5408ee604775f35a593f3e9362bdbd4b1adf8 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright © 2015 Nick Bowler
+dnl Copyright © 2015, 2021-2022 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.
@@ -28,3 +28,88 @@ 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_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 <test.txt],
+  [0], [expout])
+
+AT_CLEANUP
+
+AT_SETUP([help_print_optstring])
+
+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],
+[[  --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
+]])
+
+AT_CLEANUP
+
+AT_SETUP([help_print_optstring (getopt_long_only)])
+
+AT_SKIP_IF([test ! -x "$builddir/t/helpopt2"])
+
+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],
+[[  -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
+]])
+
+AT_CLEANUP