pkill.test 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #!/bin/bash
  2. # Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com>
  3. # Copyright 2013 Robin Mittal <robinmittal.it@gmail.com>
  4. #cleaning 'yes' processes
  5. killall yes >/dev/null 2>&1
  6. [ -f testing.sh ] && . testing.sh
  7. #testing "name" "command" "result" "infile" "stdin"
  8. # Testcases for pkill command
  9. yes >/dev/null &
  10. sleep 1
  11. testing "pattern" "pkill yes && sleep 1 && (pgrep yes || echo 'yes')" \
  12. "yes\n" "" ""
  13. killall yes >/dev/null 2>&1
  14. yes >/dev/null &
  15. yes print1 >/dev/null &
  16. yes print2 >/dev/null &
  17. sleep 1
  18. testing "pattern (multiple)" "pkill yes && sleep 1 &&
  19. (pgrep yes || echo 'yes')" "yes\n" "" ""
  20. killall yes >/dev/null 2>&1
  21. yes >/dev/null &
  22. sleep 1
  23. testing "-f pattern (one)" "pkill -f yes && sleep 1 &&
  24. (pgrep yes || echo 'yes')" "yes\n" "" ""
  25. killall yes >/dev/null 2>&1
  26. yes print1 >/dev/null &
  27. sleep 1
  28. testing "-f pattern args" "pkill -f \"yes print1\" && sleep 1 &&
  29. (pgrep yes || echo 'yes')" "yes\n" "" ""
  30. killall yes >/dev/null 2>&1
  31. yes >/dev/null &
  32. yes print1 >/dev/null &
  33. yes print2 >/dev/null &
  34. sleep 1
  35. testing "-f pattern (multiple)" "pkill -f yes && sleep 1 &&
  36. (pgrep yes || echo 'yes')" "yes\n" "" ""
  37. killall yes >/dev/null 2>&1
  38. yes this-is-unlikely-to-appear-otherwise >/dev/null &
  39. sleep 1
  40. testing "-s 0 -f pattern (regexp)" "pkill -s 0 -f .*-unlikely-.*-otherwise &&
  41. sleep 1 && (pgrep yes || echo 'yes')" "yes\n" "" ""
  42. killall yes >/dev/null 2>&1
  43. yes >/dev/null &
  44. proc1=$!
  45. yes >/dev/null &
  46. proc2=$!
  47. sleep 1
  48. testing "-n pattern" "pkill -n yes && sleep 1 && pgrep yes" \
  49. "$proc1\n" "" ""
  50. killall yes >/dev/null 2>&1
  51. yes >/dev/null &
  52. proc1=$!
  53. sleep 1
  54. yes >/dev/null &
  55. proc2=$!
  56. sleep 1
  57. testing "-o pattern" "pkill -o yes && sleep 1 && pgrep yes" \
  58. "$proc2\n" "" ""
  59. killall yes >/dev/null 2>&1
  60. yes >/dev/null &
  61. sleep 1
  62. testing "-s (blank) pattern" "pkill -s '' yes && sleep 1 &&
  63. (pgrep yes || echo 'yes')" "yes\n" "" ""
  64. killall yes >/dev/null 2>&1
  65. yes >/dev/null &
  66. sleep 1
  67. testing "-s 0 pattern" "pkill -s 0 yes && sleep 1 &&
  68. (pgrep yes || echo 'yes')" "yes\n" "" ""
  69. killall yes >/dev/null 2>&1
  70. yes >/dev/null &
  71. proc=$!
  72. proc_p=`cat /proc/${proc}/stat | cut -d' ' -f4`
  73. sleep 1
  74. testing "-P parent_prodId pattern" "pkill -P $proc_p yes && sleep 1 &&
  75. (pgrep yes || echo 'yes')" "yes\n" "" ""
  76. killall yes >/dev/null 2>&1
  77. yes >/dev/null &
  78. sleep 1
  79. testing "-9 pattern" "pkill -9 yes && sleep 1 &&
  80. (pgrep yes || echo 'yes')" "yes\n" "" ""
  81. killall yes >/dev/null 2>&1
  82. yes >/dev/null &
  83. sleep 1
  84. testing "return success" "pkill yes && echo success" "success\n" "" ""
  85. killall yes >/dev/null 2>&1
  86. testing "return failure" "pkill almost-certainly-not || echo failure" \
  87. "failure\n" "" ""