From 304003b68b25ebf01dae9d1f4791b97672ff705f Mon Sep 17 00:00:00 2001 From: Michael Montalbo Date: Sat, 13 Jun 2026 04:06:10 +0000 Subject: [PATCH] t/README: document test_grep helper test_grep is a wrapper around grep for test assertions that prints the file contents on failure for easier debugging. It also accepts '!' as its first argument for negation, which preserves the diagnostic output that '! test_grep' would suppress. Despite being widely used (and the preferred replacement for bare grep in assertions), test_grep has no entry in t/README alongside the other documented helpers like test_cmp and test_line_count. Add one. Signed-off-by: Michael Montalbo Signed-off-by: Junio C Hamano --- t/README | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/t/README b/t/README index adbbd9acf4..c12a1c317a 100644 --- a/t/README +++ b/t/README @@ -1039,6 +1039,27 @@ see test-lib-functions.sh for the full list and their options. Check whether a file has the length it is expected to. + - test_grep [!] [] + + Check whether contains a line matching , or + with '!' that no line matches. Use this instead of bare + 'grep ' in test assertions. On failure, + test_grep prints the contents of for easier debugging, + whereas a bare 'grep' would fail silently. + + For negation, pass '!' as the first argument: + + test_grep ! "^diff --git" actual + + Do not negate by writing '! test_grep', as that suppresses the + diagnostic output. + + test_grep should only be used as a test assertion. When grep + is used as a data filter (e.g. 'grep -v "^index" actual >filtered') + or inside a command substitution (e.g. '$(grep -c ...)'), plain + 'grep' is the right choice because the exit code is not the + assertion itself. + - test_path_is_file test_path_is_dir test_path_is_missing