Blame t/08_extvar.t

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;