All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denton Liu <liu.denton@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Subject: [PATCH 03/16] t2018: use test_must_fail for failing git commands
Date: Fri, 27 Dec 2019 08:47:12 -0500	[thread overview]
Message-ID: <c584c9a52b492db2128846e86afb0aadddd6f2de.1577454401.git.liu.denton@gmail.com> (raw)
In-Reply-To: <cover.1577454401.git.liu.denton@gmail.com>

Before, when we expected `git diff` to fail, we negated its status with
`!`. However, if git ever exits unexpectedly, say due to a segfault, we
would not be able to tell the difference between that and a controlled
failure. Use `test_must_fail git diff` instead so that if an unepxected
failure occurs, we can catch it.

We had some instances of `test_must_fail test_dirty_{un,}mergable`.
However, `test_must_fail` should only be used on git commands. Teach
test_dirty_{un,}mergable() to accept `!` as a potential first argument
which will run the git command without test_must_fail(). This prevents
the double-negation where we were effectively running
`test_must_fail test_must_fail git diff ...`.

While we're at it, remove redirections to /dev/null since output is
silenced when running without `-v` and debugging output is useful with
`-v`, remove redirections to /dev/null as it is not useful.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
---
 t/t2018-checkout-branch.sh | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/t/t2018-checkout-branch.sh b/t/t2018-checkout-branch.sh
index 79b16e4677..e6b852939c 100755
--- a/t/t2018-checkout-branch.sh
+++ b/t/t2018-checkout-branch.sh
@@ -33,7 +33,12 @@ do_checkout () {
 }
 
 test_dirty_unmergeable () {
-	! git diff --exit-code >/dev/null
+	should_fail="test_expect_code 1" &&
+	if test "x$1" = "x!"
+	then
+		should_fail=
+	fi &&
+	$should_fail git diff --exit-code
 }
 
 setup_dirty_unmergeable () {
@@ -41,7 +46,12 @@ setup_dirty_unmergeable () {
 }
 
 test_dirty_mergeable () {
-	! git diff --cached --exit-code >/dev/null
+	should_fail="test_expect_code 1"  &&
+	if test "x$1" = "x!"
+	then
+		should_fail=
+	fi &&
+	$should_fail git diff --cached --exit-code
 }
 
 setup_dirty_mergeable () {
@@ -93,7 +103,7 @@ test_expect_success 'checkout -f -b to a new branch with unmergeable changes dis
 
 	# still dirty and on branch1
 	do_checkout branch2 $HEAD1 "-f -b" &&
-	test_must_fail test_dirty_unmergeable
+	test_dirty_unmergeable !
 '
 
 test_expect_success 'checkout -b to a new branch preserves mergeable changes' '
@@ -111,7 +121,7 @@ test_expect_success 'checkout -f -b to a new branch with mergeable changes disca
 	test_when_finished git reset --hard HEAD &&
 	setup_dirty_mergeable &&
 	do_checkout branch2 $HEAD1 "-f -b" &&
-	test_must_fail test_dirty_mergeable
+	test_dirty_mergeable !
 '
 
 test_expect_success 'checkout -b to an existing branch fails' '
@@ -162,7 +172,7 @@ test_expect_success 'checkout -B to an existing branch with unmergeable changes
 test_expect_success 'checkout -f -B to an existing branch with unmergeable changes discards changes' '
 	# still dirty and on branch1
 	do_checkout branch2 $HEAD1 "-f -B" &&
-	test_must_fail test_dirty_unmergeable
+	test_dirty_unmergeable !
 '
 
 test_expect_success 'checkout -B to an existing branch preserves mergeable changes' '
@@ -179,7 +189,7 @@ test_expect_success 'checkout -f -B to an existing branch with mergeable changes
 
 	setup_dirty_mergeable &&
 	do_checkout branch2 $HEAD1 "-f -B" &&
-	test_must_fail test_dirty_mergeable
+	test_dirty_mergeable !
 '
 
 test_expect_success 'checkout -b <describe>' '
-- 
2.24.1.810.g65a2f617f4


  parent reply	other threads:[~2019-12-27 13:47 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-27 13:47 [PATCH 00/16] t: replace incorrect test_must_fail usage (part 2) Denton Liu
2019-12-27 13:47 ` [PATCH 01/16] t2018: remove trailing space from test description Denton Liu
2019-12-27 13:47 ` [PATCH 02/16] t2018: add space between function name and () Denton Liu
2019-12-27 21:03   ` Eric Sunshine
2019-12-27 13:47 ` Denton Liu [this message]
2019-12-28  7:55   ` [PATCH 03/16] t2018: use test_must_fail for failing git commands Eric Sunshine
2019-12-30 20:30   ` Jakub Narebski
2019-12-27 13:47 ` [PATCH 04/16] t2018: teach do_checkout() to accept `!` arg Denton Liu
2019-12-28  8:34   ` Eric Sunshine
2019-12-27 13:47 ` [PATCH 05/16] t2018: don't lose return code of git commands Denton Liu
2019-12-27 21:42   ` Eric Sunshine
2020-01-01  8:48     ` Denton Liu
2020-01-01  9:21       ` Eric Sunshine
2020-01-02 18:26       ` Junio C Hamano
2019-12-27 13:47 ` [PATCH 06/16] t2018: replace "sha" with "oid" Denton Liu
2019-12-27 13:47 ` [PATCH 07/16] t3030: use test_path_is_missing() Denton Liu
2019-12-27 13:47 ` [PATCH 08/16] t3310: extract common no_notes_merge_left() Denton Liu
2019-12-28  7:20   ` Eric Sunshine
2019-12-30 20:38     ` Jakub Narebski
2019-12-27 13:47 ` [PATCH 09/16] t3415: stop losing return codes of git commands Denton Liu
2019-12-27 13:47 ` [PATCH 10/16] t3415: increase granularity of test_auto_{fixup,squash}() Denton Liu
2019-12-27 13:47 ` [PATCH 11/16] t3419: stop losing return code of git command Denton Liu
2019-12-27 13:47 ` [PATCH 12/16] t3504: don't use `test_must_fail test_cmp` Denton Liu
2019-12-27 20:39   ` Johannes Sixt
2019-12-27 22:48     ` Junio C Hamano
2019-12-27 13:47 ` [PATCH 13/16] t3507: fix indentation Denton Liu
2019-12-27 13:47 ` [PATCH 14/16] t3507: use test_path_is_missing() Denton Liu
2019-12-27 13:47 ` [PATCH 15/16] t4124: only mark git command with test_must_fail Denton Liu
2019-12-27 13:47 ` [PATCH 16/16] t4124: let sed open its own files Denton Liu
2019-12-30 22:52   ` Jakub Narebski
2019-12-30 23:27     ` Junio C Hamano
2020-01-01  8:24       ` Denton Liu
2020-01-01  8:33         ` Eric Sunshine
2020-01-01  8:53           ` Denton Liu
2020-01-07  4:52 ` [PATCH v2 00/16] t: replace incorrect test_must_fail usage (part 2) Denton Liu
2020-01-07  4:52   ` [PATCH v2 01/16] t2018: remove trailing space from test description Denton Liu
2020-01-07  4:52   ` [PATCH v2 02/16] t2018: add space between function name and () Denton Liu
2020-01-07  4:53   ` [PATCH v2 03/16] t2018: improve style of if-statement Denton Liu
2020-01-07  4:53   ` [PATCH v2 04/16] t2018: use test_expect_code for failing git commands Denton Liu
2020-01-12 10:50     ` Eric Sunshine
2020-01-26 20:23     ` [PATCH v3] t2018: be more discerning when checking for expected exit codes Denton Liu
2020-01-07  4:53   ` [PATCH v2 05/16] t2018: teach do_checkout() to accept `!` arg Denton Liu
2020-01-07  4:53   ` [PATCH v2 06/16] t2018: don't lose return code of git commands Denton Liu
2020-01-07  4:53   ` [PATCH v2 07/16] t2018: replace "sha" with "oid" Denton Liu
2020-01-07  4:53   ` [PATCH v2 08/16] t3030: use test_path_is_missing() Denton Liu
2020-01-07  4:53   ` [PATCH v2 09/16] t3310: extract common notes_merge_files_gone() Denton Liu
2020-01-07  4:53   ` [PATCH v2 10/16] t3415: stop losing return codes of git commands Denton Liu
2020-01-07  4:53   ` [PATCH v2 11/16] t3415: increase granularity of test_auto_{fixup,squash}() Denton Liu
2020-01-07  4:53   ` [PATCH v2 12/16] t3419: stop losing return code of git command Denton Liu
2020-01-07  4:53   ` [PATCH v2 13/16] t3504: do check for conflict marker after failed cherry-pick Denton Liu
2020-01-07  4:53   ` [PATCH v2 14/16] t3507: fix indentation Denton Liu
2020-01-07  4:53   ` [PATCH v2 15/16] t3507: use test_path_is_missing() Denton Liu
2020-01-07  4:53   ` [PATCH v2 16/16] t4124: only mark git command with test_must_fail Denton Liu
2020-01-10 21:45   ` [PATCH v2 00/16] t: replace incorrect test_must_fail usage (part 2) Eric Sunshine

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=c584c9a52b492db2128846e86afb0aadddd6f2de.1577454401.git.liu.denton@gmail.com \
    --to=liu.denton@gmail.com \
    --cc=git@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.