#!/usr/bin/perl
# Compare a large number of specific constructs
# with the expected Lexer dumps.
use strict;
BEGIN {
$| = 1;
$^W = 1;
}
# Files to clean up
my @cleanup = ();
END {
foreach ( @cleanup ) {
unlink $_ if -e $_;
}
}
#####################################################################
# Prepare
use Test::More tests => 17;
use Scalar::Util 'refaddr';
my $testdir = catdir('t', 'data');
# Does the test directory exist?
ok( (-e $testdir and -d $testdir and -r $testdir), "Test directory $testdir found" );
# Find the .code test files
opendir( TESTDIR, $testdir ) or die "opendir: $!";
my @files = map { catfile( $testdir, $_ ) } sort grep { /\.pm$/ } readdir(TESTDIR);
closedir( TESTDIR ) or die "closedir: $!";
ok( scalar @files, 'Found at least one .pm file' );
#####################################################################
# Testing
foreach my $input ( @files ) {
# Prepare
my $output = "$input.squish";
my $copy = "$input.copy";
my $copy2 = "$input.copy2";
push @cleanup, $copy;
#push @cleanup, $copy2;
ok( copy( $input, $copy ), "Copied $input to $copy" );
my $Original = new_ok( 'PPI::Document', [ $input ] );
my $Input = new_ok( 'PPI::Document', [ $input ] );
my $Output = new_ok( 'PPI::Document', [ $output ] );
# Process the file
my $rv = Perl::Squish->document( $Input );
isa_ok( $rv, 'PPI::Document' );
is( refaddr($rv), refaddr($Input), '->document returns original document' );
is_deeply( $Input, $Output, 'Transform works as expected' );
# Squish to another location
ok( Perl::Squish->file( $copy, $copy2 ), '->file returned true' );
my $Copy = new_ok( 'PPI::Document', [ $copy ] );
is_deeply( $Copy, $Original, 'targeted transform leaves original unchanged' );
my $Copy2 = new_ok( 'PPI::Document', [ $copy2 ] );
is_deeply( $Copy2, $Output, 'targeted transform works as expected' );
# Copy the file and process in-place
ok( Perl::Squish->file( $copy ),
'->file returned true' );
$Copy = new_ok( 'PPI::Document', [ $copy ] );
is_deeply( $Copy, $Output, 'In-place transform works as expected' );
}