Blame t/call.t

Packit 745572
use Config;
Packit 745572
BEGIN {
Packit 745572
    if ($ENV{PERL_CORE}) {
Packit 745572
        if ($Config{'extensions'} !~ m{\bFilter/Util/Call\b}) {
Packit 745572
            print "1..0 # Skip: Filter::Util::Call was not built\n";
Packit 745572
            exit 0;
Packit 745572
        }
Packit 745572
    }
Packit 745572
    unshift @INC, 't';
Packit 745572
    require 'filter-util.pl';
Packit 745572
}
Packit 745572
Packit 745572
use strict;
Packit 745572
use warnings;
Packit 745572
Packit 745572
use vars qw($Inc $Perl);
Packit 745572
Packit 745572
print "1..34\n";
Packit 745572
Packit 745572
$Perl = "$Perl -w";
Packit 745572
Packit 745572
use Cwd ;
Packit 745572
my $here = getcwd ;
Packit 745572
Packit 745572
Packit 745572
my $filename = "call$$.tst" ;
Packit 745572
my $filename2 = "call2$$.tst" ;
Packit 745572
my $filenamebin = "call$$.bin" ;
Packit 745572
my $module   = "MyTest" ;
Packit 745572
my $module2  = "MyTest2" ;
Packit 745572
my $module3  = "MyTest3" ;
Packit 745572
my $module4  = "MyTest4" ;
Packit 745572
my $module5  = "MyTest5" ;
Packit 745572
my $module6  = "MyTest6" ;
Packit 745572
my $nested   = "nested" ;
Packit 745572
my $block   = "block" ;
Packit 745572
my $redir   = $^O eq 'MacOS' ? "" : "2>&1;;
Packit 745572
Packit 745572
# Test error cases
Packit 745572
##################
Packit 745572
Packit 745572
# no filter function in module
Packit 745572
###############################
Packit 745572
Packit 745572
writeFile("${module}.pm", <
Packit 745572
package ${module} ;
Packit 745572
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
sub import { filter_add(bless []) }
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
my $a = `$Perl "-I." $Inc -e "use ${module} ;"  $redir` ;
Packit 745572
ok(1, (($? >>8) != 0 or (($^O eq 'MSWin32' || $^O eq 'MacOS' || $^O eq 'NetWare' || $^O eq 'mpeix') && $? != 0))) ;
Packit 745572
ok(2, $a =~ /^Can't locate object method "filter" via package "MyTest"/m) ;
Packit 745572
Packit 745572
# no reference parameter in filter_add
Packit 745572
######################################
Packit 745572
Packit 745572
writeFile("${module}.pm", <
Packit 745572
package ${module} ;
Packit 745572
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
sub import { filter_add() }
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc -e "use ${module} ;"  $redir` ;
Packit 745572
#warn "# $a\n";
Packit 745572
ok(3, (($? >>8) != 0
Packit 745572
       or (($^O eq 'MSWin32' || $^O eq 'MacOS' || $^O eq 'NetWare' || $^O eq 'mpeix')
Packit 745572
           && $? != 0))) ;
Packit 745572
#ok(4, $a =~ /^usage: filter_add\(ref\) at ${module}.pm/) ;
Packit 745572
my $errmsg = $Config{usecperl}
Packit 745572
  ? qr/^Not enough arguments for subroutine entry Filter::Util::Call::filter_add at ${module}\.pm line/m
Packit 745572
  : qr/^Not enough arguments for Filter::Util::Call::filter_add at ${module}\.pm line/m;
Packit 745572
$a =~ s/^(.*?\n).*$/$1/s; # only the first line
Packit 745572
if ($] < 5.007) {
Packit 745572
    if ($a =~ $errmsg) {
Packit 745572
        ok(4, 1);
Packit 745572
    } else {
Packit 745572
        ok(4, 1, "TODO");
Packit 745572
    }
Packit 745572
} else {
Packit 745572
    ok(4, $a =~ $errmsg, 'usage error')
Packit 745572
       or diag("The error was: ", $a);
Packit 745572
}
Packit 745572
Packit 745572
# non-error cases
Packit 745572
#################
Packit 745572
Packit 745572
Packit 745572
# a simple filter, using a closure
Packit 745572
#################
Packit 745572
Packit 745572
writeFile("${module}.pm", <
Packit 745572
package ${module} ;
Packit 745572
Packit 745572
EOM
Packit 745572
use Filter::Util::Call ;
Packit 745572
sub import {
Packit 745572
    filter_add(
Packit 745572
  	sub {
Packit 745572
Packit 745572
    	    my ($status) ;
Packit 745572
Packit 745572
    	    if (($status = filter_read()) > 0) {
Packit 745572
        	s/ABC/DEF/g
Packit 745572
    	    }
Packit 745572
    	    $status ;
Packit 745572
  	} ) ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
Packit 745572
use $module ;
Packit 745572
EOM
Packit 745572
Packit 745572
use Cwd ;
Packit 745572
$here = getcwd ;
Packit 745572
print "I am $here\n" ;
Packit 745572
print "some letters ABC\n" ;
Packit 745572
$y = "ABCDEF" ;
Packit 745572
print <
Packit 745572
Alphabetti Spagetti ($y)
Packit 745572
EOF
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(5, ($? >>8) == 0) ;
Packit 745572
ok(6, $a eq <
Packit 745572
I am $here
Packit 745572
some letters DEF
Packit 745572
Alphabetti Spagetti (DEFDEF)
Packit 745572
EOM
Packit 745572
Packit 745572
# a simple filter, not using a closure
Packit 745572
#################
Packit 745572
Packit 745572
writeFile("${module}.pm", <
Packit 745572
package ${module} ;
Packit 745572
Packit 745572
EOM
Packit 745572
use Filter::Util::Call ;
Packit 745572
sub import { filter_add(bless []) }
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
Packit 745572
    if (($status = filter_read()) > 0) {
Packit 745572
        s/ABC/DEF/g
Packit 745572
    }
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
Packit 745572
use $module ;
Packit 745572
EOM
Packit 745572
Packit 745572
use Cwd ;
Packit 745572
$here = getcwd ;
Packit 745572
print "I am $here\n" ;
Packit 745572
print "some letters ABC\n" ;
Packit 745572
$y = "ABCDEF" ;
Packit 745572
print <
Packit 745572
Alphabetti Spagetti ($y)
Packit 745572
EOF
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(7, ($? >>8) == 0) ;
Packit 745572
ok(8, $a eq <
Packit 745572
I am $here
Packit 745572
some letters DEF
Packit 745572
Alphabetti Spagetti (DEFDEF)
Packit 745572
EOM
Packit 745572
Packit 745572
Packit 745572
# nested filters
Packit 745572
################
Packit 745572
Packit 745572
Packit 745572
writeFile("${module2}.pm", <
Packit 745572
package ${module2} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
sub import { filter_add(bless []) }
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
Packit 745572
    if (($status = filter_read()) > 0) {
Packit 745572
        s/XYZ/PQR/g
Packit 745572
    }
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile("${module3}.pm", <
Packit 745572
package ${module3} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
sub import { filter_add(
Packit 745572
Packit 745572
    sub
Packit 745572
    {
Packit 745572
        my ($status) ;
Packit 745572
Packit 745572
        if (($status = filter_read()) > 0) {
Packit 745572
            s/Fred/Joe/g
Packit 745572
        }
Packit 745572
        $status ;
Packit 745572
    } ) ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile("${module4}.pm", <
Packit 745572
package ${module4} ;
Packit 745572
Packit 745572
use $module5 ;
Packit 745572
Packit 745572
print "I'm feeling used!\n" ;
Packit 745572
print "Fred Joe ABC DEF PQR XYZ\n" ;
Packit 745572
print "See you Today\n" ;
Packit 745572
1;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile("${module5}.pm", <
Packit 745572
package ${module5} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
sub import { filter_add(bless []) }
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
Packit 745572
    if (($status = filter_read()) > 0) {
Packit 745572
        s/Today/Tomorrow/g
Packit 745572
    }
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
Packit 745572
# two filters for this file
Packit 745572
use $module ;
Packit 745572
use $module2 ;
Packit 745572
require "$nested" ;
Packit 745572
use $module4 ;
Packit 745572
EOM
Packit 745572
Packit 745572
print "some letters ABCXYZ\n" ;
Packit 745572
$y = "ABCDEFXYZ" ;
Packit 745572
print <
Packit 745572
Fred likes Alphabetti Spagetti ($y)
Packit 745572
EOF
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($nested, <
Packit 745572
use $module3 ;
Packit 745572
EOM
Packit 745572
Packit 745572
print "This is another file XYZ\n" ;
Packit 745572
print <
Packit 745572
Where is Fred?
Packit 745572
EOF
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(9, ($? >>8) == 0) ;
Packit 745572
ok(10, $a eq <
Packit 745572
I'm feeling used!
Packit 745572
Fred Joe ABC DEF PQR XYZ
Packit 745572
See you Tomorrow
Packit 745572
This is another file XYZ
Packit 745572
Where is Joe?
Packit 745572
some letters DEFPQR
Packit 745572
Fred likes Alphabetti Spagetti (DEFDEFPQR)
Packit 745572
EOM
Packit 745572
Packit 745572
# using the module context (with a closure)
Packit 745572
###########################################
Packit 745572
Packit 745572
Packit 745572
writeFile("${module2}.pm", <
Packit 745572
package ${module2} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
sub import
Packit 745572
{
Packit 745572
    my ($type) = shift ;
Packit 745572
    my (@strings) = @_ ;
Packit 745572
Packit 745572
Packit 745572
    filter_add (
Packit 745572
Packit 745572
	sub
Packit 745572
	{
Packit 745572
    	    my ($status) ;
Packit 745572
    	    my ($pattern) ;
Packit 745572
Packit 745572
    	    if (($status = filter_read()) > 0) {
Packit 745572
                foreach $pattern (@strings)
Packit 745572
          	    { s/$pattern/PQR/g }
Packit 745572
    	    }
Packit 745572
Packit 745572
    	    $status ;
Packit 745572
	}
Packit 745572
	)
Packit 745572
Packit 745572
}
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
Packit 745572
use $module2 qw( XYZ KLM) ;
Packit 745572
use $module2 qw( ABC NMO) ;
Packit 745572
EOM
Packit 745572
Packit 745572
print "some letters ABCXYZ KLM NMO\n" ;
Packit 745572
$y = "ABCDEFXYZKLMNMO" ;
Packit 745572
print <
Packit 745572
Alphabetti Spagetti ($y)
Packit 745572
EOF
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(11, ($? >>8) == 0) ;
Packit 745572
ok(12, $a eq <
Packit 745572
some letters PQRPQR PQR PQR
Packit 745572
Alphabetti Spagetti (PQRDEFPQRPQRPQR)
Packit 745572
EOM
Packit 745572
Packit 745572
Packit 745572
Packit 745572
# using the module context (without a closure)
Packit 745572
##############################################
Packit 745572
Packit 745572
Packit 745572
writeFile("${module2}.pm", <
Packit 745572
package ${module2} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
sub import
Packit 745572
{
Packit 745572
    my ($type) = shift ;
Packit 745572
    my (@strings) = @_ ;
Packit 745572
Packit 745572
Packit 745572
    filter_add (bless [@strings])
Packit 745572
}
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
    my ($pattern) ;
Packit 745572
Packit 745572
    if (($status = filter_read()) > 0) {
Packit 745572
	foreach $pattern (@$self)
Packit 745572
          { s/$pattern/PQR/g }
Packit 745572
    }
Packit 745572
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
Packit 745572
use $module2 qw( XYZ KLM) ;
Packit 745572
use $module2 qw( ABC NMO) ;
Packit 745572
EOM
Packit 745572
Packit 745572
print "some letters ABCXYZ KLM NMO\n" ;
Packit 745572
$y = "ABCDEFXYZKLMNMO" ;
Packit 745572
print <
Packit 745572
Alphabetti Spagetti ($y)
Packit 745572
EOF
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(13, ($? >>8) == 0) ;
Packit 745572
ok(14, $a eq <
Packit 745572
some letters PQRPQR PQR PQR
Packit 745572
Alphabetti Spagetti (PQRDEFPQRPQRPQR)
Packit 745572
EOM
Packit 745572
Packit 745572
# multi line test
Packit 745572
#################
Packit 745572
Packit 745572
Packit 745572
writeFile("${module2}.pm", <
Packit 745572
package ${module2} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
sub import
Packit 745572
{
Packit 745572
    my ($type) = shift ;
Packit 745572
    my (@strings) = @_ ;
Packit 745572
Packit 745572
Packit 745572
    filter_add(bless [])
Packit 745572
}
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
Packit 745572
    # read first line
Packit 745572
    if (($status = filter_read()) > 0) {
Packit 745572
	chop ;
Packit 745572
	s/\r$//;
Packit 745572
	# and now the second line (it will append)
Packit 745572
        $status = filter_read() ;
Packit 745572
    }
Packit 745572
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
Packit 745572
use $module2  ;
Packit 745572
EOM
Packit 745572
print "don't cut me 
Packit 745572
in half\n" ;
Packit 745572
print 
Packit 745572
<
Packit 745572
appen
Packit 745572
ded
Packit 745572
EO
Packit 745572
F
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(15, ($? >>8) == 0) ;
Packit 745572
ok(16, $a eq <
Packit 745572
don't cut me in half
Packit 745572
appended
Packit 745572
EOM
Packit 745572
#print "# $a\n";
Packit 745572
Packit 745572
# Block test
Packit 745572
#############
Packit 745572
Packit 745572
writeFile("${block}.pm", <
Packit 745572
package ${block} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
sub import
Packit 745572
{
Packit 745572
    my ($type) = shift ;
Packit 745572
    my (@strings) = @_ ;
Packit 745572
Packit 745572
Packit 745572
    filter_add (bless [@strings] )
Packit 745572
}
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
    my ($pattern) ;
Packit 745572
Packit 745572
    filter_read(20)  ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
my $string = <<'EOM' ;
Packit 745572
print "hello mum\n" ;
Packit 745572
$x = 'me ' x 3 ;
Packit 745572
print "Who wants it?\n$x\n" ;
Packit 745572
EOM
Packit 745572
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
use $block ;
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(17, ($? >>8) == 0) ;
Packit 745572
ok(18, $a eq <
Packit 745572
hello mum
Packit 745572
Who wants it?
Packit 745572
me me me 
Packit 745572
EOM
Packit 745572
Packit 745572
# use in the filter
Packit 745572
####################
Packit 745572
Packit 745572
writeFile("${block}.pm", <
Packit 745572
package ${block} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
use Cwd ;
Packit 745572
Packit 745572
sub import
Packit 745572
{
Packit 745572
    my ($type) = shift ;
Packit 745572
    my (@strings) = @_ ;
Packit 745572
Packit 745572
Packit 745572
    filter_add(bless [@strings] )
Packit 745572
}
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
    my ($here) = quotemeta getcwd ;
Packit 745572
Packit 745572
    if (($status = filter_read()) > 0) {
Packit 745572
        s/DIR/$here/g
Packit 745572
    }
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
use $block ;
Packit 745572
EOM
Packit 745572
print "We are in DIR\n" ;
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(19, ($? >>8) == 0) ;
Packit 745572
ok(20, $a eq <
Packit 745572
We are in $here
Packit 745572
EOM
Packit 745572
Packit 745572
Packit 745572
# filter_del
Packit 745572
#############
Packit 745572
Packit 745572
writeFile("${block}.pm", <
Packit 745572
package ${block} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
sub import
Packit 745572
{
Packit 745572
    my ($type) = shift ;
Packit 745572
    my ($count) = @_ ;
Packit 745572
Packit 745572
Packit 745572
    filter_add(bless \$count )
Packit 745572
}
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
Packit 745572
    s/HERE/THERE/g
Packit 745572
        if ($status = filter_read()) > 0 ;
Packit 745572
Packit 745572
    -- $$self ;
Packit 745572
    filter_del() if $$self <= 0 ;
Packit 745572
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
use $block (3) ;
Packit 745572
EOM
Packit 745572
print "
Packit 745572
HERE I am
Packit 745572
I am HERE
Packit 745572
HERE today gone tomorrow\n" ;
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(21, ($? >>8) == 0) ;
Packit 745572
ok(22, $a eq <
Packit 745572
Packit 745572
THERE I am
Packit 745572
I am THERE
Packit 745572
HERE today gone tomorrow
Packit 745572
EOM
Packit 745572
Packit 745572
Packit 745572
# filter_read_exact
Packit 745572
####################
Packit 745572
Packit 745572
writeFile("${block}.pm", <
Packit 745572
package ${block} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
sub import
Packit 745572
{
Packit 745572
    my ($type) = shift ;
Packit 745572
Packit 745572
    filter_add(bless [] )
Packit 745572
}
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
Packit 745572
    if (($status = filter_read_exact(9)) > 0) {
Packit 745572
        s/HERE/THERE/g
Packit 745572
    }
Packit 745572
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($filenamebin, <
Packit 745572
use $block ;
Packit 745572
EOM
Packit 745572
print "
Packit 745572
HERE I am
Packit 745572
I'm HERE
Packit 745572
HERE today gone tomorrow\n" ;
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filenamebin  $redir` ;
Packit 745572
ok(23, ($? >>8) == 0) ;
Packit 745572
ok(24, $a eq <
Packit 745572
Packit 745572
HERE I am
Packit 745572
I'm THERE
Packit 745572
THERE today gone tomorrow
Packit 745572
EOM
Packit 745572
Packit 745572
{
Packit 745572
Packit 745572
# Check __DATA__
Packit 745572
####################
Packit 745572
Packit 745572
writeFile("${block}.pm", <
Packit 745572
package ${block} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
sub import
Packit 745572
{
Packit 745572
    my ($type) = shift ;
Packit 745572
Packit 745572
    filter_add([])
Packit 745572
}
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
Packit 745572
    if (($status = filter_read()) > 0) {
Packit 745572
        s/HERE/THERE/g
Packit 745572
    }
Packit 745572
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
use $block ;
Packit 745572
EOM
Packit 745572
print "HERE HERE\n";
Packit 745572
@a = <DATA>;
Packit 745572
print @a;
Packit 745572
__DATA__
Packit 745572
HERE I am
Packit 745572
I'm HERE
Packit 745572
HERE today gone tomorrow
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(25, ($? >>8) == 0) ;
Packit 745572
ok(26, $a eq <
Packit 745572
THERE THERE
Packit 745572
HERE I am
Packit 745572
I'm HERE
Packit 745572
HERE today gone tomorrow
Packit 745572
EOM
Packit 745572
Packit 745572
}
Packit 745572
Packit 745572
{
Packit 745572
Packit 745572
# Check __END__
Packit 745572
####################
Packit 745572
Packit 745572
writeFile("${block}.pm", <
Packit 745572
package ${block} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
sub import
Packit 745572
{
Packit 745572
    my ($type) = shift ;
Packit 745572
Packit 745572
    filter_add(bless [] )
Packit 745572
}
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
Packit 745572
    if (($status = filter_read()) > 0) {
Packit 745572
        s/HERE/THERE/g
Packit 745572
    }
Packit 745572
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($filename, <
Packit 745572
use $block ;
Packit 745572
EOM
Packit 745572
print "HERE HERE\n";
Packit 745572
@a = <DATA>;
Packit 745572
print @a;
Packit 745572
__END__
Packit 745572
HERE I am
Packit 745572
I'm HERE
Packit 745572
HERE today gone tomorrow
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename  $redir` ;
Packit 745572
ok(27, ($? >>8) == 0) ;
Packit 745572
ok(28, $a eq <
Packit 745572
THERE THERE
Packit 745572
HERE I am
Packit 745572
I'm HERE
Packit 745572
HERE today gone tomorrow
Packit 745572
EOM
Packit 745572
Packit 745572
}
Packit 745572
Packit 745572
{
Packit 745572
Packit 745572
# no without use
Packit 745572
# see Message-ID: <2002110621.427.A15377@ttul.org>
Packit 745572
####################
Packit 745572
Packit 745572
writeFile("${module6}.pm", <
Packit 745572
package ${module6} ;
Packit 745572
#use Filter::Simple;
Packit 745572
#FILTER {}
Packit 745572
use Filter::Util::Call;
Packit 745572
sub import { filter_add(sub{}) }
Packit 745572
sub unimport { filter_del() }
Packit 745572
1;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($filename2, <
Packit 745572
no ${module6} ;
Packit 745572
print "ok";
Packit 745572
EOM
Packit 745572
Packit 745572
my $str = $^O eq 'MacOS' ? "'ok'" : "q{ok}";
Packit 745572
my $a = `$Perl "-I." $Inc -e "no ${module6}; print $str"`;
Packit 745572
ok(29, ($? >>8) == 0);
Packit 745572
chomp( $a ) if $^O eq 'VMS';
Packit 745572
ok(30, $a eq 'ok');
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filename2`;
Packit 745572
ok(31, ($? >>8) == 0);
Packit 745572
chomp( $a ) if $^O eq 'VMS';
Packit 745572
ok(32, $a eq 'ok');
Packit 745572
Packit 745572
}
Packit 745572
Packit 745572
# error: filter_read_exact: size parameter must be > 0
Packit 745572
######################################
Packit 745572
Packit 745572
writeFile("${block}.pm", <
Packit 745572
package ${block} ;
Packit 745572
use Filter::Util::Call ;
Packit 745572
Packit 745572
EOM
Packit 745572
Packit 745572
sub import
Packit 745572
{
Packit 745572
    my ($type) = shift ;
Packit 745572
    filter_add(bless [] )
Packit 745572
}
Packit 745572
Packit 745572
sub filter
Packit 745572
{
Packit 745572
    my ($self) = @_ ;
Packit 745572
    my ($status) ;
Packit 745572
    if (($status = filter_read_exact(0)) > 0) {
Packit 745572
        s/HERE/THERE/g
Packit 745572
    }
Packit 745572
    $status ;
Packit 745572
}
Packit 745572
Packit 745572
1 ;
Packit 745572
EOM
Packit 745572
Packit 745572
writeFile($filenamebin, <
Packit 745572
use $block ;
Packit 745572
EOM
Packit 745572
print "
Packit 745572
HERE I am
Packit 745572
I'm HERE
Packit 745572
HERE today gone tomorrow\n" ;
Packit 745572
EOM
Packit 745572
Packit 745572
$a = `$Perl "-I." $Inc $filenamebin  $redir` ;
Packit 745572
ok(33, ($? >>8) != 0) ;
Packit 745572
ok(34, $a =~ /^filter_read_exact: size parameter must be > 0 at block.pm/) ;
Packit 745572
Packit 745572
Packit 745572
END {
Packit 745572
    1 while unlink $filename ;
Packit 745572
    1 while unlink $filename2 ;
Packit 745572
    1 while unlink $filenamebin ;
Packit 745572
    1 while unlink "${module}.pm" ;
Packit 745572
    1 while unlink "${module2}.pm" ;
Packit 745572
    1 while unlink "${module3}.pm" ;
Packit 745572
    1 while unlink "${module4}.pm" ;
Packit 745572
    1 while unlink "${module5}.pm" ;
Packit 745572
    1 while unlink "${module6}.pm" ;
Packit 745572
    1 while unlink $nested ;
Packit 745572
    1 while unlink "${block}.pm" ;
Packit 745572
}
Packit 745572
Packit 745572