From: Johannes Sixt Date: Wed, 17 Feb 2021 07:10:26 GMT Subject: Re: [PATCH v2 11/27] blame tests: simplify userdiff driver test Message-ID: <200aecc0-4bfa-0655-da4d-45df7408d5ff@kdbg.org> In-Reply-To: <87eehfa36w.fsf@evledraar.gmail.com> Am 17.02.21 um 02:33 schrieb Ævar Arnfjörð Bjarmason: > > On Mon, Feb 15 2021, Johannes Sixt wrote: > >> Am 15.02.21 um 16:44 schrieb Ævar Arnfjörð Bjarmason: >>> Simplify the test added in 9466e3809d (blame: enable funcname blaming >>> with userdiff driver, 2020-11-01) to use the --author support recently >>> added in 999cfc4f45 (test-lib functions: add --author support to >>> test_commit, 2021-01-12). >>> We also did not need the full fortran-external-function content, >>> let's >>> cut it down to just the important parts, and further modify it to >>> demonstrate that the fortran-specific userdiff function is in effect >>> by adding "WRONG" lines surrounding the "RIGHT" one. >>> The test also left behind a .gitattributes files, let's clean it up >>> with "test_when_finished". >>> Signed-off-by: Ævar Arnfjörð Bjarmason >>> --- >>> t/annotate-tests.sh | 36 +++++++++++++++--------------------- >>> 1 file changed, 15 insertions(+), 21 deletions(-) >>> diff --git a/t/annotate-tests.sh b/t/annotate-tests.sh >>> index 04a2c58594..4a86e0f349 100644 >>> --- a/t/annotate-tests.sh >>> +++ b/t/annotate-tests.sh >>> @@ -479,32 +479,26 @@ test_expect_success 'blame -L ^:RE (absolute: end-of-file)' ' >>> check_count -f hello.c -L$n -L^:ma.. F 4 G 1 H 1 >>> ' >>> -test_expect_success 'setup -L :funcname with userdiff driver' ' >>> - echo "fortran-* diff=fortran" >.gitattributes && >>> - fortran_file=fortran-external-function && >>> - cat >$fortran_file <<-\EOF && >>> +test_expect_success 'blame -L :funcname with userdiff driver' ' >>> + cat >file.template <<-\EOF && >>> + def WRONG begin end >>> function RIGHT(a, b) result(c) >>> + int WRONG(void) {} >>> integer, intent(in) :: ChangeMe >>> - integer, intent(in) :: b >>> - integer, intent(out) :: c >>> - >>> - c = a+b >>> - >>> - end function RIGHT >>> EOF >>> - git add "$fortran_file" && >>> - GIT_AUTHOR_NAME="A" GIT_AUTHOR_EMAIL="A@test.git" \ >>> - git commit -m "add fortran file" && >>> - sed -e "s/ChangeMe/IWasChanged/" <"$fortran_file" >"$fortran_file".tmp && >>> - mv "$fortran_file".tmp "$fortran_file" && >>> - git add "$fortran_file" && >>> - GIT_AUTHOR_NAME="B" GIT_AUTHOR_EMAIL="B@test.git" \ >>> - git commit -m "change fortran file" >>> -' >>> -test_expect_success 'blame -L :funcname with userdiff driver' ' >>> - check_count -f fortran-external-function -L:RIGHT A 7 B 1 >>> + fortran_file=file.f03 && >>> + test_when_finished "rm .gitattributes" && >>> + echo "$fortran_file diff=fortran" >.gitattributes && >>> + >>> + test_commit --author "A " \ >>> + "add" $fortran_file \ >>> + "$(cat file.template)" && >>> + test_commit --author "B " \ >>> + "change" $fortran_file \ >>> + "$(cat file.template | sed -e s/ChangeMe/IWasChanged/)" && >>> + check_count -f $fortran_file -L:RIGHT A 3 B 1 >>> ' >>> test_expect_success 'setup incremental' ' >>> >> >> I don't get the point. What do you need the tokens "WRONG" for when >> they are not checked anywhere? Instead of adding unrelated lines (that >> do not even look like Fortran), couldn't you just not remove some of >> the others? In particular, the last one that contains "RIGHT" as well >> may be useful to keep in order to show that the code is not confused >> by it. > > Isn't the point of the test to assert that we're using a userdiff driver > over the built-in xdiff rules here? > > We can imagine that a change to its default heuristics would be to find > the first non-whitespace line, but it jumping over non-whitespace lines > in search of a fortran-looking line doesn't seem like it would ever > happen. Hence the WRONG lines. Fair enough. A justification along these lines either as comment or in the commit message would have helped; the existing text in the commit message was not sufficient to get the point across. I was distracted by the capitalized "WRONG" token because we use a capitalized "RIGHT" token and check for it, so I expected that we also should check for "WRONG". Wouldn't it then just be sufficient to remove the blank lines from the exiting Fortran content? >> Please place "$fortran_file" in dquotes on the check_count line. I just noticed that there are more unquoted expansions above that line. (I'm just mentioning it for completeness.) -- Hannes