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