test: test_must_be_empty helper

There are quite a lot places where an output file is expected to be
empty, and we fail the test when it is not.  The output from running
the test script with -i -v can be helped if we showed the unexpected
contents at that point.

We could of course do

    >expected.empty && test_cmp expected.empty actual

but this is commmon enough to be done with a dedicated helper.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2013-06-09 11:29:20 -07:00
parent b1d04bfcf8
commit ca8d148daf
9 changed files with 65 additions and 53 deletions

View file

@ -50,7 +50,7 @@ EOF
test_expect_success 'test help' ' test_expect_success 'test help' '
test_must_fail test-parse-options -h > output 2> output.err && test_must_fail test-parse-options -h > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_i18ncmp expect output test_i18ncmp expect output
' '
@ -75,7 +75,7 @@ check() {
shift && shift &&
sed "s/^$what .*/$what $expect/" <expect.template >expect && sed "s/^$what .*/$what $expect/" <expect.template >expect &&
test-parse-options $* >output 2>output.err && test-parse-options $* >output 2>output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
} }
@ -86,7 +86,7 @@ check_i18n() {
shift && shift &&
sed "s/^$what .*/$what $expect/" <expect.template >expect && sed "s/^$what .*/$what $expect/" <expect.template >expect &&
test-parse-options $* >output 2>output.err && test-parse-options $* >output 2>output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_i18ncmp expect output test_i18ncmp expect output
} }
@ -99,7 +99,7 @@ check_unknown() {
esac && esac &&
cat expect.err >>expect && cat expect.err >>expect &&
test_must_fail test-parse-options $* >output 2>output.err && test_must_fail test-parse-options $* >output 2>output.err &&
test ! -s output && test_must_be_empty output &&
test_cmp expect output.err test_cmp expect output.err
} }
@ -112,7 +112,7 @@ check_unknown_i18n() {
esac && esac &&
cat expect.err >>expect && cat expect.err >>expect &&
test_must_fail test-parse-options $* >output 2>output.err && test_must_fail test-parse-options $* >output 2>output.err &&
test ! -s output && test_must_be_empty output &&
test_i18ncmp expect output.err test_i18ncmp expect output.err
} }
@ -149,7 +149,7 @@ test_expect_success 'short options' '
test-parse-options -s123 -b -i 1729 -b -vv -n -F my.file \ test-parse-options -s123 -b -i 1729 -b -vv -n -F my.file \
> output 2> output.err && > output 2> output.err &&
test_cmp expect output && test_cmp expect output &&
test ! -s output.err test_must_be_empty output.err
' '
cat > expect << EOF cat > expect << EOF
@ -168,7 +168,7 @@ test_expect_success 'long options' '
test-parse-options --boolean --integer 1729 --boolean --string2=321 \ test-parse-options --boolean --integer 1729 --boolean --string2=321 \
--verbose --verbose --no-dry-run --abbrev=10 --file fi.le\ --verbose --verbose --no-dry-run --abbrev=10 --file fi.le\
--obsolete > output 2> output.err && --obsolete > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -199,7 +199,7 @@ EOF
test_expect_success 'intermingled arguments' ' test_expect_success 'intermingled arguments' '
test-parse-options a1 --string 123 b1 --boolean -j 13 -- --boolean \ test-parse-options a1 --string 123 b1 --boolean -j 13 -- --boolean \
> output 2> output.err && > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -217,13 +217,13 @@ EOF
test_expect_success 'unambiguously abbreviated option' ' test_expect_success 'unambiguously abbreviated option' '
test-parse-options --int 2 --boolean --no-bo > output 2> output.err && test-parse-options --int 2 --boolean --no-bo > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
test_expect_success 'unambiguously abbreviated option with "="' ' test_expect_success 'unambiguously abbreviated option with "="' '
test-parse-options --int=2 > output 2> output.err && test-parse-options --int=2 > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -246,7 +246,7 @@ EOF
test_expect_success 'non ambiguous option (after two options it abbreviates)' ' test_expect_success 'non ambiguous option (after two options it abbreviates)' '
test-parse-options --st 123 > output 2> output.err && test-parse-options --st 123 > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -256,7 +256,7 @@ EOF
test_expect_success 'detect possible typos' ' test_expect_success 'detect possible typos' '
test_must_fail test-parse-options -boolean > output 2> output.err && test_must_fail test-parse-options -boolean > output 2> output.err &&
test ! -s output && test_must_be_empty output &&
test_cmp typo.err output.err test_cmp typo.err output.err
' '
@ -266,7 +266,7 @@ EOF
test_expect_success 'detect possible typos' ' test_expect_success 'detect possible typos' '
test_must_fail test-parse-options -ambiguous > output 2> output.err && test_must_fail test-parse-options -ambiguous > output 2> output.err &&
test ! -s output && test_must_be_empty output &&
test_cmp typo.err output.err test_cmp typo.err output.err
' '
@ -285,7 +285,7 @@ EOF
test_expect_success 'keep some options as arguments' ' test_expect_success 'keep some options as arguments' '
test-parse-options --quux > output 2> output.err && test-parse-options --quux > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -305,7 +305,7 @@ EOF
test_expect_success 'OPT_DATE() and OPT_SET_PTR() work' ' test_expect_success 'OPT_DATE() and OPT_SET_PTR() work' '
test-parse-options -t "1970-01-01 00:00:01 +0000" --default-string \ test-parse-options -t "1970-01-01 00:00:01 +0000" --default-string \
foo -q > output 2> output.err && foo -q > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -324,7 +324,7 @@ EOF
test_expect_success 'OPT_CALLBACK() and OPT_BIT() work' ' test_expect_success 'OPT_CALLBACK() and OPT_BIT() work' '
test-parse-options --length=four -b -4 > output 2> output.err && test-parse-options --length=four -b -4 > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -352,13 +352,13 @@ EOF
test_expect_success 'OPT_BIT() and OPT_SET_INT() work' ' test_expect_success 'OPT_BIT() and OPT_SET_INT() work' '
test-parse-options --set23 -bbbbb --no-or4 > output 2> output.err && test-parse-options --set23 -bbbbb --no-or4 > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
test_expect_success 'OPT_NEGBIT() and OPT_SET_INT() work' ' test_expect_success 'OPT_NEGBIT() and OPT_SET_INT() work' '
test-parse-options --set23 -bbbbb --neg-or4 > output 2> output.err && test-parse-options --set23 -bbbbb --neg-or4 > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -376,19 +376,19 @@ EOF
test_expect_success 'OPT_BIT() works' ' test_expect_success 'OPT_BIT() works' '
test-parse-options -bb --or4 > output 2> output.err && test-parse-options -bb --or4 > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
test_expect_success 'OPT_NEGBIT() works' ' test_expect_success 'OPT_NEGBIT() works' '
test-parse-options -bb --no-neg-or4 > output 2> output.err && test-parse-options -bb --no-neg-or4 > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
test_expect_success 'OPT_COUNTUP() with PARSE_OPT_NODASH works' ' test_expect_success 'OPT_COUNTUP() with PARSE_OPT_NODASH works' '
test-parse-options + + + + + + > output 2> output.err && test-parse-options + + + + + + > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -406,7 +406,7 @@ EOF
test_expect_success 'OPT_NUMBER_CALLBACK() works' ' test_expect_success 'OPT_NUMBER_CALLBACK() works' '
test-parse-options -12345 > output 2> output.err && test-parse-options -12345 > output 2> output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '
@ -424,7 +424,7 @@ EOF
test_expect_success 'negation of OPT_NONEG flags is not ambiguous' ' test_expect_success 'negation of OPT_NONEG flags is not ambiguous' '
test-parse-options --no-ambig >output 2>output.err && test-parse-options --no-ambig >output 2>output.err &&
test ! -s output.err && test_must_be_empty output.err &&
test_cmp expect output test_cmp expect output
' '

View file

@ -179,7 +179,7 @@ test_expect_success 'default to @{upstream} when upstream arg is missing' '
test_expect_success 'rebase -q is quiet' ' test_expect_success 'rebase -q is quiet' '
git checkout -b quiet topic && git checkout -b quiet topic &&
git rebase -q master >output.out 2>&1 && git rebase -q master >output.out 2>&1 &&
test ! -s output.out test_must_be_empty output.out
' '
test_expect_success 'Rebase a commit that sprinkles CRs in' ' test_expect_success 'Rebase a commit that sprinkles CRs in' '

View file

@ -200,17 +200,17 @@ test_expect_success 'apply -q is quiet' '
echo foo > file && echo foo > file &&
git stash && git stash &&
git stash apply -q > output.out 2>&1 && git stash apply -q > output.out 2>&1 &&
test ! -s output.out test_must_be_empty output.out
' '
test_expect_success 'save -q is quiet' ' test_expect_success 'save -q is quiet' '
git stash save --quiet > output.out 2>&1 && git stash save --quiet > output.out 2>&1 &&
test ! -s output.out test_must_be_empty output.out
' '
test_expect_success 'pop -q is quiet' ' test_expect_success 'pop -q is quiet' '
git stash pop -q > output.out 2>&1 && git stash pop -q > output.out 2>&1 &&
test ! -s output.out test_must_be_empty output.out
' '
test_expect_success 'pop -q --index works and is quiet' ' test_expect_success 'pop -q --index works and is quiet' '
@ -219,13 +219,13 @@ test_expect_success 'pop -q --index works and is quiet' '
git stash save --quiet && git stash save --quiet &&
git stash pop -q --index > output.out 2>&1 && git stash pop -q --index > output.out 2>&1 &&
test foo = "$(git show :file)" && test foo = "$(git show :file)" &&
test ! -s output.out test_must_be_empty output.out
' '
test_expect_success 'drop -q is quiet' ' test_expect_success 'drop -q is quiet' '
git stash && git stash &&
git stash drop -q > output.out 2>&1 && git stash drop -q > output.out 2>&1 &&
test ! -s output.out test_must_be_empty output.out
' '
test_expect_success 'stash -k' ' test_expect_success 'stash -k' '

View file

@ -15,19 +15,19 @@ test_expect_success 'git pull -q' '
mkdir clonedq && mkdir clonedq &&
(cd clonedq && git init && (cd clonedq && git init &&
git pull -q "../parent" >out 2>err && git pull -q "../parent" >out 2>err &&
test ! -s err && test_must_be_empty err &&
test ! -s out) test_must_be_empty out)
' '
test_expect_success 'git pull -q --rebase' ' test_expect_success 'git pull -q --rebase' '
mkdir clonedqrb && mkdir clonedqrb &&
(cd clonedqrb && git init && (cd clonedqrb && git init &&
git pull -q --rebase "../parent" >out 2>err && git pull -q --rebase "../parent" >out 2>err &&
test ! -s err && test_must_be_empty err &&
test ! -s out && test_must_be_empty out &&
git pull -q --rebase "../parent" >out 2>err && git pull -q --rebase "../parent" >out 2>err &&
test ! -s err && test_must_be_empty err &&
test ! -s out) test_must_be_empty out)
' '
test_expect_success 'git pull' ' test_expect_success 'git pull' '
@ -35,7 +35,7 @@ test_expect_success 'git pull' '
(cd cloned && git init && (cd cloned && git init &&
git pull "../parent" >out 2>err && git pull "../parent" >out 2>err &&
test -s err && test -s err &&
test ! -s out) test_must_be_empty out)
' '
test_expect_success 'git pull --rebase' ' test_expect_success 'git pull --rebase' '
@ -43,7 +43,7 @@ test_expect_success 'git pull --rebase' '
(cd clonedrb && git init && (cd clonedrb && git init &&
git pull --rebase "../parent" >out 2>err && git pull --rebase "../parent" >out 2>err &&
test -s err && test -s err &&
test ! -s out) test_must_be_empty out)
' '
test_expect_success 'git pull -v' ' test_expect_success 'git pull -v' '
@ -51,7 +51,7 @@ test_expect_success 'git pull -v' '
(cd clonedv && git init && (cd clonedv && git init &&
git pull -v "../parent" >out 2>err && git pull -v "../parent" >out 2>err &&
test -s err && test -s err &&
test ! -s out) test_must_be_empty out)
' '
test_expect_success 'git pull -v --rebase' ' test_expect_success 'git pull -v --rebase' '
@ -59,22 +59,22 @@ test_expect_success 'git pull -v --rebase' '
(cd clonedvrb && git init && (cd clonedvrb && git init &&
git pull -v --rebase "../parent" >out 2>err && git pull -v --rebase "../parent" >out 2>err &&
test -s err && test -s err &&
test ! -s out) test_must_be_empty out)
' '
test_expect_success 'git pull -v -q' ' test_expect_success 'git pull -v -q' '
mkdir clonedvq && mkdir clonedvq &&
(cd clonedvq && git init && (cd clonedvq && git init &&
git pull -v -q "../parent" >out 2>err && git pull -v -q "../parent" >out 2>err &&
test ! -s out && test_must_be_empty out &&
test ! -s err) test_must_be_empty err)
' '
test_expect_success 'git pull -q -v' ' test_expect_success 'git pull -q -v' '
mkdir clonedqv && mkdir clonedqv &&
(cd clonedqv && git init && (cd clonedqv && git init &&
git pull -q -v "../parent" >out 2>err && git pull -q -v "../parent" >out 2>err &&
test ! -s out && test_must_be_empty out &&
test -s err) test -s err)
' '

View file

@ -22,7 +22,7 @@ test_expect_success 'clone -o' '
test_expect_success 'redirected clone' ' test_expect_success 'redirected clone' '
git clone "file://$(pwd)/parent" clone-redirected >out 2>err && git clone "file://$(pwd)/parent" clone-redirected >out 2>err &&
test ! -s err test_must_be_empty err
' '
test_expect_success 'redirected clone -v' ' test_expect_success 'redirected clone -v' '

View file

@ -457,7 +457,7 @@ test_expect_success 'disambiguation (1)' '
test_must_fail git diff --quiet -- secondfile && test_must_fail git diff --quiet -- secondfile &&
test -z "$(git diff --cached --name-only)" && test -z "$(git diff --cached --name-only)" &&
test -f secondfile && test -f secondfile &&
test ! -s secondfile test_must_be_empty secondfile
' '

View file

@ -78,7 +78,7 @@ test_expect_success 'submodule add' '
( (
cd addtest && cd addtest &&
git submodule add -q "$submodurl" submod >actual && git submodule add -q "$submodurl" submod >actual &&
test ! -s actual && test_must_be_empty actual &&
echo "gitdir: ../.git/modules/submod" >expect && echo "gitdir: ../.git/modules/submod" >expect &&
test_cmp expect submod/.git && test_cmp expect submod/.git &&
( (
@ -308,7 +308,7 @@ test_expect_success 'update should work when path is an empty dir' '
mkdir init && mkdir init &&
git submodule update -q >update.out && git submodule update -q >update.out &&
test ! -s update.out && test_must_be_empty update.out &&
inspect init && inspect init &&
test_cmp expect head-sha1 test_cmp expect head-sha1
@ -696,7 +696,7 @@ test_expect_success 'submodule add --name allows to replace a submodule with ano
rm -rf repo && rm -rf repo &&
git rm repo && git rm repo &&
git submodule add -q --name repo_new "$submodurl/bare.git" repo >actual && git submodule add -q --name repo_new "$submodurl/bare.git" repo >actual &&
test ! -s actual && test_must_be_empty actual &&
echo "gitdir: ../.git/modules/submod" >expect && echo "gitdir: ../.git/modules/submod" >expect &&
test_cmp expect submod/.git && test_cmp expect submod/.git &&
( (

View file

@ -330,7 +330,7 @@ test_expect_success 'validate result of edits [cvswork2]' '
test_expect_success 'validate basic diffs saved during above cvswork2 edits' ' test_expect_success 'validate basic diffs saved during above cvswork2 edits' '
test $(grep Index: cvsEdit1.diff | wc -l) = 1 && test $(grep Index: cvsEdit1.diff | wc -l) = 1 &&
test ! -s cvsEdit2-empty.diff && test_must_be_empty cvsEdit2-empty.diff &&
test $(grep Index: cvsEdit2-N.diff | wc -l) = 1 && test $(grep Index: cvsEdit2-N.diff | wc -l) = 1 &&
test $(grep Index: cvsEdit3.diff | wc -l) = 3 && test $(grep Index: cvsEdit3.diff | wc -l) = 3 &&
rm -rf diffSandbox && rm -rf diffSandbox &&
@ -456,20 +456,20 @@ test_expect_success 'cvs up -r $(git rev-parse v1)' '
test_expect_success 'cvs diff -r v1 -u' ' test_expect_success 'cvs diff -r v1 -u' '
( cd cvswork && cvs -f diff -r v1 -u ) >cvsDiff.out 2>cvs.log && ( cd cvswork && cvs -f diff -r v1 -u ) >cvsDiff.out 2>cvs.log &&
test ! -s cvsDiff.out && test_must_be_empty cvsDiff.out &&
test ! -s cvs.log test_must_be_empty cvs.log
' '
test_expect_success 'cvs diff -N -r v2 -u' ' test_expect_success 'cvs diff -N -r v2 -u' '
( cd cvswork && ! cvs -f diff -N -r v2 -u ) >cvsDiff.out 2>cvs.log && ( cd cvswork && ! cvs -f diff -N -r v2 -u ) >cvsDiff.out 2>cvs.log &&
test ! -s cvs.log && test_must_be_empty cvs.log &&
test -s cvsDiff.out && test -s cvsDiff.out &&
check_diff cvsDiff.out v2 v1 >check_diff.out 2>&1 check_diff cvsDiff.out v2 v1 >check_diff.out 2>&1
' '
test_expect_success 'cvs diff -N -r v2 -r v1.2' ' test_expect_success 'cvs diff -N -r v2 -r v1.2' '
( cd cvswork && ! cvs -f diff -N -r v2 -r v1.2 -u ) >cvsDiff.out 2>cvs.log && ( cd cvswork && ! cvs -f diff -N -r v2 -r v1.2 -u ) >cvsDiff.out 2>cvs.log &&
test ! -s cvs.log && test_must_be_empty cvs.log &&
test -s cvsDiff.out && test -s cvsDiff.out &&
check_diff cvsDiff.out v2 v1.2 >check_diff.out 2>&1 check_diff cvsDiff.out v2 v1.2 >check_diff.out 2>&1
' '
@ -488,7 +488,7 @@ test_expect_success 'apply early [cvswork3] diff to b3' '
test_expect_success 'check [cvswork3] diff' ' test_expect_success 'check [cvswork3] diff' '
( cd cvswork3 && ! cvs -f diff -N -u ) >"$WORKDIR/cvsDiff.out" 2>cvs.log && ( cd cvswork3 && ! cvs -f diff -N -u ) >"$WORKDIR/cvsDiff.out" 2>cvs.log &&
test ! -s cvs.log && test_must_be_empty cvs.log &&
test -s cvsDiff.out && test -s cvsDiff.out &&
test $(grep Index: cvsDiff.out | wc -l) = 3 && test $(grep Index: cvsDiff.out | wc -l) = 3 &&
test_cmp cvsDiff.out cvswork3edit.diff && test_cmp cvsDiff.out cvswork3edit.diff &&

View file

@ -606,6 +606,18 @@ test_cmp() {
$GIT_TEST_CMP "$@" $GIT_TEST_CMP "$@"
} }
# Check if the file expected to be empty is indeed empty, and barfs
# otherwise.
test_must_be_empty () {
if test -s "$1"
then
echo "'$1' is not empty, it contains:"
cat "$1"
return 1
fi
}
# Tests that its two parameters refer to the same revision # Tests that its two parameters refer to the same revision
test_cmp_rev () { test_cmp_rev () {
git rev-parse --verify "$1" >expect.rev && git rev-parse --verify "$1" >expect.rev &&