du: tests: make H_flag tests more strict about output requirements

The current version of this test will effectively pass as long as one of the
specified paths is in the output, and it could even be a subset of one of
the paths.

Strengthen up the test a little bit:
  * Specify beginning/end anchors for each path
  * Add egrep -v checks to make sure we don't have any *additional* paths
  * Ratchet down paths2 to exactly the two paths we expect to appear

Reviewed by:	ngie
Differential Revision:	https://reviews.freebsd.org/D27984
This commit is contained in:
Kyle Evans 2021-01-05 15:49:46 -06:00
parent 4832d2e8ae
commit 3c5c39c7ad

View File

@ -45,17 +45,25 @@ H_flag_head()
H_flag_body()
{
local paths1='testdir/A/B testdir/A testdir/C testdir'
local paths2='testdir/A/B testdir/A testdir/C testdir'
local paths2='testdir/C/B testdir/C'
local lineprefix="^[0-9]+$(printf "\t")"
local sep="\n${lineprefix}"
local sep="\$\n${lineprefix}"
atf_check mkdir testdir
atf_check -x "cd testdir && mkdir A && touch A/B && ln -s A C"
atf_check -o save:du.out du -aAH testdir
atf_check egrep -q "${lineprefix}$(echo $paths1 | sed -e "s/ /$sep/g")" du.out
atf_check egrep -q "${lineprefix}$(echo $paths1 | sed -e "s/ /$sep/g")$" du.out
# Check that the output doesn't contain any lines (i.e. paths) that we
# did not expect it to contain from $paths1.
atf_check -s exit:1 egrep -vq "${lineprefix}$(echo $paths1 | sed -e "s/ /$sep/g")$" du.out
atf_check -o save:du_C.out du -aAH testdir/C
atf_check egrep -q "${lineprefix}$(echo $paths2 | sed -e "s/ /$sep/g")" du_C.out
atf_check egrep -q "${lineprefix}$(echo $paths2 | sed -e "s/ /$sep/g")$" du_C.out
# Check that the output doesn't contain any lines (i.e. paths) that we
# did not expect it to contain from $paths2.
atf_check -s exit:1 egrep -vq "${lineprefix}$(echo $paths2 | sed -e "s/ /$sep/g")$" du_C.out
}
atf_test_case I_flag