Documentation The keyword group dies here Do not put a blank line in this here-doc EOF my $d = $c ."=cut\n"; exit 1; _END_ ----------

      'kgb5' => <<'----------',
# with -kgb, do not put blank in ternary
print "Starting\n"; # with -kgb, break after this line
my $A = "1";
my $B = "0";
my $C = "1";
my $D = "1";
my $result =
  $A
? $B
    ? $C
        ? "+A +B +C"
        : "+A +B -C"
    : "+A -B"
: "-A";
my $F = "0";
print "with -kgb, put blank above this line; result=$result\n";
----------

      'kgb_tight' => <<'----------',
# a variety of line types for testing -kgb
use strict;
use Test;
use Encode qw(from_to encode decode
encode_utf8 decode_utf8
find_encoding is_utf8);

use charnames qw(greek); our $targetdir = "/usr/local/doc/HTML/Perl";

local ( $tocfile, $loffile, $lotfile, $footfile, $citefile, $idxfile, $figure_captions, $table_captions, $footnotes, $citations, %font_size, %index, %done, $t_title, $t_author, $t_date, $t_address, $t_affil, $changed ); my @UNITCHECKs = B::unitcheck_av->isa("B::AV") ? B::unitcheck_av->ARRAY : ();

my @CHECKs = B::check_av->isa("B::AV") ? B::check_av->ARRAY : (); my $dna = Bio::LiveSeq::DNA->new( -seq => $dnasequence ); my $min = 1; my $max = length($dnasequence); my $T = $G->_strongly_connected;

my %R = $T->vertex_roots; my @C; # We're not calling the strongly_connected_components() # Do not separate this hanging side comment from previous

my $G = shift;

my $exon = Bio::LiveSeq::Exon->new( -seq => $dna, -start => $min, -end => $max, -strand => 1 ); my @inputs = ( 0777, 0700, 0470, 0407, 0433, 0400, 0430, 0403, 0111, 0100, 0110, 0101, 0731, 0713, 0317, 0371, 0173, 0137 ); my $impulse = ( 1 - $factor ) * ( 170 - $u ) + ( 350 / $u**0.65 + 500 / $u**5 ) * $factor; my $r = q{ pm_to_blib: $(TO_INST_PM) }; my $regcomp_re = "(?<routine>ckWARN(?:\\d+)?reg\\w*|vWARN\\d+|$regcomp_fail_re)"; my $position = List::MoreUtils::firstidx { refaddr $_ == $key }

my $alignprogram = "/usr/local/etc/bioinfo/fasta2/align -s /usr/local/etc/bioinfo/fasta2/idnaa.mat $fastafile1 $fastafile2 2>/dev/null | $grepcut" ; # ALIGN my $skel_name = ( exists( $xml_tree->{'name'} ) ) ? $xml_tree->{'name'} : ""; my $grp = GroupGetValues( $conf->{dbh}, $group_id );

my $adm_profile = ProfileGetUser( $conf->{dbh}, $grp->{id_admin}, $group_id ); my $harness = TAP::Harness->new( { verbosity => 1, formatter_class => "TAP::Formatter::Console" } ); require File::Temp;

require Time::HiRes;

my ( $fh, $filename ) = File::Temp::tempfile("Time-HiRes-utime-XXXXXXXXX"); use File::Basename qw[dirname]; my $dirname = dirname($filename); my $CUT = qr/\n=cut.*$EOP/;

my $pod_or_DATA = qr/ ^=(?:head[1-4]|item) .*? $CUT | ^=pod .*? $CUT | ^=for .*? $CUT | ^=begin .*? $CUT | ^__(DATA|END)__\r?\n.* /smx;

require Cwd; print "continuing\n"; exit 1; ----------

'kgbd' => <<'----------',
package A1::B2;

use strict;

require Exporter; use A1::Context;

use A1::Database; use A1::Bibliotek; use A1::Author; use A1::Title;

use vars qw($VERSION @ISA @EXPORT); $VERSION = 0.01; ----------

      'ternary3' => <<'----------',
# this previously caused trouble because of the = and =~
push( @aligns,
    ( ( $a = shift @a ) =~ /[^n]/ ) ? $a
  : (@isnum) ? 'n'
  :            'l' )
unless $opt_a;
----------
  };

  ####################################
  # BEGIN SECTION 3: Expected output #
  ####################################
  $rtests = {

      'else1.def' => {
          source => "else1",
          params => "def",
          expect => <<'#1...........',
# pad after 'if' when followed by 'elsif'
if    ( not defined $dir or not length $dir ) { $rslt = ''; }
elsif ( $dir =~ /^\$\([^\)]+\)\Z(?!\n)/s )    { $rslt = $dir; }
else                                          { $rslt = vmspath($dir); }
#1...........
      },

      'else2.def' => {
          source => "else2",
          params => "def",
          expect => <<'#2...........',
      # no pad after 'if' when followed by 'else'
      if ( $m = $g[$x][$y] ) { print $$m{v}; $$m{i}->() }
      else                   { print " " }
#2...........
      },

      'ternary3.def' => {
          source => "ternary3",
          params => "def",
          expect => <<'#3...........',
# this previously caused trouble because of the = and =~
push(
  @aligns,
  ( ( $a = shift @a ) =~ /[^n]/ ) ? $a
  : (@isnum)                      ? 'n'
  :                                 'l'
) unless $opt_a;
#3...........
      },

      'align17.def' => {
          source => "align17",
          params => "def",
          expect => <<'#4...........',
# align => even at broken sub block
my %opt = (
  'cc' => sub { $param::cachecom     = 1; },
  'cd' => sub { $param::cachedisable = 1; },
  'p'  => sub {
      $param::pflag = 1;
      $param::build = 0;
  }
);
#4...........
      },

      'align18.def' => {
          source => "align18",
          params => "def",
          expect => <<'#5...........',
#align '&&'
for ( $ENV{HTTP_USER_AGENT} ) {
  $page =
       /Mac/            && 'm/Macintrash.html'
    || /Win(dows)?NT/   && 'e/evilandrude.html'
    || /Win|MSIE|WebTV/ && 'm/MicroslothWindows.html'
    || /Linux/          && 'l/Linux.html'
    || /HP-UX/          && 'h/HP-SUX.html'
    || /SunOS/          && 's/ScumOS.html'
    || 'a/AppendixB.html';
}
#5...........
      },

      'kgb1.def' => {
          source => "kgb1",
          params => "def",
          expect => <<'#6...........',
# a variety of line types for testing -kgb
use strict;
use Test;
use Encode qw(from_to encode decode
encode_utf8 decode_utf8
find_encoding is_utf8);
use charnames qw(greek);
our $targetdir = "/usr/local/doc/HTML/Perl";
local (
  $tocfile,   $loffile,   $lotfile,         $footfile,
  $citefile,  $idxfile,   $figure_captions, $table_captions,
  $footnotes, $citations, %font_size,       %index,
  %done,      $t_title,   $t_author,        $t_date,
  $t_address, $t_affil,   $changed
);
my @UNITCHECKs =
  B::unitcheck_av->isa("B::AV")
? B::unitcheck_av->ARRAY
: ();
my @CHECKs = B::check_av->isa("B::AV") ? B::check_av->ARRAY : ();
my $dna    = Bio::LiveSeq::DNA->new( -seq => $dnasequence );
my $min    = 1;
my $max    = length($dnasequence);
my $T      = $G->_strongly_connected;
my %R      = $T->vertex_roots;
my @C;    # We're not calling the strongly_connected_components()
        # Do not separate this hanging side comment from previous
my $G    = shift;
my $exon = Bio::LiveSeq::Exon->new(
  -seq    => $dna,
  -start  => $min,
  -end    => $max,
  -strand => 1
);
my $octal_mode;
my @inputs = (
  0777, 0700, 0470, 0407, 0433, 0400, 0430, 0403, 0111, 0100,
  0110, 0101, 0731, 0713, 0317, 0371, 0173, 0137
);
my $impulse =
( 1 - $factor ) * ( 170 - $u ) + ( 350 / $u**0.65 + 500 / $u**5 ) * $factor;
my $r = q{
pm_to_blib: $(TO_INST_PM)
};
my $regcomp_re =
"(?<routine>ckWARN(?:\\d+)?reg\\w*|vWARN\\d+|$regcomp_fail_re)";
my $position = List::MoreUtils::firstidx {
  refaddr $_ == $key
}
my @exons      = ($exon);
my $fastafile2 = "/tmp/tmpfastafile2";
my $grepcut    = 'egrep -v "[[:digit:]]|^ *$|sequences" | cut -c8-';  # grep/cut
my $alignprogram =
"/usr/local/etc/bioinfo/fasta2/align -s /usr/local/etc/bioinfo/fasta2/idnaa.mat $fastafile1 $fastafile2 2>/dev/null | $grepcut"
;                                                                   # ALIGN
my $xml      = new Mioga::XML::Simple( forcearray => 1 );
my $xml_tree = $xml->XMLin($skel_file);
my $skel_name =
( exists( $xml_tree->{'name'} ) ) ? $xml_tree->{'name'} : "";
my $grp = GroupGetValues( $conf->{dbh}, $group_id );
my $adm_profile =
ProfileGetUser( $conf->{dbh}, $grp->{id_admin}, $group_id );
my $harness = TAP::Harness->new(
  { verbosity => 1, formatter_class => "TAP::Formatter::Console" } );
require File::Temp;
require Time::HiRes;
my ( $fh, $filename ) = File::Temp::tempfile("Time-HiRes-utime-XXXXXXXXX");
use File::Basename qw[dirname];
my $dirname     = dirname($filename);
my $CUT         = qr/\n=cut.*$EOP/;
my $pod_or_DATA = qr/
            ^=(?:head[1-4]|item) .*? $CUT
          | ^=pod .*? $CUT
          | ^=for .*? $CUT
          | ^=begin .*? $CUT
          | ^__(DATA|END)__\r?\n.*
          /smx;
require Cwd;
( my $boot = $self->{NAME} ) =~ s/:/_/g;
doit(
  sub { @E::ISA = qw/F/ },
  sub { @E::ISA = qw/D/;   @C::ISA = qw/F/ },
  sub { @C::ISA = qw//;    @A::ISA = qw/K/ },
  sub { @A::ISA = qw//;    @J::ISA = qw/F K/ },
  sub { @J::ISA = qw/F/;   @H::ISA = qw/K G/ },
  sub { @H::ISA = qw/G/;   @B::ISA = qw/B/ },
  sub { @B::ISA = qw//;    @K::ISA = qw/K J I/ },
  sub { @K::ISA = qw/J I/; @D::ISA = qw/A H B C/ },
);
my %extractor_for = (
  quotelike => [ $ws, $variable,    $id, { MATCH => \&extract_quotelike } ],
  regex     => [ $ws, $pod_or_DATA, $id, $exql ],
  string    => [ $ws, $pod_or_DATA, $id, $exql ],
  code      => [
      $ws, { DONT_MATCH => $pod_or_DATA },
      $variable, $id, { DONT_MATCH => \&extract_quotelike }
  ],
  code_no_comments => [
      { DONT_MATCH => $comment },
      $ncws, { DONT_MATCH => $pod_or_DATA },
      $variable, $id, { DONT_MATCH => \&extract_quotelike }
  ],
  executable             => [ $ws, { DONT_MATCH => $pod_or_DATA } ],
  executable_no_comments =>
    [ { DONT_MATCH => $comment }, $ncws, { DONT_MATCH => $pod_or_DATA } ],
  all => [ { MATCH => qr/(?s:.*)/ } ],
);
exit 1;
#6...........
      },

      'kgb1.kgb' => {
          source => "kgb1",
          params => "kgb",
          expect => <<'#7...........',
# a variety of line types for testing -kgb
use strict;
use Test;
use Encode qw(from_to encode decode
encode_utf8 decode_utf8
find_encoding is_utf8);
use charnames qw(greek);
our $targetdir = "/usr/local/doc/HTML/Perl";
local (
  $tocfile,   $loffile,   $lotfile,         $footfile,
  $citefile,  $idxfile,   $figure_captions, $table_captions,
  $footnotes, $citations, %font_size,       %index,
  %done,      $t_title,   $t_author,        $t_date,
  $t_address, $t_affil,   $changed
);

my @UNITCHECKs = B::unitcheck_av->isa("B::AV") ? B::unitcheck_av->ARRAY : (); my @CHECKs = B::check_av->isa("B::AV") ? B::check_av->ARRAY : (); my $dna = Bio::LiveSeq::DNA->new( -seq => $dnasequence ); my $min = 1; my $max = length($dnasequence); my $T = $G->_strongly_connected; my %R = $T->vertex_roots; my @C; # We're not calling the strongly_connected_components() # Do not separate this hanging side comment from previous my $G = shift; my $exon = Bio::LiveSeq::Exon->new( -seq => $dna, -start => $min, -end => $max, -strand => 1 ); my $octal_mode; my @inputs = ( 0777, 0700, 0470, 0407, 0433, 0400, 0430, 0403, 0111, 0100, 0110, 0101, 0731, 0713, 0317, 0371, 0173, 0137 ); my $impulse = ( 1 - $factor ) * ( 170 - $u ) + ( 350 / $u**0.65 + 500 / $u**5 ) * $factor; my $r = q{ pm_to_blib: $(TO_INST_PM) }; my $regcomp_re = "(?<routine>ckWARN(?:\\d+)?reg\\w*|vWARN\\d+|$regcomp_fail_re)"; my $position = List::MoreUtils::firstidx { refaddr $_ == $key } my @exons = ($exon); my $fastafile2 = "/tmp/tmpfastafile2"; my $grepcut = 'egrep -v "[[:digit:]]|^ *$|sequences" | cut -c8-'; # grep/cut my $alignprogram = "/usr/local/etc/bioinfo/fasta2/align -s /usr/local/etc/bioinfo/fasta2/idnaa.mat $fastafile1 $fastafile2 2>/dev/null | $grepcut" ; # ALIGN my $xml = new Mioga::XML::Simple( forcearray => 1 ); my $xml_tree = $xml->XMLin($skel_file); my $skel_name = ( exists( $xml_tree->{'name'} ) ) ? $xml_tree->{'name'} : ""; my $grp = GroupGetValues( $conf->{dbh}, $group_id ); my $adm_profile = ProfileGetUser( $conf->{dbh}, $grp->{id_admin}, $group_id ); my $harness = TAP::Harness->new( { verbosity => 1, formatter_class => "TAP::Formatter::Console" } );

require File::Temp; require Time::HiRes; my ( $fh, $filename ) = File::Temp::tempfile("Time-HiRes-utime-XXXXXXXXX"); use File::Basename qw[dirname]; my $dirname = dirname($filename); my $CUT = qr/\n=cut.*$EOP/; my $pod_or_DATA = qr/ ^=(?:head[1-4]|item) .*? $CUT | ^=pod .*? $CUT | ^=for .*? $CUT | ^=begin .*? $CUT | ^__(DATA|END)__\r?\n.* /smx; require Cwd;

( my $boot = $self->{NAME} ) =~ s/:/_/g; doit( sub { @E::ISA = qw/F/ }, sub { @E::ISA = qw/D/; @C::ISA = qw/F/ }, sub { @C::ISA = qw//; @A::ISA = qw/K/ }, sub { @A::ISA = qw//; @J::ISA = qw/F K/ }, sub { @J::ISA = qw/F/; @H::ISA = qw/K G/ }, sub { @H::ISA = qw/G/; @B::ISA = qw/B/ }, sub { @B::ISA = qw//; @K::ISA = qw/K J I/ }, sub { @K::ISA = qw/J I/; @D::ISA = qw/A H B C/ }, ); my %extractor_for = ( quotelike => [ $ws, $variable, $id, { MATCH => \&extract_quotelike } ], regex => [ $ws, $pod_or_DATA, $id, $exql ], string => [ $ws, $pod_or_DATA, $id, $exql ], code => [ $ws, { DONT_MATCH => $pod_or_DATA }, $variable, $id, { DONT_MATCH => \&extract_quotelike } ], code_no_comments => [ { DONT_MATCH => $comment }, $ncws, { DONT_MATCH => $pod_or_DATA }, $variable, $id, { DONT_MATCH => \&extract_quotelike } ], executable => [ $ws, { DONT_MATCH => $pod_or_DATA } ], executable_no_comments => [ { DONT_MATCH => $comment }, $ncws, { DONT_MATCH => $pod_or_DATA } ], all => [ { MATCH => qr/(?s:.*)/ } ], ); exit 1; #7........... },

    'kgb2.def' => {
        source => "kgb2",
        params => "def",
        expect => <<'#8...........',
# with -kgb, do no break after last my
sub next_sibling {
my $self     = shift;
my $parent   = $_PARENT{ refaddr $self } or return '';
my $key      = refaddr $self;
my $elements = $parent->{children};
my $position = List::MoreUtils::firstidx {
    refaddr $_ == $key
}
@$elements;
$elements->[ $position + 1 ] || '';
}

#8........... },

    'kgb2.kgb' => {
        source => "kgb2",
        params => "kgb",
        expect => <<'#9...........',
# with -kgb, do no break after last my
sub next_sibling {

my $self     = shift;
my $parent   = $_PARENT{ refaddr $self } or return '';
my $key      = refaddr $self;
my $elements = $parent->{children};
my $position = List::MoreUtils::firstidx {
    refaddr $_ == $key
}
@$elements;
$elements->[ $position + 1 ] || '';
}

#9........... },

      'kgb3.def' => {
          source => "kgb3",
          params => "def",
          expect => <<'#10...........',
#!/usr/bin/perl -w
use strict;                # with -kgb, no break after hash bang
our ( @Changed, $TAP );    # break after isolated 'our'
use File::Compare;
use Symbol;
use Text::Wrap();
use Text::Warp();
use Blast::IPS::MathUtils qw(
set_interpolation_points
table_row_interpolation
two_point_interpolation
);                         # with -kgb, break around isolated 'local' below
use Text::Warp();
local ($delta2print) =
( defined $size ) ? int( $size / 50 ) : $defaultdelta2print;
print "break before this line\n";
#10...........
      },

      'kgb3.kgb' => {
          source => "kgb3",
          params => "kgb",
          expect => <<'#11...........',
#!/usr/bin/perl -w
use strict;                # with -kgb, no break after hash bang
our ( @Changed, $TAP );    # break after isolated 'our'

use File::Compare; use Symbol; use Text::Wrap(); use Text::Warp(); use Blast::IPS::MathUtils qw( set_interpolation_points table_row_interpolation two_point_interpolation ); # with -kgb, break around isolated 'local' below use Text::Warp();

local ($delta2print) = ( defined $size ) ? int( $size / 50 ) : $defaultdelta2print;

print "break before this line\n"; #11........... },

'kgb4.def' => {
    source => "kgb4",
    params => "def",
    expect => <<'#12...........',
print "hello";    # with -kgb, break after this line
use strict;
use warnings;
use Test::More tests => 1;
use Pod::Simple::XHTML;
my $c = <<EOF;
=head1 Documentation
The keyword group dies here
Do not put a blank line in this here-doc
EOF
my $d = $c . "=cut\n";
exit 1;
_END_
#12...........
},

'kgb4.kgb' => {
    source => "kgb4",
    params => "kgb",
    expect => <<'#13...........',
print "hello";    # with -kgb, break after this line

use strict; use warnings; use Test::More tests => 1; use Pod::Simple::XHTML; my $c = <<EOF; =head1 Documentation The keyword group dies here Do not put a blank line in this here-doc EOF my $d = $c . "=cut\n"; exit 1; _END_ #13........... },

      'kgb5.def' => {
          source => "kgb5",
          params => "def",
          expect => <<'#14...........',
# with -kgb, do not put blank in ternary
print "Starting\n";    # with -kgb, break after this line
my $A = "1";
my $B = "0";
my $C = "1";
my $D = "1";
my $result =
  $A
? $B
    ? $C
        ? "+A +B +C"
        : "+A +B -C"
    : "+A -B"
: "-A";
my $F = "0";
print "with -kgb, put blank above this line; result=$result\n";
#14...........
      },

      'kgb5.kgb' => {
          source => "kgb5",
          params => "kgb",
          expect => <<'#15...........',
# with -kgb, do not put blank in ternary
print "Starting\n";    # with -kgb, break after this line

my $A = "1"; my $B = "0"; my $C = "1"; my $D = "1"; my $result = $A ? $B ? $C ? "+A +B +C" : "+A +B -C" : "+A -B" : "-A"; my $F = "0"; print "with -kgb, put blank above this line; result=$result\n"; #15........... },

'kgbd.def' => {
    source => "kgbd",
    params => "def",
    expect => <<'#16...........',
package A1::B2;

use strict;

require Exporter; use A1::Context;

use A1::Database; use A1::Bibliotek; use A1::Author; use A1::Title;

use vars qw($VERSION @ISA @EXPORT); $VERSION = 0.01; #16........... },

'kgbd.kgbd' => {
    source => "kgbd",
    params => "kgbd",
    expect => <<'#17...........',
package A1::B2;

use strict; require Exporter;

use A1::Context; use A1::Database; use A1::Bibliotek; use A1::Author; use A1::Title; use vars qw($VERSION @ISA @EXPORT);

$VERSION = 0.01; #17........... },

      'kgb_tight.def' => {
          source => "kgb_tight",
          params => "def",
          expect => <<'#18...........',
# a variety of line types for testing -kgb
use strict;
use Test;
use Encode qw(from_to encode decode
encode_utf8 decode_utf8
find_encoding is_utf8);

use charnames qw(greek); our $targetdir = "/usr/local/doc/HTML/Perl";

local ( $tocfile, $loffile, $lotfile, $footfile, $citefile, $idxfile, $figure_captions, $table_captions, $footnotes, $citations, %font_size, %index, %done, $t_title, $t_author, $t_date, $t_address, $t_affil, $changed ); my @UNITCHECKs = B::unitcheck_av->isa("B::AV") ? B::unitcheck_av->ARRAY : ();

my @CHECKs = B::check_av->isa("B::AV") ? B::check_av->ARRAY : (); my $dna = Bio::LiveSeq::DNA->new( -seq => $dnasequence ); my $min = 1; my $max = length($dnasequence); my $T = $G->_strongly_connected;

my %R = $T->vertex_roots; my @C; # We're not calling the strongly_connected_components() # Do not separate this hanging side comment from previous

my $G = shift;

my $exon = Bio::LiveSeq::Exon->new( -seq => $dna, -start => $min, -end => $max, -strand => 1 ); my @inputs = ( 0777, 0700, 0470, 0407, 0433, 0400, 0430, 0403, 0111, 0100, 0110, 0101, 0731, 0713, 0317, 0371, 0173, 0137 ); my $impulse = ( 1 - $factor ) * ( 170 - $u ) + ( 350 / $u**0.65 + 500 / $u**5 ) * $factor; my $r = q{ pm_to_blib: $(TO_INST_PM) }; my $regcomp_re = "(?<routine>ckWARN(?:\\d+)?reg\\w*|vWARN\\d+|$regcomp_fail_re)"; my $position = List::MoreUtils::firstidx { refaddr $_ == $key }

my $alignprogram = "/usr/local/etc/bioinfo/fasta2/align -s /usr/local/etc/bioinfo/fasta2/idnaa.mat $fastafile1 $fastafile2 2>/dev/null | $grepcut" ; # ALIGN my $skel_name = ( exists( $xml_tree->{'name'} ) ) ? $xml_tree->{'name'} : ""; my $grp = GroupGetValues( $conf->{dbh}, $group_id );

my $adm_profile = ProfileGetUser( $conf->{dbh}, $grp->{id_admin}, $group_id ); my $harness = TAP::Harness->new( { verbosity => 1, formatter_class => "TAP::Formatter::Console" } ); require File::Temp;

require Time::HiRes;

my ( $fh, $filename ) = File::Temp::tempfile("Time-HiRes-utime-XXXXXXXXX"); use File::Basename qw[dirname]; my $dirname = dirname($filename); my $CUT = qr/\n=cut.*$EOP/;

my $pod_or_DATA = qr/ ^=(?:head[1-4]|item) .*? $CUT | ^=pod .*? $CUT | ^=for .*? $CUT | ^=begin .*? $CUT | ^__(DATA|END)__\r?\n.* /smx;

require Cwd; print "continuing\n"; exit 1; #18........... },

    'gnu5.def' => {
        source => "gnu5",
        params => "def",
        expect => <<'#19...........',
    # side comments limit gnu type formatting with l=80; note extra comma
    push @tests, [
        "Lowest code point requiring 13 bytes to represent",    # 2**36
        "\xff\x80\x80\x80\x80\x80\x81\x80\x80\x80\x80\x80\x80",
        ($::is64bit) ? 0x1000000000 : -1,    # overflows on 32bit
      ],
      ;
#19...........
    },
};

my $ntests = 0 + keys %{$rtests};
plan tests => $ntests;
}

############### # EXECUTE TESTS ###############

foreach my $key ( sort keys %{$rtests} ) { my $output; my $sname = $rtests->{$key}->{source}; my $expect = $rtests->{$key}->{expect}; my $pname = $rtests->{$key}->{params}; my $source = $rsources->{$sname}; my $params = defined($pname) ? $rparams->{$pname} : ""; my $stderr_string; my $errorfile_string; my $err = Perl::Tidy::perltidy( source => \$source, destination => \$output, perltidyrc => \$params, argv => '', # for safety; hide any ARGV from perltidy stderr => \$stderr_string, errorfile => \$errorfile_string, # not used when -se flag is set ); if ( $err || $stderr_string || $errorfile_string ) { print STDERR "Error output received for test '$key'\n"; if ($err) { print STDERR "An error flag '$err' was returned\n"; ok( !$err ); } if ($stderr_string) { print STDERR "---------------------\n"; print STDERR "<<STDERR>>\n$stderr_string\n"; print STDERR "---------------------\n"; ok( !$stderr_string ); } if ($errorfile_string) { print STDERR "---------------------\n"; print STDERR "<<.ERR file>>\n$errorfile_string\n"; print STDERR "---------------------\n"; ok( !$errorfile_string ); } } else { if ( !is( $output, $expect, $key ) ) { my $leno = length($output); my $lene = length($expect); if ( $leno == $lene ) { print STDERR "#> Test '$key' gave unexpected output. Strings differ but both have length $leno\n"; } else { print STDERR "#> Test '$key' gave unexpected output. String lengths differ: output=$leno, expected=$lene\n"; } } } }