git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 0/6] fix test failure with busybox

From
Jeff King <peff@peff.net>
Date
Mar 20, 2020, 05:30 UTC
Message-ID
<20200320053052.GC499858@coredump.intra.peff.net>
In-Reply-To
<20200320003715.GA1858@danh.dev>
On Fri, Mar 20, 2020 at 07:37:15AM +0700, Danh Doan wrote:
Show 10 quoted lines
> > 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.
Show 22 quoted lines
> > 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
Previous: Danh DoanNext: Jeff King
Message 34 of 35 in “fix test failure with busybox”
  1. 0/6 fix test failure with busyboxĐoàn Trần Công Danh, Mar 19, 2020
  2. 1/6 t4061: use POSIX compliance regex(7)Đoàn Trần Công Danh, Mar 19, 2020
  3. Jeff KingMar 19, 2020
  4. Eric SunshineMar 19, 2020
  5. Junio C HamanoMar 19, 2020
  6. Danh DoanMar 20, 2020
  7. 2/6 test-lib-functions: test_cmp: eval $GIT_TEST_CMPĐoàn Trần Công Danh, Mar 19, 2020
  8. Jeff KingMar 19, 2020
  9. Eric SunshineMar 19, 2020
  10. Danh DoanMar 20, 2020
  11. 3/6 t5003: skip conversion test if unzip -a is unavailableĐoàn Trần Công Danh, Mar 19, 2020
  12. Jeff KingMar 19, 2020
  13. Danh DoanMar 20, 2020
  14. Jeff KingMar 20, 2020
  15. 4/6 t5616: use rev-parse instead to get HEAD's object_idĐoàn Trần Công Danh, Mar 19, 2020
  16. Jeff KingMar 19, 2020
  17. Danh DoanMar 20, 2020
  18. 5/6 t7063: use POSIX find(1) syntaxĐoàn Trần Công Danh, Mar 19, 2020
  19. Jeff KingMar 19, 2020
  20. Junio C HamanoMar 19, 2020
  21. Danh DoanMar 20, 2020
  22. Danh DoanMar 20, 2020
  23. Jeff KingMar 20, 2020
  24. Danh DoanMar 22, 2020
  25. Jeff KingMar 22, 2020
  26. 6/6 t4124: fix test for non-compliance diffĐoàn Trần Công Danh, Mar 19, 2020
  27. Jeff KingMar 19, 2020
  28. Junio C HamanoMar 19, 2020
  29. Jeff KingMar 20, 2020
  30. Danh DoanMar 20, 2020
  31. Jeff KingMar 20, 2020
  32. Jeff KingMar 19, 2020
  33. Danh DoanMar 20, 2020
  34. Jeff KingMar 20, 2020
  35. Jeff KingMar 19, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.