]> git.vpit.fr Git - perl/modules/indirect.git/blob - t/47-stress-use.t
Preserve previous compilation errors on fatal indirect constructs
[perl/modules/indirect.git] / t / 47-stress-use.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 3 * (2 * 1);
7
8 my $n = 1_000;
9
10 sub linear {
11  my ($n, $force_use) = @_;
12
13  my @lines;
14  my $use = $force_use;
15  for (1 .. $n) {
16   my $stmt = $use ? 'use indirect;' : 'no indirect;';
17   $use = !$use unless defined $force_use;
18   push @lines, "{ $stmt }";
19  }
20
21  return '{ no indirect; ', @lines, '}';
22 }
23
24 for my $test ([ 1, 'always use' ], [ 0, 'always no' ], [ undef, 'mixed' ]) {
25  my ($force_use, $desc) = @$test;
26  my $code = join "\n", linear $n, $force_use;
27  my ($err, @warns);
28  {
29   local $SIG{__WARN__} = sub { push @warns, "@_" };
30   local $@;
31   eval $code;
32   $err = $@;
33  }
34  is $err,   '', "linear ($desc): no errror";
35  is @warns, 0,  "linear ($desc): no warnings";
36  diag $_ for @warns;
37 }