File: code.t

package info (click to toggle)
libyaml-libyaml-perl 0.904.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 740 kB
  • sloc: ansic: 2,018; perl: 1,765; sh: 29; makefile: 4
file content (69 lines) | stat: -rw-r--r-- 1,505 bytes parent folder | download | duplicates (5)
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
61
62
63
64
65
66
67
68
69
use FindBin '$Bin';
use lib $Bin;
use TestYAMLTests tests => 5;

#-------------------------------------------------------------------------------
my $sub = sub { return "Hi.\n" };

my $yaml = <<'...';
--- !!perl/code '{ "DUMMY" }'
...

is Dump($sub), $yaml,
    "Dumping a code ref works produces DUMMY";

#-------------------------------------------------------------------------------
$sub = sub { return "Bye.\n" };
bless $sub, "Barry::White";

$yaml = <<'...';
--- !!perl/code:Barry::White |-
  {
      use warnings;
      use strict;
      return "Bye.\n";
  }
...

use B::Deparse;
if (new B::Deparse -> coderef2text ( sub { no strict; 1; use strict; 1; })
      =~ 'refs') {
    $yaml =~ s/use strict/use strict 'refs'/g;
}

$YAML::XS::DumpCode = 1;
is Dump($sub), $yaml,
    "Dumping a blessed code ref works (with B::Deparse)";

#-------------------------------------------------------------------------------
$sub = sub { return "Bye.\n" };
bless $sub, "Barry::White";

$yaml = <<'...';
--- !!perl/code:Barry::White '{ "DUMMY" }'
...

$YAML::XS::DumpCode = 0;
is Dump($sub), $yaml,
    "Dumping a blessed code ref works (with DUMMY again)";

$yaml = <<'...';
--- !!perl/code:Barry::White |-
  {
      use warnings;
      use strict;
      return "Bye.\n";
  }
...

$YAML::XS::LoadCode = 0;

$sub = Load($yaml);
my $return = $sub->();
is($return, undef, "Loaded dummy coderef");

$YAML::XS::LoadCode = 1;

$sub = Load($yaml);
$return = $sub->();
cmp_ok($return, 'eq', "Bye.\n", "Loaded coderef");