|
Packit Service |
82e721 |
# Before `make install' is performed this script should be runnable with
|
|
Packit Service |
82e721 |
# `make test'. After `make install' it should work as `perl test.pl'
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
######################### We start with some black magic to print on failure.
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
# Change 1..1 below to 1..last_test_to_print .
|
|
Packit Service |
82e721 |
# (It may become useful if the test is moved to ./t subdirectory.)
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
BEGIN { $| = 1; print "1..183\n"; }
|
|
Packit Service |
82e721 |
END {print "not ok 1\n" unless $loaded;}
|
|
Packit Service |
82e721 |
use Text::Balanced qw ( extract_variable );
|
|
Packit Service |
82e721 |
$loaded = 1;
|
|
Packit Service |
82e721 |
print "ok 1\n";
|
|
Packit Service |
82e721 |
$count=2;
|
|
Packit Service |
82e721 |
use vars qw( $DEBUG );
|
|
Packit Service |
82e721 |
sub debug { print "\t>>>",@_ if $DEBUG }
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
######################### End of black magic.
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
$cmd = "print";
|
|
Packit Service |
82e721 |
$neg = 0;
|
|
Packit Service |
82e721 |
while (defined($str = <DATA>))
|
|
Packit Service |
82e721 |
{
|
|
Packit Service |
82e721 |
chomp $str;
|
|
Packit Service |
82e721 |
if ($str =~ s/\A# USING://) { $neg = 0; $cmd = $str; next; }
|
|
Packit Service |
82e721 |
elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; }
|
|
Packit Service |
82e721 |
elsif (!$str || $str =~ /\A#/) { $neg = 0; next }
|
|
Packit Service |
82e721 |
$str =~ s/\\n/\n/g;
|
|
Packit Service |
82e721 |
debug "\tUsing: $cmd\n";
|
|
Packit Service |
82e721 |
debug "\t on: [$str]\n";
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
my @res;
|
|
Packit Service |
82e721 |
$var = eval "\@res = $cmd";
|
|
Packit Service |
82e721 |
debug "\t list got: [" . join("|",map {defined $_ ? $_ : '<undef>'} @res) . "]\n";
|
|
Packit Service |
82e721 |
debug "\t list left: [$str]\n";
|
|
Packit Service |
82e721 |
print "not " if (substr($str,pos($str)||0,1) eq ';')==$neg;
|
|
Packit Service |
82e721 |
print "ok ", $count++;
|
|
Packit Service |
82e721 |
print " ($@)" if $@ && $DEBUG;
|
|
Packit Service |
82e721 |
print "\n";
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
pos $str = 0;
|
|
Packit Service |
82e721 |
$var = eval $cmd;
|
|
Packit Service |
82e721 |
$var = "<undef>" unless defined $var;
|
|
Packit Service |
82e721 |
debug "\t scalar got: [$var]\n";
|
|
Packit Service |
82e721 |
debug "\t scalar left: [$str]\n";
|
|
Packit Service |
82e721 |
print "not " if ($str =~ '\A;')==$neg;
|
|
Packit Service |
82e721 |
print "ok ", $count++;
|
|
Packit Service |
82e721 |
print " ($@)" if $@ && $DEBUG;
|
|
Packit Service |
82e721 |
print "\n";
|
|
Packit Service |
82e721 |
}
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
__DATA__
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
# USING: extract_variable($str);
|
|
Packit Service |
82e721 |
# THESE SHOULD FAIL
|
|
Packit Service |
82e721 |
$a->;
|
|
Packit Service |
82e721 |
$a (1..3) { print $a };
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
# USING: extract_variable($str);
|
|
Packit Service |
82e721 |
$::obj;
|
|
Packit Service |
82e721 |
$obj->nextval;
|
|
Packit Service |
82e721 |
*var;
|
|
Packit Service |
82e721 |
*$var;
|
|
Packit Service |
82e721 |
*{var};
|
|
Packit Service |
82e721 |
*{$var};
|
|
Packit Service |
82e721 |
*var{cat};
|
|
Packit Service |
82e721 |
\&var;
|
|
Packit Service |
82e721 |
\&mod::var;
|
|
Packit Service |
82e721 |
\&mod'var;
|
|
Packit Service |
82e721 |
$a;
|
|
Packit Service |
82e721 |
$_;
|
|
Packit Service |
82e721 |
$a[1];
|
|
Packit Service |
82e721 |
$_[1];
|
|
Packit Service |
82e721 |
$a{cat};
|
|
Packit Service |
82e721 |
$_{cat};
|
|
Packit Service |
82e721 |
$a->[1];
|
|
Packit Service |
82e721 |
$a->{"cat"}[1];
|
|
Packit Service |
82e721 |
@$listref;
|
|
Packit Service |
82e721 |
@{$listref};
|
|
Packit Service |
82e721 |
$obj->nextval;
|
|
Packit Service |
82e721 |
$obj->_nextval;
|
|
Packit Service |
82e721 |
$obj->next_val_;
|
|
Packit Service |
82e721 |
@{$obj->nextval};
|
|
Packit Service |
82e721 |
@{$obj->nextval($cat,$dog)->{new}};
|
|
Packit Service |
82e721 |
@{$obj->nextval($cat?$dog:$fish)->{new}};
|
|
Packit Service |
82e721 |
@{$obj->nextval(cat()?$dog:$fish)->{new}};
|
|
Packit Service |
82e721 |
$ a {'cat'};
|
|
Packit Service |
82e721 |
$a::b::c{d}->{$e->()};
|
|
Packit Service |
82e721 |
$a'b'c'd{e}->{$e->()};
|
|
Packit Service |
82e721 |
$a'b::c'd{e}->{$e->()};
|
|
Packit Service |
82e721 |
$#_;
|
|
Packit Service |
82e721 |
$#array;
|
|
Packit Service |
82e721 |
$#{array};
|
|
Packit Service |
82e721 |
$var[$#var];
|
|
Packit Service |
82e721 |
$1;
|
|
Packit Service |
82e721 |
$11;
|
|
Packit Service |
82e721 |
$&;
|
|
Packit Service |
82e721 |
$`;
|
|
Packit Service |
82e721 |
$';
|
|
Packit Service |
82e721 |
$+;
|
|
Packit Service |
82e721 |
$*;
|
|
Packit Service |
82e721 |
$.;
|
|
Packit Service |
82e721 |
$/;
|
|
Packit Service |
82e721 |
$|;
|
|
Packit Service |
82e721 |
$,;
|
|
Packit Service |
82e721 |
$";
|
|
Packit Service |
82e721 |
$;;
|
|
Packit Service |
82e721 |
$#;
|
|
Packit Service |
82e721 |
$%;
|
|
Packit Service |
82e721 |
$=;
|
|
Packit Service |
82e721 |
$-;
|
|
Packit Service |
82e721 |
$~;
|
|
Packit Service |
82e721 |
$^;
|
|
Packit Service |
82e721 |
$:;
|
|
Packit Service |
82e721 |
$^L;
|
|
Packit Service |
82e721 |
$^A;
|
|
Packit Service |
82e721 |
$?;
|
|
Packit Service |
82e721 |
$!;
|
|
Packit Service |
82e721 |
$^E;
|
|
Packit Service |
82e721 |
$@;
|
|
Packit Service |
82e721 |
$$;
|
|
Packit Service |
82e721 |
$<;
|
|
Packit Service |
82e721 |
$>;
|
|
Packit Service |
82e721 |
$(;
|
|
Packit Service |
82e721 |
$);
|
|
Packit Service |
82e721 |
$[;
|
|
Packit Service |
82e721 |
$];
|
|
Packit Service |
82e721 |
$^C;
|
|
Packit Service |
82e721 |
$^D;
|
|
Packit Service |
82e721 |
$^F;
|
|
Packit Service |
82e721 |
$^H;
|
|
Packit Service |
82e721 |
$^I;
|
|
Packit Service |
82e721 |
$^M;
|
|
Packit Service |
82e721 |
$^O;
|
|
Packit Service |
82e721 |
$^P;
|
|
Packit Service |
82e721 |
$^R;
|
|
Packit Service |
82e721 |
$^S;
|
|
Packit Service |
82e721 |
$^T;
|
|
Packit Service |
82e721 |
$^V;
|
|
Packit Service |
82e721 |
$^W;
|
|
Packit Service |
82e721 |
${^WARNING_BITS};
|
|
Packit Service |
82e721 |
${^WIDE_SYSTEM_CALLS};
|
|
Packit Service |
82e721 |
$^X;
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
# THESE SHOULD FAIL
|
|
Packit Service |
82e721 |
$a->;
|
|
Packit Service |
82e721 |
@{$;
|
|
Packit Service |
82e721 |
$ a :: b :: c
|
|
Packit Service |
82e721 |
$ a ' b ' c
|
|
Packit Service |
82e721 |
|
|
Packit Service |
82e721 |
# USING: extract_variable($str,'=*');
|
|
Packit Service |
82e721 |
========$a;
|