File: 60actions.t

package info (click to toggle)
libxs-parse-sublike-perl 0.37-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 516 kB
  • sloc: ansic: 944; perl: 930; sh: 6; makefile: 3
file content (36 lines) | stat: -rw-r--r-- 924 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/perl

use v5.14;
use warnings;

use Test2::V0;
use Sub::Util 'subname';

use lib "t";
use testcase "t::actions";

BEGIN { $^H{"t::actions/action"} = 1 }

{
   action name { "OK" }
   ok( name(), 'default actions parses like named sub' );
   ok( defined &name, '&name is on symbol table' );
   is( subname( \&name ), "main::name", '&name has subname' );
}

{
   my $code = action nameER { "OK" };
   ok( $code->(), 'RET_EXRP + REFGEN_ANONCODE behaves as anon sub' );
   ok( defined &nameER, '&nameER is on symbol table' );
   is( subname( $code ), "main::nameER", '$code has subname' );
}

{
   my $code = action nameiER { "OK" };
   ok( $code->(), 'Unininstalled CV is still invokable' );
   ok( !defined &nameiER, '&nameiER not on symbol table' );
   # CvNAME_HEK_set() doesn't work before perl 5.22
   is( subname( $code ), "main::nameiER", '$code still has a subname anyway' ) if $] >= 5.022;
}

done_testing;