git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Danh Doan <congdanhqx@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 0/6] fix test failure with busybox
Date: Fri, 20 Mar 2020 01:30:52 -0400	[thread overview]
Message-ID: <20200320053052.GC499858@coredump.intra.peff.net> (raw)
In-Reply-To: <20200320003715.GA1858@danh.dev>

On Fri, Mar 20, 2020 at 07:37:15AM +0700, Danh Doan wrote:

> > The issue in t5703 is the sed call in get_actual_commits(). It's trying
> > to cut off the early (text) part of the file, and pass through the
> > binary goo of the packfile. Presumably busybox's sed isn't binary-clean.
> 
> I've checked, busybox's sed think every input is text file,
> and in POSIX, every line in every text file must be terminated by
> <newline>.
> 
> Thus, busybox's sed append a <newline> after `0000` marker, render the
> pack file invalid.

Ah, thanks for tracking it down.

> > We're also feeding this into a test-tool helper. It's possible that
> > helper could be made smart enough to replace both this sed invocation
> > and the one in get_actual_refs().
> 
> I looked into this direction, I guess you meant something like this:
> [...]
> @@ -53,6 +54,13 @@ static void unpack(void)
>  static void unpack_sideband(void)
>  {
>  	struct packet_reader reader;
> +	struct strbuf buf = STRBUF_INIT;
> +
> +	while (strbuf_getline(&buf, stdin) == 0)
> +		if (strstr(buf.buf, "packfile"))
> +		    break;
> +	strbuf_release(&buf);
> +
>  	packet_reader_init(&reader, 0, NULL, 0,
>  			   PACKET_READ_GENTLE_ON_EOF |
>  			   PACKET_READ_CHOMP_NEWLINE);
> [...]
> But, this doesn't work. as `packet_reader_read` reads directly from fd 0.

You'd want to decode the packets first first, and then skip until after
you see the packet with "packfile" in it. Or to be more generic, just
wait until you see packets with actual sideband data. Something like the
patch below works (though I'm also fine with just switching to perl).

diff --git a/t/helper/test-pkt-line.c b/t/helper/test-pkt-line.c
index 282d536384..12ca698e17 100644
--- a/t/helper/test-pkt-line.c
+++ b/t/helper/test-pkt-line.c
@@ -67,7 +67,7 @@ static void unpack_sideband(void)
 		case PACKET_READ_NORMAL:
 			band = reader.line[0] & 0xff;
 			if (band < 1 || band > 2)
-				die("unexpected side band %d", band);
+				continue; /* skip non-sideband packets */
 			fd = band;
 
 			write_or_die(fd, reader.line + 1, reader.pktlen - 1);
diff --git a/t/t5703-upload-pack-ref-in-want.sh b/t/t5703-upload-pack-ref-in-want.sh
index 7fba3063bf..a34460f7d8 100755
--- a/t/t5703-upload-pack-ref-in-want.sh
+++ b/t/t5703-upload-pack-ref-in-want.sh
@@ -13,10 +13,7 @@ get_actual_refs () {
 }
 
 get_actual_commits () {
-	sed -n -e '/packfile/,/0000/{
-		/packfile/d
-		p
-		}' <out | test-tool pkt-line unpack-sideband >o.pack &&
+	test-tool pkt-line unpack-sideband <out >o.pack &&
 	git index-pack o.pack &&
 	git verify-pack -v o.idx >objs &&
 	grep commit objs | cut -d" " -f1 | sort >actual_commits

  reply	other threads:[~2020-03-20  5:30 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-19 14:00 [PATCH 0/6] fix test failure with busybox Đoàn Trần Công Danh
2020-03-19 14:00 ` [PATCH 1/6] t4061: use POSIX compliance regex(7) Đoàn Trần Công Danh
2020-03-19 15:53   ` Jeff King
2020-03-19 16:01     ` Eric Sunshine
2020-03-19 22:02       ` Junio C Hamano
2020-03-20  1:35         ` Danh Doan
2020-03-19 14:00 ` [PATCH 2/6] test-lib-functions: test_cmp: eval $GIT_TEST_CMP Đoàn Trần Công Danh
2020-03-19 16:02   ` Jeff King
2020-03-19 16:14     ` Eric Sunshine
2020-03-20  1:29     ` Danh Doan
2020-03-19 14:00 ` [PATCH 3/6] t5003: skip conversion test if unzip -a is unavailable Đoàn Trần Công Danh
2020-03-19 16:03   ` Jeff King
2020-03-20  0:39     ` Danh Doan
2020-03-20  5:32       ` Jeff King
2020-03-19 14:00 ` [PATCH 4/6] t5616: use rev-parse instead to get HEAD's object_id Đoàn Trần Công Danh
2020-03-19 16:07   ` Jeff King
2020-03-20  0:57     ` Danh Doan
2020-03-19 14:00 ` [PATCH 5/6] t7063: use POSIX find(1) syntax Đoàn Trần Công Danh
2020-03-19 16:12   ` Jeff King
2020-03-19 22:16     ` Junio C Hamano
2020-03-20  1:41       ` Danh Doan
2020-03-20  2:20         ` Danh Doan
2020-03-20  5:37         ` Jeff King
2020-03-22  0:37           ` Danh Doan
2020-03-22  6:05             ` Jeff King
2020-03-19 14:00 ` [PATCH 6/6] t4124: fix test for non-compliance diff Đoàn Trần Công Danh
2020-03-19 16:33   ` Jeff King
2020-03-19 22:58     ` Junio C Hamano
2020-03-20  5:20       ` Jeff King
2020-03-20  1:52     ` Danh Doan
2020-03-20  5:23       ` Jeff King
2020-03-19 15:51 ` [PATCH 0/6] fix test failure with busybox Jeff King
2020-03-20  0:37   ` Danh Doan
2020-03-20  5:30     ` Jeff King [this message]
2020-03-19 16:34 ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200320053052.GC499858@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=congdanhqx@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).