logo

utils-std

Collection of commonly available Unix tools git clone https://anongit.hacktivis.me/git/utils-std.git/

echo.sh (2587B)


  1. #!/bin/sh
  2. # SPDX-FileCopyrightText: 2017 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me>
  3. # SPDX-License-Identifier: MPL-2.0
  4. WD="$(dirname "$0")/../"
  5. target="${WD}/cmd/echo"
  6. plans=19
  7. . "$(dirname "$0")/tap.sh"
  8. t 'empty' '' '
  9. '
  10. t 'hello' 'hello' 'hello
  11. '
  12. t '-- hello' '-- hello' '-- hello
  13. '
  14. t -- '-n' '-n' ''
  15. t -- '-n foo' '-n foo' 'foo'
  16. t -- '-n foo bar' '-n foo bar' 'foo bar'
  17. t -- '-n -- foo' '-n -- foo' '-- foo'
  18. t dash - '-
  19. '
  20. t double-dash -- '--
  21. '
  22. wrap_od() {
  23. "$target" "$@" \
  24. | od -An -t x1 \
  25. | tr '[:lower:]' '[:upper:]' \
  26. | head -n 1 \
  27. | tr -d ' \t'
  28. }
  29. t_args 'e:newline' 'foo
  30. ' -e 'foo\n'
  31. t_args 'en:newline' 'foo
  32. ' -en 'foo\n'
  33. t_args 'e:simple_esc' "$(printf %b 'A\a\b\f\n\r\t\v\\')
  34. " -e '\A\a\b\f\n\r\t\v\\'
  35. t_args 'e:clear' 'foo' -e 'foo\cbar' 'baz'
  36. if command -v od >/dev/null 2>/dev/null; then
  37. t_cmd 'e:0' '666F6F0062617200
  38. ' wrap_od -en 'foo\0bar\0'
  39. else
  40. skip 'e:0' 'missing command: od'
  41. fi
  42. # od -An -t o1 test-cmd/inputs/all_bytes | sed 's; ;\\0;g' | tr -d '\n'
  43. all_bytes_octal='\0000\0001\0002\0003\0004\0005\0006\0007\0010\0011\0012\0013\0014\0015\0016\0017\0020\0021\0022\0023\0024\0025\0026\0027\0030\0031\0032\0033\0034\0035\0036\0037\0040\0041\0042\0043\0044\0045\0046\0047\0050\0051\0052\0053\0054\0055\0056\0057\0060\0061\0062\0063\0064\0065\0066\0067\0070\0071\0072\0073\0074\0075\0076\0077\0100\0101\0102\0103\0104\0105\0106\0107\0110\0111\0112\0113\0114\0115\0116\0117\0120\0121\0122\0123\0124\0125\0126\0127\0130\0131\0132\0133\0134\0135\0136\0137\0140\0141\0142\0143\0144\0145\0146\0147\0150\0151\0152\0153\0154\0155\0156\0157\0160\0161\0162\0163\0164\0165\0166\0167\0170\0171\0172\0173\0174\0175\0176\0177\0200\0201\0202\0203\0204\0205\0206\0207\0210\0211\0212\0213\0214\0215\0216\0217\0220\0221\0222\0223\0224\0225\0226\0227\0230\0231\0232\0233\0234\0235\0236\0237\0240\0241\0242\0243\0244\0245\0246\0247\0250\0251\0252\0253\0254\0255\0256\0257\0260\0261\0262\0263\0264\0265\0266\0267\0270\0271\0272\0273\0274\0275\0276\0277\0300\0301\0302\0303\0304\0305\0306\0307\0310\0311\0312\0313\0314\0315\0316\0317\0320\0321\0322\0323\0324\0325\0326\0327\0330\0331\0332\0333\0334\0335\0336\0337\0340\0341\0342\0343\0344\0345\0346\0347\0350\0351\0352\0353\0354\0355\0356\0357\0360\0361\0362\0363\0364\0365\0366\0367\0370\0371\0372\0373\0374\0375\0376\0377'
  44. t_file 'en:all_bytes' "$WD"/test-cmd/inputs/all_bytes -en "$all_bytes_octal"
  45. t_args 'E:newline' 'foo\n
  46. ' -E 'foo\n'
  47. t_args 'E:simple_esc' '\A\a\b\f\n\r\t\v\\
  48. ' -E '\A\a\b\f\n\r\t\v\\'
  49. t_args 'E:clear' 'foo\cbar baz
  50. ' -E 'foo\cbar' 'baz'
  51. t_args 'E:0' 'foo\0bar\0
  52. ' -E 'foo\0bar\0'