Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make/unit-tests Avoid test failures when more than o...



details:   https://anonhg.NetBSD.org/src/rev/6ccf50dbf9ff
branches:  trunk
changeset: 980496:6ccf50dbf9ff
user:      sjg <sjg%NetBSD.org@localhost>
date:      Sat Feb 06 18:26:03 2021 +0000

description:
Avoid test failures when more than one user run them.

Use a private  TMPDIR
a subdir of .OBJDIR if using it
otherwise /tmp/uid${.MAKE.UID}

diffstat:

 usr.bin/make/unit-tests/Makefile            |  29 +++++++++++++++++++----------
 usr.bin/make/unit-tests/cmdline.exp         |   4 ++--
 usr.bin/make/unit-tests/cmdline.mk          |   4 ++--
 usr.bin/make/unit-tests/export.exp          |   1 +
 usr.bin/make/unit-tests/objdir-writable.exp |   6 +++---
 5 files changed, 27 insertions(+), 17 deletions(-)

diffs (129 lines):

diff -r a05c110925ab -r 6ccf50dbf9ff usr.bin/make/unit-tests/Makefile
--- a/usr.bin/make/unit-tests/Makefile  Sat Feb 06 16:14:55 2021 +0000
+++ b/usr.bin/make/unit-tests/Makefile  Sat Feb 06 18:26:03 2021 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.268 2021/02/04 00:16:03 rillig Exp $
+# $NetBSD: Makefile,v 1.269 2021/02/06 18:26:03 sjg Exp $
 #
 # Unit tests for make(1)
 #
@@ -31,6 +31,8 @@
 # src/tests/usr.bin/make/t_make.sh.
 #
 
+.MAIN: all
+
 # we use these below but we might be an older make
 .MAKE.OS?= ${uname -s:L:sh}
 .MAKE.UID?= ${id -u:L:sh}
@@ -441,16 +443,10 @@
 #      escape-for-item.mk
 #      posix-*.mk (see posix.mk and posix1.mk)
 
-.if ${.OBJDIR} != ${.CURDIR}
-RO_OBJDIR:=    ${.OBJDIR}/roobj
-.else
-RO_OBJDIR:=    ${TMPDIR:U/tmp}/roobj
-.endif
 # Additional environment variables for some of the tests.
 # The base environment is -i PATH="$PATH".
 ENV.depsrc-optional+=   TZ=UTC
 ENV.envfirst=          FROM_ENV=value-from-env
-ENV.objdir-writable+=  RO_OBJDIR=${RO_OBJDIR}
 ENV.varmisc=           FROM_ENV=env
 ENV.varmisc+=          FROM_ENV_BEFORE=env
 ENV.varmisc+=          FROM_ENV_AFTER=env
@@ -486,7 +482,6 @@
        ${:D marker should always be at the beginning of the line. } \
        -e '/^aa*--- job-b ---$$/d' \
        -e '/^bb*--- job-a ---$$/d'
-SED_CMDS.objdir-writable=      -e 's,${RO_OBJDIR},OBJDIR/roobj,g'
 SED_CMDS.opt-debug-graph1=     ${STD_SED_CMDS.dg1}
 SED_CMDS.opt-debug-graph2=     ${STD_SED_CMDS.dg2}
 SED_CMDS.opt-debug-graph3=     ${STD_SED_CMDS.dg3}
@@ -593,8 +588,6 @@
 
 # End of the configuration helpers section.
 
-.MAIN: all
-
 UNIT_TESTS:=   ${.PARSEDIR}
 .PATH: ${UNIT_TESTS}
 
@@ -623,7 +616,22 @@
 LANG=          C
 .export LANG LC_ALL
 
+
+# for many tests we need a TMPDIR that will not collide
+# with other users.
+.if ${.OBJDIR} != ${.CURDIR}
+# easy
+TMPDIR:=       ${.OBJDIR}/tmp
+.else
+TMPDIR:=       ${TMPDIR:U/tmp}/uid${.MAKE.UID}
+.endif
+# make sure it exists
+.if !exist(${TMPDIR})
+x!= echo; mkdir -p ${TMPDIR}
+.endif
+
 MAKE_TEST_ENV?=        MALLOC_OPTIONS="JA"     # for jemalloc
+MAKE_TEST_ENV+= TMPDIR=${TMPDIR}
 
 .if ${.MAKE.OS} == "NetBSD"
 LIMIT_RESOURCES?=      ulimit -v 200000
@@ -657,6 +665,7 @@
 _SED_CMDS+=    -e 's,^usage: ${TEST_MAKE:T:S,.,\\.,g} ,usage: make ,'
 # replace anything after 'stopped in' with unit-tests
 _SED_CMDS+=    -e '/stopped/s, /.*, unit-tests,'
+_SED_CMDS+=    -e 's,${TMPDIR},TMPDIR,g'
 # strip ${.CURDIR}/ from the output
 _SED_CMDS+=    -e 's,${.CURDIR:S,.,\\.,g}/,,g'
 _SED_CMDS+=    -e 's,${UNIT_TESTS:S,.,\\.,g}/,,g'
diff -r a05c110925ab -r 6ccf50dbf9ff usr.bin/make/unit-tests/cmdline.exp
--- a/usr.bin/make/unit-tests/cmdline.exp       Sat Feb 06 16:14:55 2021 +0000
+++ b/usr.bin/make/unit-tests/cmdline.exp       Sat Feb 06 18:26:03 2021 +0000
@@ -1,5 +1,5 @@
 makeobjdir-direct:
-show-objdir: /tmp/6a8899d2-d227-4b55-9b6b-f3c8eeb83fd5
+show-objdir: TMPDIR/6a8899d2-d227-4b55-9b6b-f3c8eeb83fd5
 makeobjdir-indirect:
-show-objdir: /tmp/a7b41170-53f8-4cc2-bc5c-e4c3dd93ec45/
+show-objdir: TMPDIR/a7b41170-53f8-4cc2-bc5c-e4c3dd93ec45/
 exit status 0
diff -r a05c110925ab -r 6ccf50dbf9ff usr.bin/make/unit-tests/cmdline.mk
--- a/usr.bin/make/unit-tests/cmdline.mk        Sat Feb 06 16:14:55 2021 +0000
+++ b/usr.bin/make/unit-tests/cmdline.mk        Sat Feb 06 18:26:03 2021 +0000
@@ -1,8 +1,8 @@
-# $NetBSD: cmdline.mk,v 1.2 2020/11/15 14:07:53 rillig Exp $
+# $NetBSD: cmdline.mk,v 1.3 2021/02/06 18:26:03 sjg Exp $
 #
 # Tests for command line parsing and related special variables.
 
-TMPBASE?=      /tmp
+TMPBASE?=      ${TMPDIR:U/tmp/uid${.MAKE.UID}}
 SUB1=          a7b41170-53f8-4cc2-bc5c-e4c3dd93ec45    # just a random UUID
 SUB2=          6a8899d2-d227-4b55-9b6b-f3c8eeb83fd5    # just a random UUID
 MAKE_CMD=      env TMPBASE=${TMPBASE}/${SUB1} ${.MAKE} -f ${MAKEFILE} -r
diff -r a05c110925ab -r 6ccf50dbf9ff usr.bin/make/unit-tests/export.exp
--- a/usr.bin/make/unit-tests/export.exp        Sat Feb 06 16:14:55 2021 +0000
+++ b/usr.bin/make/unit-tests/export.exp        Sat Feb 06 18:26:03 2021 +0000
@@ -1,4 +1,5 @@
 MAKELEVEL=1
+TMPDIR=TMPDIR
 UT_DOLLAR=This is $UT_FU
 UT_FOO=foobar is fubar
 UT_FU=fubar
diff -r a05c110925ab -r 6ccf50dbf9ff usr.bin/make/unit-tests/objdir-writable.exp
--- a/usr.bin/make/unit-tests/objdir-writable.exp       Sat Feb 06 16:14:55 2021 +0000
+++ b/usr.bin/make/unit-tests/objdir-writable.exp       Sat Feb 06 18:26:03 2021 +0000
@@ -1,5 +1,5 @@
-make warning: OBJDIR/roobj: Permission denied.
+make warning: TMPDIR/roobj: Permission denied.
 /tmp
-OBJDIR/roobj
-OBJDIR/roobj
+TMPDIR/roobj
+TMPDIR/roobj
 exit status 0



Home | Main Index | Thread Index | Old Index