Re: [PATCH v2 5/9] chainlint.pl: check line numbers in expected output
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Aug 21, 2024, 07:00 UTC
- Message-ID
- <CAPig+cTACjostXvjJMnLEpgbnfat9cjM63pLXwNJm1=2P3gq8g@mail.gmail.com>
- In-Reply-To
- <20240710083755.GE2060601@coredump.intra.peff.net>
On Wed, Jul 10, 2024 at 4:37 AM Jeff King <peff@peff.net> wrote:
Show 38 quoted lines
> [...]
> It would be possible to do all of this in shell via the Makefile, but it
> gets a bit complicated (and requires a lot of extra processes). Instead,
> I've written a short perl script that generates the concatenated files
> (we already depend on perl, since chainlint.pl uses it). Incidentally,
> this improves a few other things:
> [...]
> diff --git a/t/chainlint-cat.pl b/t/chainlint-cat.pl
> @@ -0,0 +1,29 @@
> +#!/usr/bin/env perl
> +
> +my $outdir = shift;
> +open(my $tests, '>', "$outdir/tests")
> + or die "unable to open $outdir/tests: $!";
> +open(my $expect, '>', "$outdir/expect")
> + or die "unable to open $outdir/expect: $!";
> +
> +print $expect "# chainlint: $outdir/tests\n";
> +
> +my $offset = 0;
> +for my $script (@ARGV) {
> + print $expect "# chainlint: $script\n";
> +
> + open(my $expect_in, '<', "chainlint/$script.expect")
> + or die "unable to open chainlint/$script.expect: $!";
> + while (<$expect_in>) {
> + s/^\d+/$& + $offset/e;
> + print $expect $_;
> + }
> +
> + open(my $test_in, '<', "chainlint/$script.test")
> + or die "unable to open chainlint/$script.test: $!";
> + while (<$test_in>) {
> + /^# LINT: / and next;
> + print $tests $_;
> + $offset++;
> + }
> +}I'm surprised that we're not closing the two file handles opened on each iteration of this loop. Is that intentional? Or am I forgetting my Perl and they are somehow getting closed anyhow (for instance, by the <...> operator hitting EOF)?