diff --git a/t/README b/t/README index adbbd9acf4..d93b71971c 100644 --- a/t/README +++ b/t/README @@ -1039,6 +1039,40 @@ 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_grep requires to exist and will BUG otherwise, so + use it only where the file is guaranteed to exist at that point. + When a file's presence is conditional (a backend-specific file, + or a path that only exists on some platforms, such as an NTFS + 8.3 short name), guard the assertion on that condition (a + prerequisite, or a 'test -e' on the path) and use test_grep + inside the guard: + + if test_have_prereq REFFILES + then + test_grep ! "$refname" .git/packed-refs + fi + - test_path_is_file test_path_is_dir test_path_is_missing