Re: [PATCH v10 13/14] convert: add filter.<driver>.process option
- From
Torsten Bögershausen <tboegi@web.de>
- Date
- Oct 11, 2016, 10:09 UTC
- Message-ID
- <20161011100946.GA13745@tb-raspi>
- In-Reply-To
- <02E73D87-B036-40CA-AF54-F93415A028BC@gmail.com>
On Tue, Oct 11, 2016 at 10:11:22AM +0200, Lars Schneider wrote:
Show 72 quoted lines
>
> > On 10 Oct 2016, at 21:58, Junio C Hamano <gitster@pobox.com> wrote:
> >
> > larsxschneider@gmail.com writes:
> >
> > [...]
> >> +# Count unique lines except clean invocations in two files and compare
> >> +# them. Clean invocations are not counted because their number can vary.
> >> +# c.f. http://public-inbox.org/git/xmqqshv18i8i.fsf@gitster.mtv.corp.google.com/
> >> +test_cmp_count_except_clean () {
> >> + for FILE in $@
> >> + do
> >> + sort $FILE | uniq -c | sed "s/^[ ]*//" |
> >> + sed "s/^\([0-9]\) IN: clean/x IN: clean/" >$FILE.tmp
> >> + cat $FILE.tmp >$FILE
> >> + done &&
> >> + test_cmp $@
> >> +}
> >
> > Why do you even _care_ about the number of invocations? While I
> > told you why "clean" could be called multiple times under racy Git
> > as an example, that was not meant to be an exhaustive example. I
> > wouldn't be surprised if we needed to run smudge twice, for example,
> > in some weirdly racy cases in the future.
> >
> > Can we just have the correctness (i.e. "we expect that the working
> > tree file gets this as the result of checking it out, and we made
> > sure that is the case") test without getting into such an
> > implementation detail?
>
> My goal is to check that clean/smudge is invoked at least once. I could
> just run `uniq` to achieve that but then all other filter commands could
> happen multiple times and the test would not detect that.
>
> I also prefer to check the filter commands to ensure the filter is
> working as expected (e.g. no multiple start ups etc) in addition to
> checking the working tree.
>
> Would the patch below work for you? If yes, then please squash it into
> "convert: add filter.<driver>.process option".
>
> Thank you,
> Lars
>
>
>
> diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh
> index 9f892c0..714f706 100755
> --- a/t/t0021-conversion.sh
> +++ b/t/t0021-conversion.sh
> @@ -31,38 +31,33 @@ filter_git () {
> rm -f git-stderr.log
> }
>
> -# Count unique lines in two files and compare them.
> -test_cmp_count () {
> - for FILE in $@
> - do
> - sort $FILE | uniq -c | sed "s/^[ ]*//" >$FILE.tmp
> - cat $FILE.tmp >$FILE
> - done &&
> - test_cmp $@
> -}
> -
> -# Count unique lines except clean invocations in two files and compare
> -# them. Clean invocations are not counted because their number can vary.
> +# Compare two files and ensure that `clean` and `smudge` respectively are
> +# called at least once if specified in the `expect` file. The actual
> +# invocation count is not relevant because their number can vary.
> # c.f. http://public-inbox.org/git/xmqqshv18i8i.fsf@gitster.mtv.corp.google.com/
> -test_cmp_count_except_clean () {
> - for FILE in $@> +test_cmp_count () {
> + expect=$1 actual=$2That could be expect="$1" actual="$2"
> + for FILE in "$expect" "$actual" > do
> + sort "$FILE" | uniq -c | sed "s/^[ ]*//" | > + sed "s/^\([0-9]\) IN: clean/x IN: clean/" | > + sed "s/^\([0-9]\) IN: smudge/x IN: smudge/" >"$FILE.tmp" && > + cat "$FILE.tmp" >"$FILE"
How about cp "$FILE.tmp" "$FILE"