From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"John Cai" <johncai86@gmail.com>,
"Elijah Newren" <newren@gmail.com>,
"Derrick Stolee" <stolee@gmail.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH 4/7] test-lib-functions: add and use a "todo_test_cmp" helper
Date: Fri, 18 Mar 2022 01:33:59 +0100 [thread overview]
Message-ID: <patch-4.7-25a4dadd5f3-20220318T002951Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-0.7-00000000000-20220318T002951Z-avarab@gmail.com>
Introduce a new "todo_test_cmp" for use with the new
"test_expect_todo" function. This is a thin wrapper around the
previously introduced "test_todo". Instead of the more verbose:
test_todo test_cmp --want want --expect expect -- actual
We can now do:
todo_test_cmp want expect actual
Since it uses "test_todo", this "test_cmp_todo" function will BUG()
out if "want" and "expect" are the same, and likewise if the "want" is
equivalent to "actual".
Let's convert most of the tests added in 45bde58ef8f (grep:
demonstrate bug with textconv attributes and submodules, 2021-09-29)
to use it, as well as a merge test added in
6d49de414f9 (t6023-merge-file.sh: fix and mark as broken invalid
tests, 2014-06-29).
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
t/t6403-merge-file.sh | 23 +++++++++++--
t/t7814-grep-recurse-submodules.sh | 54 +++++++++++++++++++++---------
t/test-lib-functions.sh | 22 ++++++++++++
3 files changed, 81 insertions(+), 18 deletions(-)
diff --git a/t/t6403-merge-file.sh b/t/t6403-merge-file.sh
index 12b334af85c..d466360c41a 100755
--- a/t/t6403-merge-file.sh
+++ b/t/t6403-merge-file.sh
@@ -92,8 +92,27 @@ test_expect_todo "merge without conflict (missing LF at EOF)" '
git merge-file test2.txt orig.txt new4.txt
'
-test_expect_failure "merge result added missing LF" '
- test_cmp test.txt test2.txt
+test_expect_todo "merge result added missing LF" '
+ cat >expect <<-\EOF &&
+ Dominus regit me, et nihil mihi deerit.
+ In loco pascuae ibi me collocavit,
+ super aquam refectionis educavit me;
+ animam meam convertit,
+ deduxit me super semitas jusitiae,
+ <<<<<<< test2.txt
+ <<<<<<< test2.txt
+ propter nomen suum.
+ Nam et si ambulavero in medio umbrae mortis,
+ non timebo mala, quoniam tu mecum es:
+ virga tua et baculus tuus ipsa me consolata sunt.
+ =======
+ propter nomen suum.
+ >>>>>>> new4.txt
+ =======
+ propter nomen suum.
+ >>>>>>> new4.txt
+ EOF
+ todo_test_cmp test.txt expect test2.txt
'
test_expect_success "merge without conflict (missing LF at EOF, away from change in the other file)" '
diff --git a/t/t7814-grep-recurse-submodules.sh b/t/t7814-grep-recurse-submodules.sh
index a4476dc4922..8d9b53ccfed 100755
--- a/t/t7814-grep-recurse-submodules.sh
+++ b/t/t7814-grep-recurse-submodules.sh
@@ -442,77 +442,98 @@ test_expect_success 'grep --recurse-submodules with --cached ignores worktree mo
test_must_be_empty actual
'
-test_expect_failure 'grep --textconv: superproject .gitattributes does not affect submodules' '
+test_expect_todo 'grep --textconv: superproject .gitattributes does not affect submodules' '
reset_and_clean &&
test_config_global diff.d2x.textconv "sed -e \"s/d/x/\"" &&
echo "a diff=d2x" >.gitattributes &&
+ cat >want <<-\EOF &&
+ a:(1|2)x(3|4)
+ EOF
cat >expect <<-\EOF &&
a:(1|2)x(3|4)
+ submodule/a:(1|2)x(3|4)
+ submodule/sub/a:(1|2)x(3|4)
EOF
git grep --textconv --recurse-submodules x >actual &&
- test_cmp expect actual
+ todo_test_cmp want expect actual
'
-test_expect_failure 'grep --textconv: superproject .gitattributes (from index) does not affect submodules' '
+test_expect_todo 'grep --textconv: superproject .gitattributes (from index) does not affect submodules' '
reset_and_clean &&
test_config_global diff.d2x.textconv "sed -e \"s/d/x/\"" &&
echo "a diff=d2x" >.gitattributes &&
git add .gitattributes &&
rm .gitattributes &&
+ cat >want <<-\EOF &&
+ a:(1|2)x(3|4)
+ EOF
cat >expect <<-\EOF &&
a:(1|2)x(3|4)
+ submodule/a:(1|2)x(3|4)
+ submodule/sub/a:(1|2)x(3|4)
EOF
git grep --textconv --recurse-submodules x >actual &&
- test_cmp expect actual
+ todo_test_cmp want expect actual
'
-test_expect_failure 'grep --textconv: superproject .git/info/attributes does not affect submodules' '
+test_expect_todo 'grep --textconv: superproject .git/info/attributes does not affect submodules' '
reset_and_clean &&
test_config_global diff.d2x.textconv "sed -e \"s/d/x/\"" &&
super_attr="$(git rev-parse --git-path info/attributes)" &&
test_when_finished "rm -f \"$super_attr\"" &&
echo "a diff=d2x" >"$super_attr" &&
+ cat >want <<-\EOF &&
+ a:(1|2)x(3|4)
+ EOF
cat >expect <<-\EOF &&
a:(1|2)x(3|4)
+ submodule/a:(1|2)x(3|4)
+ submodule/sub/a:(1|2)x(3|4)
EOF
git grep --textconv --recurse-submodules x >actual &&
- test_cmp expect actual
+ todo_test_cmp want expect actual
'
# Note: what currently prevents this test from passing is not that the
# .gitattributes file from "./submodule" is being ignored, but that it is being
# propagated to the nested "./submodule/sub" files.
#
-test_expect_failure 'grep --textconv correctly reads submodule .gitattributes' '
+test_expect_todo 'grep --textconv correctly reads submodule .gitattributes' '
reset_and_clean &&
test_config_global diff.d2x.textconv "sed -e \"s/d/x/\"" &&
echo "a diff=d2x" >submodule/.gitattributes &&
+ cat >want <<-\EOF &&
+ submodule/a:(1|2)x(3|4)
+ EOF
cat >expect <<-\EOF &&
submodule/a:(1|2)x(3|4)
+ submodule/sub/a:(1|2)x(3|4)
EOF
git grep --textconv --recurse-submodules x >actual &&
- test_cmp expect actual
+ todo_test_cmp want expect actual
'
-test_expect_failure 'grep --textconv correctly reads submodule .gitattributes (from index)' '
+test_expect_todo 'grep --textconv correctly reads submodule .gitattributes (from index)' '
reset_and_clean &&
test_config_global diff.d2x.textconv "sed -e \"s/d/x/\"" &&
echo "a diff=d2x" >submodule/.gitattributes &&
git -C submodule add .gitattributes &&
rm submodule/.gitattributes &&
- cat >expect <<-\EOF &&
+ cat >want <<-\EOF &&
submodule/a:(1|2)x(3|4)
EOF
- git grep --textconv --recurse-submodules x >actual &&
- test_cmp expect actual
+ >expect &&
+
+ test_might_fail git grep --textconv --recurse-submodules x >actual &&
+ todo_test_cmp want expect actual
'
-test_expect_failure 'grep --textconv correctly reads submodule .git/info/attributes' '
+test_expect_todo 'grep --textconv correctly reads submodule .git/info/attributes' '
reset_and_clean &&
test_config_global diff.d2x.textconv "sed -e \"s/d/x/\"" &&
@@ -520,11 +541,12 @@ test_expect_failure 'grep --textconv correctly reads submodule .git/info/attribu
test_when_finished "rm -f \"$submodule_attr\"" &&
echo "a diff=d2x" >"$submodule_attr" &&
- cat >expect <<-\EOF &&
+ cat >want <<-\EOF &&
submodule/a:(1|2)x(3|4)
EOF
- git grep --textconv --recurse-submodules x >actual &&
- test_cmp expect actual
+ >expect &&
+ test_might_fail git grep --textconv --recurse-submodules x >actual &&
+ todo_test_cmp want expect actual
'
test_expect_failure 'grep saves textconv cache in the appropriate repository' '
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 64b9580f2bc..4d1eca380e8 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -1263,6 +1263,28 @@ test_cmp () {
eval "$GIT_TEST_CMP" '"$@"'
}
+# todo_test_cmp is a "test_cmp" for use in conjunction with
+# "test_expect_todo".
+#
+# It takes a mandatory extra first argument of "want", indicating the
+# output we'd like to have once we turn that "test_expect_todo" into a
+# "test_expect_success":
+#
+# test_expect_todo 'foo still doesn't work' '
+# echo yay >want &&
+# echo error >expect &&
+# foo >actual &&
+# test_cmp want expect actual
+# '
+todo_test_cmp () {
+ test "$#" -ne 3 && BUG "3 param, not $#"
+ local want=$1 &&
+ local expect=$2 &&
+ local actual=$3 &&
+
+ test_todo test_cmp --want "$want" --expect "$expect" -- "$actual"
+}
+
# Check that the given config key has the expected value.
#
# test_cmp_config [-C <dir>] <expected-value>
--
2.35.1.1436.g756b814e59f
next prev parent reply other threads:[~2022-03-18 0:34 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-18 0:33 [PATCH 0/7] test-lib-functions: a better "test_expect_failure" Ævar Arnfjörð Bjarmason
2022-03-18 0:33 ` [PATCH 1/7] test-lib: add a "test_expect_todo", similar to "test_expect_failure" Ævar Arnfjörð Bjarmason
2022-03-18 18:59 ` Junio C Hamano
2022-03-18 20:50 ` Junio C Hamano
2022-03-18 23:07 ` Ævar Arnfjörð Bjarmason
2022-03-19 7:12 ` Junio C Hamano
2022-03-19 11:11 ` Ævar Arnfjörð Bjarmason
2022-03-20 15:13 ` Phillip Wood
2022-03-20 18:07 ` Junio C Hamano
2022-03-22 14:43 ` Derrick Stolee
2022-03-23 22:13 ` Junio C Hamano
2022-03-24 11:24 ` Phillip Wood
2022-03-18 0:33 ` [PATCH 2/7] test-lib-functions: add and use a "test_todo" helper Ævar Arnfjörð Bjarmason
2022-03-18 0:33 ` [PATCH 3/7] tests: allow test_* in "test_must_fail_acceptable" for "test_todo" Ævar Arnfjörð Bjarmason
2022-03-18 0:33 ` Ævar Arnfjörð Bjarmason [this message]
2022-03-18 0:34 ` [PATCH 5/7] test-lib-functions: add and use a "todo_test_path" helper Ævar Arnfjörð Bjarmason
2022-03-18 0:34 ` [PATCH 6/7] test-lib-functions: make test_todo support a --reset Ævar Arnfjörð Bjarmason
2022-03-18 0:34 ` [PATCH 7/7] sparse tests: convert a TODO test to use "test_expect_todo" Ævar Arnfjörð Bjarmason
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=patch-4.7-25a4dadd5f3-20220318T002951Z-avarab@gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johncai86@gmail.com \
--cc=newren@gmail.com \
--cc=stolee@gmail.com \
/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).