Split on newline done in module
[Data-Peek.git] / t / 30_DDump-s.t
blob10af96194238f8fe8fa66a0419c676709dba2fa6
1 #!/usr/bin/perl
3 use strict;
4 use warnings;
6 # I would like more tests, but contents change over every perl version
7 use Test::More tests => 5;
9 use Data::Peek;
11 $Data::Peek::has_perlio = $Data::Peek::has_perlio = 0;
13 ok (1, "DDump () NOT using PerlIO");
15 my @tests;
16 { local $/ = "==\n";
17 chomp (@tests = <DATA>);
20 # Determine what newlines this perl generates in sv_peek
21 my @nl = ("\\n") x 2;
23 my $var = "";
25 foreach my $test (@tests) {
26 my ($in, $out) = split m/\n--\n/ => $test;
27 $in eq "" and next;
28 SKIP: {
29 eval "\$var = $in;";
30 my $dump = DDump ($var);
32 if ($in =~ m/20ac/) {
33 if ($] < 5.008) {
34 skip "No UTF8 in ancient perl", 1;
36 else {
37 @nl = ($dump =~ m/PV = 0x\w+ "([^"]+)".*"([^"]+)"/);
38 diag "# This perl dumps \\n as (@nl)";
39 # Catch differences in \n
40 $dump =~ s/"ab\Q$nl[0]\E(.*?)"ab\Q$nl[1]\E/"ab\\n$1"ab\\n/;
44 $dump =~ s/\b0x[0-9a-f]+\b/0x****/g;
45 $dump =~ s/\b(REFCNT =) [0-9]{4,}/$1 -1/g;
47 $dump =~ s/\bLEN = [1-7]\b/LEN = 8/; # aligned at long long?
49 $dump =~ s/\bPADBUSY\b,?//g if $] < 5.010;
51 $dump =~ s/\bUV = /IV = /g if $] < 5.008;
52 $dump =~ s/,?\bIsUV\b//g if $] < 5.008;
54 $in =~ s/[\s\n]+/ /g;
55 is ($dump, $out, "DDump ($in)");
61 __END__
62 undef
64 SV = PV(0x****) at 0x****
65 REFCNT = 1
66 FLAGS = (PADMY)
67 PV = 0
71 SV = PVIV(0x****) at 0x****
72 REFCNT = 1
73 FLAGS = (PADMY,IOK,pIOK)
74 IV = 0
75 PV = 0
79 SV = PVIV(0x****) at 0x****
80 REFCNT = 1
81 FLAGS = (PADMY,IOK,pIOK)
82 IV = 1
83 PV = 0
87 SV = PVIV(0x****) at 0x****
88 REFCNT = 1
89 FLAGS = (PADMY,POK,pPOK)
90 IV = 1
91 PV = 0x**** ""\0
92 CUR = 0
93 LEN = 8