Brian Henderson <> writes:

> Junio, how does this look?
> ...
> +# dh_test is a test helper function which takes 1) some file data, 2) some
> +# change of the file data, creates a diff and commit of the changes and 
> passes
> +# that through diff-highlight.
> +# The optional 3rd parameter is the expected output of diff-highlight minus 
> the
> +# diff/commit header. This parameter is given directly to printf as the 
> format
> +# string (in order to properly handle ascii escape codes; CW, CR), so any '%'
> +# need to be doubled to protect it.
> +# Don't include a 3rd parameter if diff-highlight is supposed to leave the
> +# input unmodified.
> +# For convienence, the 3rd parameter can begin with a newline which will be
> +# stripped.

You seem to be stripping any and all empty lines with "perl -pe"; I
am not sure if that is sensible.

I really do not see the point of being able to spell


when you can perfectly well read


or even "aaa\nbbb\n" for that matter.  I personally do not think the
difference is worth the cost of an extra invocation of Perl, but we
already saw how stubborn you are, so there is no point spending my
time on trying to convince you further.  Assuming that it is so
precious that the input can start with an extra blank line, what you
wrote is a sensible implementation.

> +dh_test () {
> +     a="$1" b="$2" &&
> +
> +     {
> +             printf "$a" >file &&
> +             git add file &&
> +             git commit -m "Add a file" &&
> +
> +             printf "$b" >file &&
> +             git diff file >diff.raw &&
> +             git commit -am "Update a file" &&
> +             git show >commit.raw
> +     } >/dev/null &&
> +
> +     if test $# -ge 3

I think

        if test $# = 3

is much better; you would want to catch bugs in a caller that gave
you fourth parameter by mistake, instead of silently ignoring it.

> +test_strip_patch_header () {
> +     sed -e '1,/^@@/d' "$@"
> +}

While I think it is a great idea to hide the sed command behind a
helper function for readability, I am not sure "strip patch header"
is a great name that describes what it does.  A natural expectation
for an operation with that name done to this input:

    diff --git a/file b/file
    index fffffff..fffffff 100644
    --- a/file
    +++ b/file
    @@ -l,k +m,n @@ comments
    @@ -l,k +m,n @@ more comments
    +added more
    +added even more

would be to remove the first four lines, not five.

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at

Reply via email to