Am 21.11.2015 um 09:11 schrieb Johannes Sixt: > Am 20.11.2015 um 21:50 schrieb René Scharfe: >> Extract a helper function for searching for a pattern in a file and >> printing the whole file if the pattern is not found. It is useful >> when starting tests with --verbose for debugging purposes. > >> +# Check if a file contains an expected pattern. >> +test_must_contain () { >> + if grep "$1" "$2" >> + then >> + return 0 >> + else >> + echo "didn't find /$1/ in '$2', it contains:" >> + cat "$2" >> + return 1 >> + fi >> +} > > There is already test_i18n_grep. Should it be folded into this function? That's a good point. But how? test_i18ngrep can also work as a filter and pass on options, so we'd need to parse all parameters and redirect stdin to a temporary file unless a file was specified. Or we could be sloppy and just check if the last parameter is a file and if yes then spew it out. > Wouldn't we also want to have a function test_must_not_contain? I doubt it. In such a function grep would display the lines that match unexpectedly already, so showing the whole file after that won't add much more of interest. > IMHO, we should not increase the number of functions that give a bonus > only when there is a test case failure. They do not scale well: There is > a permanent mental burden on every reviewer to watch out that they are > used in new tests. But without those functions, the burden is on the one > person investigating a test case failure, who has to live without the > debugging support. test_must_contain doesn't have to be used everywhere, only in cases where a file is shown and grepped. I agree that letting an existing function do that job (or deciding that the job is not worth doing) is preferable. Here's how I imagine the sloppy add-on to test_i18ncmp to look: diff --git a/t/test-lib.sh b/t/test-lib.sh index 16c4d7b..db64600 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -985,13 +985,28 @@ test_i18ncmp () { test_i18ngrep () { if test -n "$GETTEXT_POISON" then : # pretend success elif test "x!" = "x$1" then shift ! grep "$@" else grep "$@" + + rc=$? + if test $rc != 0 + then + while test $# -gt 1 + do + shift + done + if test -f "$1" + then + echo "Expected pattern not found, content is:" + cat "$1" + fi + return $rc + fi fi } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html