summaryrefslogtreecommitdiff
path: root/testsuite/pgrep.test/pgrep.exp
blob: 1110e70f07e7a65eed4ff857ffa928d67739d419 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#
# Dejagnu tests for pgrep - part of procps
#
set mypid [pid]
set not_ppid [ expr { $mypid + 1 } ]
set pgrep "${topdir}src/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}src/ps/pscommand"
set tty [ get_tty ]

set test "pgprep with no arguments"
spawn $pgrep
expect_pass "$test" "^\(lt-\)\?pgrep: no matching criteria specified\\s*"

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 not_testproc1_sid [ expr { $testproc1_sid + 1 } ]

set test "pgrep find both test pids"
spawn $pgrep $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"

# In Debian only
set test "pgrep counts 2 test pids"
spawn $pgrep -c $testproc_comm
expect_pass "$test" "^2\\s*"

set test "pgrep with : delimiter"
spawn $pgrep -d : $testproc_comm
expect_pass "$test" "^${testproc1_pid}:${testproc2_pid}\\s*$"

set test "pgrep match against full process name"
spawn $pgrep -f "$testproc_path\\s+$testproc_arg_str"
expect_pass "$test" "^$testproc1_pid\\s*$"

set test "pgrep with matching gid"
spawn $pgrep -G $gid $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"

set test "pgrep with not matching gid"
spawn $pgrep -G $not_gid $testproc_comm
expect_blank $test

set test "pgrep with process name"
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 -af "$testproc_path$"
expect_pass "$test" "^$testproc2_pid\\s+$testproc_path\\s*$"

set test "pgrep find newest test pid"
spawn $pgrep -n $testproc_comm
expect_pass "$test" "^$testproc2_pid\\s*$"

set test "pgrep find oldest test pid"
spawn $pgrep -o $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s*$"

set test "pgrep matches with parent pid"
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"
spawn $pgrep -P $not_ppid $testproc_comm
expect_blank "$test"

set test "pgrep matches with its own sid"
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"
spawn $pgrep -s $not_testproc1_sid $testproc_comm
expect_blank "$test"

set test "pgrep matches on tty"
if { $tty == "" } {
  untested "$test"
} else {
    spawn $pgrep -t $tty $testproc_comm
    expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
}

set test "pgrep doesn't match with bogus tty"
spawn $pgrep -t glass $testproc_comm
expect_blank "$test"

set test "pgrep with matching euid"
spawn $pgrep -u $uid $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"

set test "pgrep with not matching euid"
spawn $pgrep -u $not_uid $testproc_comm
expect_blank $test

set test "pgrep with matching uid"
spawn $pgrep -U $uid $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"

set test "pgrep with not matching uid"
spawn $pgrep -U $not_uid $testproc_comm
expect_blank $test

set test "pgrep matches on substring"
spawn $pgrep $testproc_trim
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"

set test "pgrep matches full string with exact"
spawn $pgrep -x $testproc_comm
expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"

set test "pgrep does not match substring with exact"
spawn $pgrep -x $testproc_trim
expect_blank $test

set test "pgrep with long non-matching pattern gives warning"
spawn $pgrep gnome-session-bi
expect_pass "$test" "pattern that searches for process name longer than 15 characters will result in zero matches"

# Cleanup
kill_testproc