#!/bin/bash

# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com>
# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com>

#cleaning 'yes' processes
killall yes >/dev/null 2>&1

[ -f testing.sh ] && . testing.sh

#testing "name" "command" "result" "infile" "stdin"

# Testcases for pkill command

yes >/dev/null &
sleep 1
testing "pattern" "pkill yes && sleep 1 && (pgrep yes || echo 'yes')" \
  "yes\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
yes print1 >/dev/null &
yes print2 >/dev/null &
sleep 1
testing "pattern (multiple)" "pkill yes && sleep 1 &&
   (pgrep yes || echo 'yes')" "yes\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
sleep 1
testing "-f pattern (one)" "pkill -f yes && sleep 1 &&
   (pgrep yes || echo 'yes')" "yes\n" "" ""
killall yes >/dev/null 2>&1

yes print1 >/dev/null &
sleep 1
testing "-f pattern args" "pkill -f \"yes print1\" && sleep 1 &&
   (pgrep yes || echo 'yes')" "yes\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
yes print1 >/dev/null &
yes print2 >/dev/null &
sleep 1
testing "-f pattern (multiple)" "pkill -f yes && sleep 1 &&
   (pgrep yes || echo 'yes')" "yes\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
sleep 1
testing "-s 0 -f pattern (regexp)" "pkill -s 0 -f ye* && sleep 1 &&
   (pgrep yes || echo 'yes')" "yes\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
proc1=$!
yes >/dev/null &
proc2=$!
sleep 1
testing "-n pattern" "pkill -n yes && sleep 1 && pgrep yes" \
  "$proc1\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
proc1=$!
yes >/dev/null &
proc2=$!
sleep 1
testing "-o pattern" "pkill -o yes && sleep 1 && pgrep yes" \
  "$proc2\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
sleep 1
testing "-s (blank) pattern" "pkill -s '' yes && sleep 1 &&
   (pgrep yes || echo 'yes')" "yes\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
sleep 1
testing "-s 0 pattern" "pkill -s 0 yes && sleep 1 &&
   (pgrep yes || echo 'yes')" "yes\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
proc=$!
proc_p=`cat /proc/${proc}/stat | awk '{ print $4 }'`
sleep 1
testing "-P parent_prodId pattern" "pkill -P $proc_p yes && sleep 1 &&
   (pgrep yes || echo 'yes')" "yes\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
proc=$!
proc_parent=`cat /proc/${proc}/stat | awk '{ print $4 }'`
sleep 1
testing "-9 pattern" "pkill -9 yes && sleep 1 &&
   (pgrep yes || echo 'yes')" "yes\n" "" ""
killall yes >/dev/null 2>&1

