unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
* [PATCH] tests: t/run.perl: fix invocations with <10 tests
@ 2023-07-14  9:28 Eric Wong
  0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2023-07-14  9:28 UTC (permalink / raw)
  To: meta

We must account for the maximum index of an array to avoid
filling unused slots with `undef' from out-of-bounds reads.
This is needed to avoid undefined entry errors in workers when
fewer than 10 tests are run.  We'll also silence the message
when a single test is run.

While I was diagnosing this, I also noticed a small
simplification and optimization in our generation of $todo_buf
since I initially thought that was the cause of undefined
entry errors in the $todo arrayref.
---
 t/run.perl | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/t/run.perl b/t/run.perl
index f68dab60..9c8129d5 100755
--- a/t/run.perl
+++ b/t/run.perl
@@ -85,9 +85,13 @@ if ($shuffle) {
 	@tests = sort {
 		($t->{$b}->{elapsed} // 0) <=> ($t->{$a}->{elapsed} // 0)
 	} @tests;
-	say "# top 10 longest tests (`make check' regenerates)";
-	for (@tests[0..9]) {
-		printf "# %0.6f %s\n", $t->{$_}->{elapsed}, $_;
+	if (scalar(@tests) > 1) {
+		my $end = $#tests > 9 ? 9 : $#tests;
+		my $nr = $end + 1;
+		say "# top $nr longest tests (`make check' regenerates)";
+		for (grep defined, @tests[0..$end]) {
+			printf "# %0.6f %s\n", $t->{$_}->{elapsed}, $_;
+		}
 	}
 }
 
@@ -208,7 +212,7 @@ for (my $i = $repeat; $i != 0; $i--) {
 	# fill the queue before forking so children can start earlier
 	$wr->autoflush(1);
 	$wr->blocking(0);
-	my $todo_buf = join('', map { pack('I', $_) } (0..$#todo));
+	my $todo_buf = pack('I*', 0..$#todo);
 	my $woff = syswrite($wr, $todo_buf) // DIE "syswrite: $!";
 	substr($todo_buf, 0, $woff, '');
 	$eof = undef;

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2023-07-14  9:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-14  9:28 [PATCH] tests: t/run.perl: fix invocations with <10 tests Eric Wong

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).