procps/testsuite/pgrep.test/pgrep.exp

129 lines
3.8 KiB
Plaintext
Raw Normal View History

#
# Dejagnu tests for pgrep - part of procps
#
set mypid [pid]
set not_ppid [ expr { $mypid + 1 } ]
set pgrep "${topdir}pgrep"
set uid [ exec id -u ]
set not_uid [ expr { $uid + 1 } ]
set gid [ exec id -g ]
set not_gid [ expr { $gid + 1 } ]
set ps "${topdir}ps/pscommand"
set raw_tty [ exec tty ]
regexp "/dev/(.+)" $raw_tty > tty
set test "pgprep with no arguments"
spawn $pgrep
expect_pass "$test" "^\(lt-\)\?pgrep: no matching criteria specified\\s*"
# Tests that don't need the test process go above here
if { [ catch { exec sh -c "command -v kill" } kill_path] } {
untested { kill path not found }
return
}
2011-11-30 17:41:35 +05:30
make_testproc
set testproc_len [ string length $testproc_comm ]
set testproc_trim [ string range $testproc_comm 0 [ expr { $testproc_len - 2 } ] ]
set testproc1_sid [ string trim [ exec $ps --no-headers -o sid $testproc1_pid ] ]
set test "pgrep find both test pids"
2011-11-30 17:41:35 +05:30
spawn $pgrep $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
# In Debian only
#set test "pgrep counts 2 test pids"
2011-11-30 17:41:35 +05:30
#spawn $pgrep -c $testproc_comm
#expect_pass "$test" "^2\\s*"
set test "pgrep with : delimiter"
2011-11-30 17:41:35 +05:30
spawn $pgrep -d : $testproc_comm
expect_pass "$test" "^${testproc1_pid}:${testproc2_pid}\\s*$"
# FIXME - Need to test against -f flag
2011-11-29 17:25:03 +05:30
set test "pgrep match against full process name"
untested $test
set test "pgrep with matching gid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -G $gid $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
set test "pgrep with not matching gid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -G $not_gid $testproc_comm
expect_blank $test
set test "pgrep with process name"
2011-11-30 17:41:35 +05:30
spawn $pgrep -l $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc_comm\\s+$testproc2_pid\\s+$testproc_comm\\s*$"
set test "pgrep with full command line"
spawn $pgrep -a $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc_path\\s+$sleep_time\\s+$testproc2_pid\\s+$testproc_path\\s+$sleep_time\\s*$"
set test "pgrep find newest test pid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -n $testproc_comm
expect_pass "$test" "^$testproc2_pid\\s*$"
set test "pgrep find oldest test pid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -o $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s*$"
set test "pgrep matches with parent pid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -P $mypid $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
set test "pgrep doesn't match with bogus parent pid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -P $not_ppid $testproc_comm
expect_blank "$test"
set test "pgrep matches with its own sid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -s $testproc1_sid $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
set test "pgrep doesn't match with bogus sid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -s 1 $testproc_comm
expect_blank "$test"
set test "pgrep matches on tty"
2011-11-30 17:41:35 +05:30
spawn $pgrep -t $tty $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
set test "pgrep doesn't match with bogus tty"
2011-11-30 17:41:35 +05:30
spawn $pgrep -t glass $testproc_comm
expect_blank "$test"
set test "pgrep with matching euid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -u $uid $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
set test "pgrep with not matching euid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -u $not_uid $testproc_comm
expect_blank $test
set test "pgrep with matching uid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -U $uid $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
set test "pgrep with not matching uid"
2011-11-30 17:41:35 +05:30
spawn $pgrep -U $not_uid $testproc_comm
expect_blank $test
set test "pgrep matches on substring"
2011-11-30 17:41:35 +05:30
spawn $pgrep $testproc_trim
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
set test "pgrep matches full string with exact"
2011-11-30 17:41:35 +05:30
spawn $pgrep -x $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
set test "pgrep does not match substring with exact"
2011-11-30 17:41:35 +05:30
spawn $pgrep -x $testproc_trim
expect_blank $test
# Cleanup
eval exec "$kill_path $testproc1_pid"
eval exec "$kill_path $testproc2_pid"
file delete $testproc_path