Junio C Hamano [off-list ref] writes:
Jeff King [off-list ref] writes:
quoted
2. Loosen the test to look for the presence of "checkout", but not
fail when other items are present. Bonus points if it makes sure
that everything returned starts with "check".
I think (2) is the ideal solution in terms of behavior, but writing it
may be more of a pain.
Yeah, I think (2) is the way to go.
The beginning of such a change may look like the attached patch.
If we want to go for the bonus points, we would either add another
parameter "prefix" to the test_completion function, or introduce the
test_complete_command function that takes that prefix parameter, and
in addition to making sure lines from "expect" is fully contained in
the "actual", make sure that output from
comm -13 expect.sorted actual.sorted
all begin with that "prefix" string, perhaps with
grep -v "^$prefix"
or something. The test_fully_contains function needs to be renamed
if somebody goes that additional step.
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index 3cd53f8..5fab389 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -54,10 +54,16 @@ run_completion ()
__git_wrap__git_main && print_comp
}
+test_fully_contains () {
+ sort "$1" >expect.sorted &&
+ sort "$2" >actual.sorted &&
+ test $(comm -23 expect.sorted actual.sorted | wc -l) = 0
+}
+
# Test high-level completion
# Arguments are:
# 1: typed text so far (cur)
-# 2: expected completion
+# 2: expected completion (if missing, this is read from stdin)
test_completion ()
{
if test $# -gt 1@@ -67,7 +73,7 @@ test_completion ()
sed -e 's/Z$//' >expected
fi &&
run_completion "$1" &&
- test_cmp expected out
+ test_fully_contains expected out
}
# Test __gitcomp.