File: 70-subname.t

package info (click to toggle)
libdevel-nytprof-perl 6.12%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,552 kB
  • sloc: perl: 5,616; javascript: 4,033; ansic: 107; makefile: 23
file content (60 lines) | stat: -rw-r--r-- 1,504 bytes parent folder | download | duplicates (2)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
use strict;
use warnings;
# Tests CORE::GLOBAL::foo plus assorted data model methods

use Test::More;

use lib qw(t/lib);
use NYTProfTest;

eval "use Sub::Name 0.11; 1"
	or plan skip_all => "Sub::Name 0.11 or later required";

print "Sub::Name $Sub::Name::VERSION $INC{'Sub/Name.pm'}\n";

use Devel::NYTProf::Run qw(profile_this);

my $src_code = join("", <DATA>);

run_test_group( {
    extra_options => {
        start => 'init', compress => 1, leave => 0, stmts => 0, slowops => 0,
    },
    extra_test_count => 6,
    extra_test_code  => sub {
        my ($profile, $env) = @_;

        $profile = profile_this(
            src_code => $src_code,
            out_file => $env->{file},
            skip_sitecustomize => 1,
            #htmlopen => 1,
        );
        isa_ok $profile, 'Devel::NYTProf::Data';

        my $subs = $profile->subname_subinfo_map;

        my $sub = $subs->{'main::named'};
        ok $sub;
        is $sub->calls, 1;
        is $sub->subname, 'main::named';

        SKIP: {
            skip "Sub::Name 0.06 required for subname line numbers", 2
                if $Sub::Name::VERSION <= 0.06;
            is $sub->first_line, 3;
            is $sub->last_line,  3;
        }
    },
});

__DATA__
#!perl
use Sub::Name;
(subname 'named' => sub { print "sub called\n" })->();

my $longname = "sub34567890" x 10 x 4;
(subname $longname => sub { print "sub called\n" })->();

my $deepname = "sub345678::" x 10 x 4;
(subname $deepname => sub { print "sub called\n" })->();