#!/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=$!
sleep 1
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 &
sleep 1
testing "-9 pattern" "pkill -9 yes && sleep 1 &&
   (pgrep yes || echo 'yes')" "yes\n" "" ""
killall yes >/dev/null 2>&1

yes >/dev/null &
sleep 1
testing "return success" "pkill yes && echo success" "success\n" "" ""
killall yes >/dev/null 2>&1

testing "return failure" "pkill almost-certainly-not || echo failure" \
    "failure\n" "" ""

