PR bin/50934

Add a test program for the bug described in this PR.
This is the first pkill/pgrep/prenice test (more would be good!)

This test has been confirmed to work once the bug described in the PR
has been fixed, so the test is not marked "expected to fail" even
though initially that is what should happen.

Note: the test cana also fail if the system running the tests happens
to be running processes with names that match the patterns searched for
by the test, other than the test program itself.  This is expected to be
unlikely.
This commit is contained in:
kre 2017-02-21 10:40:30 +00:00
parent 535ea0f76d
commit 67cef682dd
5 changed files with 93 additions and 5 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: mi,v 1.722 2017/02/20 03:14:42 kamil Exp $
# $NetBSD: mi,v 1.723 2017/02/21 10:40:30 kre Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@ -3812,6 +3812,10 @@
./usr/tests/usr.bin/netpgpverify/Atffile tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/netpgpverify/Kyuafile tests-usr.bin-tests compattestfile,atf,kyua
./usr/tests/usr.bin/netpgpverify/t_netpgpverify tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/pkill tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/pkill/Atffile tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/pkill/Kyuafile tests-usr.bin-tests compattestfile,atf,kyua
./usr/tests/usr.bin/pkill/t_pgrep tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/pr tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/pr/Atffile tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/pr/Kyuafile tests-usr.bin-tests compattestfile,atf,kyua

View File

@ -1,4 +1,4 @@
# $NetBSD: NetBSD.dist.tests,v 1.141 2017/02/20 03:14:42 kamil Exp $
# $NetBSD: NetBSD.dist.tests,v 1.142 2017/02/21 10:40:30 kre Exp $
./usr/libdata/debug/usr/tests
./usr/libdata/debug/usr/tests/atf
@ -407,6 +407,7 @@
./usr/tests/usr.bin/mixerctl
./usr/tests/usr.bin/mkdep
./usr/tests/usr.bin/nbperf
./usr/tests/usr.bin/pkill
./usr/tests/usr.bin/pr
./usr/tests/usr.bin/rump_server
./usr/tests/usr.bin/sdiff

View File

@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.23 2017/01/02 15:40:09 christos Exp $
# $NetBSD: Makefile,v 1.24 2017/02/21 10:40:30 kre Exp $
#
.include <bsd.own.mk>
@ -7,8 +7,8 @@ TESTSDIR= ${TESTSBASE}/usr.bin
TESTS_SUBDIRS= awk basename bzip2 cc cmp config cut \
diff dirname find gdb grep gzip id \
infocmp jot ld m4 make mixerctl mkdep \
nbperf netpgpverify pr rump_server shmif_dumpbus sdiff \
infocmp jot ld m4 make mixerctl mkdep nbperf netpgpverify \
pkill pr rump_server shmif_dumpbus sdiff \
sed sort tmux tr unifdef uniq vmstat xlint
.include <bsd.test.mk>

View File

@ -0,0 +1,8 @@
# $NetBSD: Makefile,v 1.1 2017/02/21 10:40:30 kre Exp $
.include <bsd.own.mk>
TESTSDIR= ${TESTSBASE}/usr.bin/pkill
TESTS_SH= t_pgrep
.include <bsd.test.mk>

View File

@ -0,0 +1,75 @@
# $NetBSD: t_pgrep.sh,v 1.1 2017/02/21 10:40:30 kre Exp $
#
# Copyright (c) 2016 The NetBSD Foundation, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
atf_test_case pr50934
basic_shift_test_head() {
atf_set "descr" "Test fix for PR bin/50934 (null argv[0])"
}
pr50934_body() {
atf_require_prog pgrep
atf_require_prog cc
cat > t.c <<'!'
#include <stdlib.h>
int
#include <unistd.h>
main(int argc, char **argv)
{
sleep(2);
argv[0] = 0;
pause();
exit(0);
}
!
cc -o t0123456789abcdefg-beef t.c || atf_fail "t.c compile failed"
./t0123456789abcdefg-beef &
PID=$!
pgrep -l t0123456 >OUT ; # should find the process
pgrep -l beef >>OUT ; # should find the process
sleep 5 ; # allow time for sleep in t.c and argv[0]=0
pgrep -l t0123456 >>OUT ; # should find the process
pgrep -l beef >>OUT ; # should find nothing
kill -9 $PID
cat OUT ; # just for the log
# note that pgrep -l only ever prints p_comm which is of limited sicze
atf_check_equal "$(cat OUT)" \
"$PID t0123456789abcde $PID t0123456789abcde $PID t0123456789abcde"
return 0
}
atf_init_test_cases() {
atf_add_test_case pr50934
}