From: Junio C Hamano <gitster@pobox.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Mike Hommey <mh@glandium.org>, git@vger.kernel.org, gitster@pobox.com
Subject: Re: [PATCH] t6024-recursive-merge.sh: hide spurious output when not running verbosely
Date: Fri, 29 Feb 2008 15:50:03 -0800 [thread overview]
Message-ID: <7v1w6vb9w4.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <alpine.LSU.1.00.0802292334040.22527@racer.site> (Johannes Schindelin's message of "Fri, 29 Feb 2008 23:34:41 +0000 (GMT)")
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> Hi,
>
> On Fri, 29 Feb 2008, Mike Hommey wrote:
>
>> diff --git a/t/t6024-recursive-merge.sh b/t/t6024-recursive-merge.sh
>> index 149ea85..43b5f15 100755
>> --- a/t/t6024-recursive-merge.sh
>> +++ b/t/t6024-recursive-merge.sh
>> @@ -81,7 +81,7 @@ EOF
>>
>> test_expect_success "virtual trees were processed" "git diff expect out"
>>
>> -git reset --hard
>> +git reset --hard >&3 2>&4
>> test_expect_success 'refuse to merge binary files' '
>
> Would it not be _much_ more sensible to pull that command _into_ the
> test_expect_success?
Actually, I think this might be a bit more sensible approach.
-- >8 --
tests: allow optional clean-up phrase to expect_success/failure
When one test modifies the state of the test repository that the later
tests may depend on, you may want to add a clean-up action that is run
regardless of the outcome of the main part of the test.
This can now be specified as the third parameter to test_expect_success
and test_expect_failure functions.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
t/README | 13 +++++++++++--
t/t6024-recursive-merge.sh | 5 +++--
t/test-lib.sh | 32 ++++++++++++++++++++++++--------
3 files changed, 38 insertions(+), 12 deletions(-)
diff --git a/t/README b/t/README
index 73ed11b..de79c00 100644
--- a/t/README
+++ b/t/README
@@ -146,7 +146,7 @@ Test harness library
There are a handful helper functions defined in the test harness
library for your script to use.
- - test_expect_success <message> <script>
+ - test_expect_success <message> <script> [<cleanup>]
This takes two strings as parameter, and evaluates the
<script>. If it yields success, test is considered
@@ -158,7 +158,12 @@ library for your script to use.
'git-write-tree should be able to write an empty tree.' \
'tree=$(git-write-tree)'
- - test_expect_failure <message> <script>
+ An optional <cleanup> is executed and can be used to clean-up
+ the state this test modifies (or leaves half-modified when it
+ fails). The clean-up script is not run if test fails and the
+ test script is run under --immediate mode to help postmortem.
+
+ - test_expect_failure <message> <script> [<cleanup>]
This is NOT the opposite of test_expect_success, but is used
to mark a test that demonstrates a known breakage. Unlike
@@ -167,6 +172,10 @@ library for your script to use.
success and "still broken" on failure. Failures from these
tests won't cause -i (immediate) to stop.
+ An optional <cleanup> is executed and can be used to clean-up
+ the state this test modifies (or leaves half-modified when it
+ fails).
+
- test_debug <script>
This takes a single argument, <script>, and evaluates it only
diff --git a/t/t6024-recursive-merge.sh b/t/t6024-recursive-merge.sh
index 149ea85..ae9706f 100755
--- a/t/t6024-recursive-merge.sh
+++ b/t/t6024-recursive-merge.sh
@@ -79,9 +79,10 @@ cat > expect << EOF
100644 fd7923529855d0b274795ae3349c5e0438333979 3 a1
EOF
-test_expect_success "virtual trees were processed" "git diff expect out"
+test_expect_success "virtual trees were processed" "
+ git diff expect out
+" 'git reset --hard'
-git reset --hard
test_expect_success 'refuse to merge binary files' '
printf "\0" > binary-file &&
git add binary-file &&
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 68efda4..0fb2c98 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -220,9 +220,13 @@ test_skip () {
}
test_expect_failure () {
- test "$#" = 2 ||
- error "bug in the test script: not 2 parameters to test-expect-failure"
- if ! test_skip "$@"
+ case $# in
+ 2) ;; # traditional
+ 3) ;; # with clean-up
+ *)
+ error "bug in the test script" ;;
+ esac
+ if ! test_skip "$1" "$2"
then
say >&3 "checking known breakage: $2"
test_run_ "$2"
@@ -230,16 +234,24 @@ test_expect_failure () {
then
test_known_broken_ok_ "$1"
else
- test_known_broken_failure_ "$1"
+ test_known_broken_failure_ "$1"
+ fi
+ if test -n "$3"
+ then
+ eval >&3 2>&4 "$3"
fi
fi
echo >&3 ""
}
test_expect_success () {
- test "$#" = 2 ||
- error "bug in the test script: not 2 parameters to test-expect-success"
- if ! test_skip "$@"
+ case $# in
+ 2) ;; # traditional
+ 3) ;; # with clean-up
+ *)
+ error "bug in the test script" ;;
+ esac
+ if ! test_skip "$1" "$2"
then
say >&3 "expecting success: $2"
test_run_ "$2"
@@ -247,7 +259,11 @@ test_expect_success () {
then
test_ok_ "$1"
else
- test_failure_ "$@"
+ test_failure_ "$1" "$2"
+ fi
+ if test -n "$3"
+ then
+ eval >&3 2>&4 "$3"
fi
fi
echo >&3 ""
next prev parent reply other threads:[~2008-02-29 23:51 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-29 22:23 [PATCH] t6024-recursive-merge.sh: hide spurious output when not running verbosely Mike Hommey
2008-02-29 22:53 ` Jeff King
2008-02-29 22:58 ` Mike Hommey
2008-02-29 23:01 ` Jeff King
2008-02-29 23:15 ` Junio C Hamano
2008-02-29 23:54 ` Jeff King
2008-02-29 23:34 ` Johannes Schindelin
2008-02-29 23:50 ` Junio C Hamano [this message]
2008-03-01 4:10 ` Jeff King
2008-03-01 4:27 ` Shawn O. Pearce
2008-03-01 4:28 ` Jeff King
2008-03-01 5:40 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7v1w6vb9w4.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=mh@glandium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).