]> git.draconx.ca Git - dxcommon.git/blobdiff - tests/functions.at
help_print_desc: Simplify implementation.
[dxcommon.git] / tests / functions.at
index dbbcf6db2527c6ff7bbee0ab8718ceda1a8edbf6..71a282d7d4c67c0c9a62cd2662fb3d7a5841ef5c 100644 (file)
@@ -1,27 +1,9 @@
-dnl Copyright © 2015, 2021 Nick Bowler
+dnl Copyright © 2015, 2021-2023 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.
 
-m4_divert_push([PREPARE_TESTS])dnl
-test_run_tap () {
-  "$builddir/t/$1" > "$1.tap"
-  status=$?
-  cat "$1.tap"
-  prove -e cat "$1.tap"
-  return $status
-}
-m4_divert_pop([PREPARE_TESTS])
-
-m4_define([TEST_TAP], [AT_CHECK([test_run_tap "$1"], [0], [ignore])])
-m4_define([TEST_TAP_SIMPLE], [dnl
-AT_SETUP([$1])
-AT_KEYWORDS([$4])dnl
-m4_n([$3])dnl
-TEST_TAP([$2])
-AT_CLEANUP])
-
 AT_BANNER([Binary packing functions])
 
 TEST_TAP_SIMPLE([signed unpacking], [packtests], [], [pack])
@@ -32,6 +14,7 @@ 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"])
 
@@ -50,9 +33,28 @@ sed -e '5,$s/^/     /' -e '6,$s/^/     /' \
 AT_CHECK(["$builddir/t/helpdesc" 0 0 10 5 30 20 40 40 <test.txt],
   [0], [expout])
 
+AT_CHECK([AS_ECHO_N(["no trailing newline"]) |
+  "$builddir/t/helpdesc" 0 0], [0],
+[no trailing newline
+])
+
+AT_CLEANUP
+
+AT_SETUP([help_print_desc (empty description)])
+AT_KEYWORDS([help])
+
+AT_SKIP_IF([test ! -x "$builddir/t/helpdesc"])
+
+AT_CHECK(["$builddir/t/helpdesc" 0 0 0 20 </dev/null], [0], [
+
+])
+AT_CHECK(["$builddir/t/helpdesc" 1 20 </dev/null], [0], [
+])
+
 AT_CLEANUP
 
 AT_SETUP([help_print_optstring])
+AT_KEYWORDS([help])
 
 AT_SKIP_IF([test ! -x "$builddir/t/helpopt"])
 
@@ -66,7 +68,8 @@ AT_CHECK([m4_join([ ],
   [--quux -q '@<:@ARG@:>@'],
   [--hello-this-is-a-very-long-option 20],
   [--hello-this-is-a-very-long-option 50],
-  [--not-long 12])], [0],
+  [--not-long 12],
+  [--flagged -f \&])], [0],
 [[  --foo      7
   -b, --bar    11
   --baz=ARG    11
@@ -77,11 +80,13 @@ AT_CHECK([m4_join([ ],
        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_KEYWORDS([help])
 
 AT_SKIP_IF([test ! -x "$builddir/t/helpopt2"])
 
@@ -95,7 +100,8 @@ AT_CHECK([m4_join([ ],
   [--quux -q '@<:@ARG@:>@'],
   [--hello-this-is-a-very-long-option 20],
   [--hello-this-is-a-very-long-option 50],
-  [--not-long 12])], [0],
+  [--not-long 12],
+  [--flagged -f \&])], [0],
 [[  -foo       6
   -bar 6
   -baz ARG     10
@@ -106,6 +112,36 @@ AT_CHECK([m4_join([ ],
        0
   -hello-this-is-a-very-long-option    35
   -not-long    11
+  -flagged     10
 ]])
 
 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 -f - >expout <<'EOF'
+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
+
+AT_CHECK([LC_ALL=$locale_utf8 xargs "$builddir/t/helpopt3" <args],
+  [0], [expout])
+
+AT_CLEANUP
+
+AT_BANNER([Miscellaneous functions])
+
+TEST_TAP_SIMPLE([copyright_symbol], [copysym], [], [])