wc01.sh 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/bin/sh
  2. # SPDX-License-Identifier: GPL-2.0-or-later
  3. # Copyright (c) 2016 Fujitsu Ltd.
  4. # Author: Xiao Yang <yangx.jy@cn.fujitsu.com>
  5. #
  6. # Test wc command with some basic options.
  7. TST_CNT=12
  8. TST_SETUP=setup
  9. TST_TESTFUNC=do_test
  10. TST_NEEDS_TMPDIR=1
  11. TST_NEEDS_CMDS="wc"
  12. . tst_test.sh
  13. setup()
  14. {
  15. echo "hello world" > ltp_wc
  16. echo "This is a test" >> ltp_wc
  17. }
  18. wc_test()
  19. {
  20. local wc_opt=$1
  21. local wc_file=$2
  22. local std_out=$3
  23. local wc_cmd="wc $wc_opt $wc_file"
  24. eval $wc_cmd > temp 2>&1
  25. if [ $? -ne 0 ]; then
  26. grep -q -E "unknown option|invalid option|unrecognized option" temp
  27. if [ $? -eq 0 ]; then
  28. tst_res TCONF "$wc_cmd not supported."
  29. else
  30. tst_res TFAIL "$wc_cmd failed."
  31. fi
  32. return
  33. fi
  34. if [ $# -gt 1 ]; then
  35. local act_out=`cat temp | awk '{printf $1}'`
  36. if [ $act_out -ne $std_out ]; then
  37. tst_res TFAIL "$wc_cmd got mismatched data."
  38. return
  39. fi
  40. fi
  41. tst_res TPASS "wc passed with $wc_opt option."
  42. }
  43. do_test()
  44. {
  45. case $1 in
  46. 1) wc_test "-c" ltp_wc 27;;
  47. 2) wc_test "--bytes" ltp_wc 27;;
  48. 3) wc_test "-l" ltp_wc 2;;
  49. 4) wc_test "--lines" ltp_wc 2;;
  50. 5) wc_test "-L" ltp_wc 14;;
  51. 6) wc_test "--max-line-length" ltp_wc 14;;
  52. 7) wc_test "-w" ltp_wc 6;;
  53. 8) wc_test "--words" ltp_wc 6;;
  54. 9) wc_test "-m" ltp_wc 27;;
  55. 10) wc_test "--chars" ltp_wc 27;;
  56. 11) wc_test "--help";;
  57. 12) wc_test "--version";;
  58. esac
  59. }
  60. tst_run