The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use strict;
use warnings;

use Perl::Critic::TestUtils qw(pcritique);
use Test::More tests => 6;

my @ok = (
  q{ eval "require $string" },
  q{ eval "require $string; 19;" },
  q{ eval "use $module 1 qw(a b c); 1" },
);

my @not_ok = (
  q{ eval "system 'rm -rf /'" },
  q{ eval "require $string; die" },
  q{ eval 'require $string'   },
);

my $policy = 'Lax::ProhibitStringyEval::ExceptForRequire';

for my $test (@ok) {
  my $violation_count = pcritique($policy, \$test);
  is($violation_count, 0, "nothing wrong with C< $test >");
}

for my $test (@not_ok) {
  my $violation_count = pcritique($policy, \$test);
  is($violation_count, 1, "C< $test > is no good");
}