#!/usr/bin/perl # Testing for the PPI::Document ->complete method use strict; BEGIN { no warnings 'once'; $| = 1; $PPI::XS_DISABLE = 1; $PPI::Lexer::X_TOKENIZER ||= $ENV{X_TOKENIZER}; } use Test::More; use Test::NoWarnings; use File::Spec::Functions ':ALL'; use PPI; # This test uses a series of ordered files, containing test code. # The letter after the number acts as a boolean yes/no answer to # "Is this code complete" my @files = find_files( catdir( 't', 'data', '27_complete' ) ); my $tests = (scalar(@files) * 2) + 2; plan( tests => $tests ); ##################################################################### # Resource Location ok( scalar(@files), 'Found at least one ->complete test file' ); foreach my $file ( @files ) { # Load the document my $document = PPI::Document->new( $file ); isa_ok( $document, 'PPI::Document' ); # Test if complete or not my $got = !! ($document->complete); my $expected = !! ($file =~ /\d+y\w+\.code$/); my $isnot = ($got == $expected) ? 'is' : 'is NOT'; is( $got, $expected, "File $file $isnot complete" ); } ##################################################################### # Support Functions sub find_files { my $testdir = shift; # Does the test directory exist? -e $testdir and -d $testdir and -r $testdir or die "Failed to find test directory $testdir"; # Find the .code test files opendir( TESTDIR, $testdir ) or die "opendir: $!"; my @perl = map { catfile( $testdir, $_ ) } sort grep { /\.(?:code|pm|t)$/ } readdir(TESTDIR); closedir( TESTDIR ) or die "closedir: $!"; return @perl; }