xref: /freebsd/bin/pkill/tests/pgrep-f_test.sh (revision 06c3fb27)
1#!/bin/sh
2
3: ${ARG_MAX:=524288}
4base=$(dirname $(realpath "$0"))
5
6echo "1..2"
7
8waitfor() {
9	flagfile=$1
10
11	iter=0
12
13	while [ ! -f ${flagfile} ] && [ ${iter} -lt 50 ]; do
14		sleep 0.10
15		iter=$((iter + 1))
16	done
17
18	if [ ! -f ${flagfile} ]; then
19		return 1
20	fi
21}
22
23sentinel="findme=test-$$"
24sentinelsz=$(printf "${sentinel}" | wc -c | tr -d '[[:space:]]')
25name="pgrep -f"
26spin="${base}/spin_helper"
27flagfile="pgrep_f_short.flag"
28
29${spin} --short ${flagfile} ${sentinel} &
30chpid=$!
31if ! waitfor ${flagfile}; then
32	echo "not ok - $name"
33else
34	pid=$(pgrep -f ${sentinel})
35	if [ "$pid" = "$chpid" ]; then
36		echo "ok - $name"
37	else
38		echo "not ok - $name"
39	fi
40fi
41kill $chpid
42
43name="pgrep -f long args"
44flagfile="pgrep_f_long.flag"
45${spin} --long ${flagfile} ${sentinel} &
46chpid=$!
47if ! waitfor ${flagfile}; then
48	echo "not ok - $name"
49else
50	pid=$(pgrep -f ${sentinel})
51	if [ "$pid" = "$chpid" ]; then
52		echo "ok - $name"
53	else
54		echo "not ok - $name"
55	fi
56fi
57kill $chpid
58