Subject: Re: [PATCH v7 3/6] t0021: write "OUT <size>" only on success

From: Junio C Hamano <[email-masked]>
Date: Tue, 27 Jun 2017 11:44:31 -0700

Lars Schneider <[email-masked]> writes:

> "rot13-filter.pl" always writes "OUT <size>" to the debug log at the end
> of a response.
>
> This works without issues for the existing responses "abort", "error",
> and "success". A new response "delayed", that will be introduced in a
> subsequent patch, accepts the input without giving the filtered result
> right away. Since we actually have the data already available in our
> mock filter the debug log output would be wrong/misleading. Therefore,
> we do not write "OUT <size>" for "delayed" responses.

I still do not get why you think it makes any difference that you
are hoarding the result in the mock program.  If the filter needs to
read a prepared result from a file in t/t0021/ before responding to
a real request after it replies to "delayed", would that change the
argument above?  From Git's and the t0021-conversion.sh test's point
of view, I do not think it makes an iota of difference---it's an
implementation detail of the mock program.

I am totally lost.

Isn't the point of removing the log output from response to "delayed"
that the filter does not give the output back to Git at that point,
hence generally the size would not be available in the real-world
use case (not in the mock program)?

> To simplify the code we do not write "OUT <size>" for "abort" and
> "error" responses, too, as their size is always zero.
>
> Signed-off-by: Lars Schneider <[email-masked]>
> ---
>  t/t0021-conversion.sh   | 6 +++---
>  t/t0021/rot13-filter.pl | 6 +++---
>  2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh
> index 0139b460e7..0c04d346a1 100755
> --- a/t/t0021-conversion.sh
> +++ b/t/t0021-conversion.sh
> @@ -588,7 +588,7 @@ test_expect_success PERL 'process filter should restart after unexpected write f
>  		cat >expected.log <<-EOF &&
>  			START
>  			init handshake complete
> -			IN: smudge smudge-write-fail.r $SF [OK] -- OUT: $SF [WRITE FAIL]
> +			IN: smudge smudge-write-fail.r $SF [OK] -- [WRITE FAIL]
>  			START
>  			init handshake complete
>  			IN: smudge test.r $S [OK] -- OUT: $S . [OK]
> @@ -634,7 +634,7 @@ test_expect_success PERL 'process filter should not be restarted if it signals a
>  		cat >expected.log <<-EOF &&
>  			START
>  			init handshake complete
> -			IN: smudge error.r $SE [OK] -- OUT: 0 [ERROR]
> +			IN: smudge error.r $SE [OK] -- [ERROR]
>  			IN: smudge test.r $S [OK] -- OUT: $S . [OK]
>  			IN: smudge test2.r $S2 [OK] -- OUT: $S2 . [OK]
>  			STOP
> @@ -673,7 +673,7 @@ test_expect_success PERL 'process filter abort stops processing of all further f
>  		cat >expected.log <<-EOF &&
>  			START
>  			init handshake complete
> -			IN: smudge abort.r $SA [OK] -- OUT: 0 [ABORT]
> +			IN: smudge abort.r $SA [OK] -- [ABORT]
>  			STOP
>  		EOF
>  		test_cmp_exclude_clean expected.log debug.log &&
> diff --git a/t/t0021/rot13-filter.pl b/t/t0021/rot13-filter.pl
> index 0b943bb377..5e43faeec1 100644
> --- a/t/t0021/rot13-filter.pl
> +++ b/t/t0021/rot13-filter.pl
> @@ -153,9 +153,6 @@ while (1) {
>  		die "bad command '$command'";
>  	}
>  
> -	print $debug "OUT: " . length($output) . " ";
> -	$debug->flush();
> -
>  	if ( $pathname eq "error.r" ) {
>  		print $debug "[ERROR]\n";
>  		$debug->flush();
> @@ -178,6 +175,9 @@ while (1) {
>  			die "${command} write error";
>  		}
>  
> +		print $debug "OUT: " . length($output) . " ";
> +		$debug->flush();
> +
>  		while ( length($output) > 0 ) {
>  			my $packet = substr( $output, 0, $MAX_PACKET_CONTENT_SIZE );
>  			packet_bin_write($packet);