]> git.vpit.fr Git - perl/modules/Variable-Magic.git/blobdiff - t/18-opinfo.t
Add support for METHOP ops
[perl/modules/Variable-Magic.git] / t / 18-opinfo.t
index c1d3961b3ce10bf466588b64db7bacc8452f0e0f..0293c645016b41a3124c047753b83063afc47cea 100644 (file)
@@ -3,23 +3,31 @@
 use strict;
 use warnings;
 
-use Test::More tests => 17 * (3 + 4) + 5;
+use Test::More tests => 17 * (3 + 4) + 5 + 1;
 
-use Config qw/%Config/;
+use Config qw<%Config>;
 
-use Variable::Magic qw/wizard cast dispell VMG_OP_INFO_NAME VMG_OP_INFO_OBJECT/;
+use Variable::Magic qw<wizard cast dispell VMG_OP_INFO_NAME VMG_OP_INFO_OBJECT>;
 
 sub Variable::Magic::TestPkg::foo { }
 
-my $aelem    = $] <= 5.008003 ? 'aelem' : 'aelemfast';
-my $aelem_op = $Config{useithreads} ? 'B::PADOP' : 'B::SVOP';
+my $is_5130_release = ("$]" == 5.013 && !$Config{git_describe}) ? 1 : 0;
+
+my $aelem     = "$]" <= 5.008_003 ? 'aelem'
+                                  : ("$]" < 5.013 or $is_5130_release)
+                                                   ? 'aelemfast'
+                                                   : 'sassign';
+my $aelemf    = ("$]" < 5.013 or $is_5130_release) ? 'aelemfast' : 'sassign';
+my $aelemf_op = $aelemf eq 'sassign'
+                   ? 'B::BINOP' : $Config{useithreads} ? 'B::PADOP' : 'B::SVOP';
+my $meth_op   = ("$]" < 5.021_005) ? 'B::SVOP' : 'B::METHOP';
 
 our @o;
 
 my @tests = (
  [ 'len', '@c',    'my @c',     'my $x = @c',      [ 'padav',   'B::OP'     ] ],
  [ 'get', '$c[0]', 'my @c',     'my $x = $c[0]',   [ $aelem,    'B::OP'     ] ],
- [ 'get', '$o[0]', 'local @o',  'my $x = $o[0]', [ 'aelemfast', $aelem_op   ] ],
+ [ 'get', '$o[0]', 'local @o',  'my $x = $o[0]',   [ $aelemf,   $aelemf_op  ] ],
  [ 'get', '$c',    'my $c = 1', '++$c',            [ 'preinc',  'B::UNOP'   ] ],
  [ 'get', '$c',    'my $c = 1', '$c ** 2',         [ 'pow',     'B::BINOP'  ] ],
  [ 'get', '$c',    'my $c = 1', 'my $x = $c',      [ 'sassign', 'B::BINOP'  ] ],
@@ -32,7 +40,7 @@ my @tests = (
                                                    [ 'bless',   'B::LISTOP' ] ],
  [ 'get', '$c',    'my $c = ""','$c =~ /x/',       [ 'match',   'B::PMOP'   ] ],
  [ 'get', '$c',    'my $c = "Variable::Magic::TestPkg"',
-                                '$c->foo()',  [ 'method_named', 'B::SVOP'   ] ],
+                                '$c->foo()',  [ 'method_named', $meth_op    ] ],
  [ 'get', '$c',    'my $c = ""','$c =~ y/x/y/',    [ 'trans',   'B::PVOP'   ] ],
  [ 'get', '$c',    'my $c = 1', '1 for 1 .. $c',
                                                  [ 'enteriter', 'B::LOOP'   ] ],
@@ -100,3 +108,13 @@ for (@tests) {
  eval { dispell $c, $wiz };
  is $@, '', "get dispell with out of bounds op_info doesn't croak";
 }
+
+{
+ local $@;
+ my $wiz = eval {
+  local $SIG{__WARN__} = sub { die @_ };
+  wizard op_info => "hlagh";
+ };
+ like $@, qr/^Argument "hlagh" isn't numeric in subroutine entry at \Q$0\E/,
+      'wizard(op_info => "text") throws numeric warnings';
+}