1*ac6f924eSKyle Evans# 2*ac6f924eSKyle Evans# SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3*ac6f924eSKyle Evans# 4*ac6f924eSKyle Evans# Copyright (c) 2022 Klara Systems 5*ac6f924eSKyle Evans# 6*ac6f924eSKyle Evans# Redistribution and use in source and binary forms, with or without 7*ac6f924eSKyle Evans# modification, are permitted provided that the following conditions 8*ac6f924eSKyle Evans# are met: 9*ac6f924eSKyle Evans# 1. Redistributions of source code must retain the above copyright 10*ac6f924eSKyle Evans# notice, this list of conditions and the following disclaimer. 11*ac6f924eSKyle Evans# 2. Redistributions in binary form must reproduce the above copyright 12*ac6f924eSKyle Evans# notice, this list of conditions and the following disclaimer in the 13*ac6f924eSKyle Evans# documentation and/or other materials provided with the distribution. 14*ac6f924eSKyle Evans# 15*ac6f924eSKyle Evans# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16*ac6f924eSKyle Evans# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*ac6f924eSKyle Evans# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*ac6f924eSKyle Evans# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19*ac6f924eSKyle Evans# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20*ac6f924eSKyle Evans# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21*ac6f924eSKyle Evans# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22*ac6f924eSKyle Evans# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23*ac6f924eSKyle Evans# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24*ac6f924eSKyle Evans# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25*ac6f924eSKyle Evans# SUCH DAMAGE. 26*ac6f924eSKyle Evans# 27*ac6f924eSKyle Evans# $FreeBSD$ 28*ac6f924eSKyle Evans 29*ac6f924eSKyle Evansatf_test_case tmpdir_env 30*ac6f924eSKyle Evanstmpdir_env_body() 31*ac6f924eSKyle Evans{ 32*ac6f924eSKyle Evans 33*ac6f924eSKyle Evans tmpdir="$PWD" 34*ac6f924eSKyle Evans 35*ac6f924eSKyle Evans atf_check -o match:"^$tmpdir/foo\..+$" \ 36*ac6f924eSKyle Evans env TMPDIR="$tmpdir" mktemp -t foo 37*ac6f924eSKyle Evans} 38*ac6f924eSKyle Evans 39*ac6f924eSKyle Evansatf_test_case tmpdir_pflag 40*ac6f924eSKyle Evanstmpdir_pflag_body() 41*ac6f924eSKyle Evans{ 42*ac6f924eSKyle Evans 43*ac6f924eSKyle Evans mkdir tmp_p tmp_env 44*ac6f924eSKyle Evans 45*ac6f924eSKyle Evans tmpdir="$PWD/tmp_env" 46*ac6f924eSKyle Evans export TMPDIR="$tmpdir" 47*ac6f924eSKyle Evans 48*ac6f924eSKyle Evans pflag="$PWD/tmp_p" 49*ac6f924eSKyle Evans 50*ac6f924eSKyle Evans # Basic usage: just -p specified 51*ac6f924eSKyle Evans atf_check -o match:"^$pflag/tmp\..+$" \ 52*ac6f924eSKyle Evans env -u TMPDIR mktemp -p "$pflag" 53*ac6f924eSKyle Evans atf_check -o match:"^$pflag/tmp\..+$" \ 54*ac6f924eSKyle Evans env TMPDIR="$tmpdir" mktemp -p "$pflag" 55*ac6f924eSKyle Evans 56*ac6f924eSKyle Evans # -p with a list of names 57*ac6f924eSKyle Evans atf_check -o ignore env -u TMPDIR mktemp -p "$pflag" x y z 58*ac6f924eSKyle Evans atf_check test -f "$pflag/x" 59*ac6f924eSKyle Evans atf_check test -f "$pflag/y" 60*ac6f924eSKyle Evans atf_check test -f "$pflag/z" 61*ac6f924eSKyle Evans 62*ac6f924eSKyle Evans # Checking --tmpdir usage, which should defer to $TMPDIR followed by 63*ac6f924eSKyle Evans # /tmp with no value specified. 64*ac6f924eSKyle Evans atf_check -o match:"^/tmp/foo\..+$" \ 65*ac6f924eSKyle Evans env -u TMPDIR mktemp --tmpdir -t foo 66*ac6f924eSKyle Evans atf_check -o match:"^$tmpdir/foo\..+$" \ 67*ac6f924eSKyle Evans env TMPDIR="$tmpdir" mktemp --tmpdir -t foo 68*ac6f924eSKyle Evans 69*ac6f924eSKyle Evans # Finally, combined -p -t 70*ac6f924eSKyle Evans atf_check -o match:"^$pflag/foo\..+$" \ 71*ac6f924eSKyle Evans env -u TMPDIR mktemp -p "$pflag" -t foo 72*ac6f924eSKyle Evans atf_check -o match:"^$tmpdir/foo\..+$" \ 73*ac6f924eSKyle Evans env TMPDIR="$tmpdir" mktemp -p "$pflag" -t foo 74*ac6f924eSKyle Evans} 75*ac6f924eSKyle Evans 76*ac6f924eSKyle Evansatf_test_case tmpdir_pflag_dir 77*ac6f924eSKyle Evanstmpdir_pflag_dir_body() 78*ac6f924eSKyle Evans{ 79*ac6f924eSKyle Evans 80*ac6f924eSKyle Evans tmpdir="$PWD" 81*ac6f924eSKyle Evans atf_check -o save:tmpname \ 82*ac6f924eSKyle Evans env -u TMPDIR mktemp -d -p "$tmpdir" -t foo 83*ac6f924eSKyle Evans 84*ac6f924eSKyle Evans # Better diagnostics when using -o match: + cat rather than grep. 85*ac6f924eSKyle Evans atf_check -o match:"^$tmpdir/foo\..+$" cat tmpname 86*ac6f924eSKyle Evans cdir=$(cat tmpname) 87*ac6f924eSKyle Evans 88*ac6f924eSKyle Evans atf_check test -d "$cdir" 89*ac6f924eSKyle Evans 90*ac6f924eSKyle Evans atf_check -o match:"^$tmpdir/footmp$" \ 91*ac6f924eSKyle Evans env -u TMPDIR mktemp -d -p "$tmpdir" footmp 92*ac6f924eSKyle Evans atf_check test -d "$tmpdir/footmp" 93*ac6f924eSKyle Evans} 94*ac6f924eSKyle Evans 95*ac6f924eSKyle Evansatf_test_case tmpdir_pflag_noarg 96*ac6f924eSKyle Evanstmpdir_pflag_noarg_body() 97*ac6f924eSKyle Evans{ 98*ac6f924eSKyle Evans 99*ac6f924eSKyle Evans # Without -t, this time; this introduces $TMPDIR without having to use 100*ac6f924eSKyle Evans # it. 101*ac6f924eSKyle Evans tmpdir="$PWD" 102*ac6f924eSKyle Evans atf_check -o save:tmpname \ 103*ac6f924eSKyle Evans env TMPDIR="$tmpdir" mktemp --tmpdir foo.XXXXXXXX 104*ac6f924eSKyle Evans atf_check -o match:"^$tmpdir/foo\..+$" cat tmpname 105*ac6f924eSKyle Evans 106*ac6f924eSKyle Evans # An empty string gets the same treatment. 107*ac6f924eSKyle Evans atf_check -o save:tmpname \ 108*ac6f924eSKyle Evans env TMPDIR="$tmpdir" mktemp -p '' foo.XXXXXXXX 109*ac6f924eSKyle Evans atf_check -o match:"^$tmpdir/foo\..+$" cat tmpname 110*ac6f924eSKyle Evans} 111*ac6f924eSKyle Evans 112*ac6f924eSKyle Evansatf_init_test_cases() 113*ac6f924eSKyle Evans{ 114*ac6f924eSKyle Evans atf_add_test_case tmpdir_env 115*ac6f924eSKyle Evans atf_add_test_case tmpdir_pflag 116*ac6f924eSKyle Evans atf_add_test_case tmpdir_pflag_dir 117*ac6f924eSKyle Evans atf_add_test_case tmpdir_pflag_noarg 118*ac6f924eSKyle Evans} 119