This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
116bbaac619c3583045d4c9d7259f177ad33a35c
[perl5.git] / lib / perl5db / de0.t
1 #!./perl -- -*- mode: cperl; cperl-indent-level: 4 -*-
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6     $ENV{PERL5LIB} = '../lib';    # so children will see it too
7     if ($^O eq 'VMS') {
8         print "1..0 # skip on $^O, no piped open\n";
9         exit 0;
10     }
11 }
12
13 use strict;
14
15 $| = 1;
16
17 my @prgs;
18
19 {
20     local $/;
21     @prgs = split "########\n", <DATA>;
22     close DATA;
23 }
24
25 use Test::More;
26
27 plan tests => scalar @prgs;
28
29 require "dumpvar.pl";
30
31 use File::Temp qw/tempfile/;
32
33 our ($tmpfh, $tmpfile) = tempfile();
34
35 $ENV{PERLDB_OPTS} = "TTY=0";
36 my($ornament1,$ornament2);
37 for (@prgs){
38     my($prog, $expected) = split(/\nEXPECT\n?/, $_);
39     open my $select, "| $^X -de0 2> $tmpfile" or die $!;
40     print $select $prog;
41     close $select;
42     my $got = do { open my($fh), $tmpfile or die; local $/; <$fh>; };
43     $got =~ s/^\s*Loading.*\nEditor.*\n\nEnter.*\n\nmain::\(-e:1\):\s0\n//;
44     unless (defined $ornament1) {
45         ($ornament1, $ornament2) = $got =~
46             /(.*?)0\s+'reserved example for calibrating the ornaments'\n(.*)/
47     }
48     $got =~ s/^\Q$ornament1\E//;
49     $got =~ s/\Q$ornament2\E\z//;
50     like($got, qr:$expected:i, $prog);
51 }
52
53 __END__
54 x "reserved example for calibrating the ornaments"
55 EXPECT
56 0  'reserved example for calibrating the ornaments'
57 ########
58 x "foo"
59 EXPECT
60 0  'foo'
61 ########
62 x "\x{100}"
63 EXPECT
64 0  '\\x\{0100\}'
65 ########
66 x *a
67 EXPECT
68 0  \*main::a
69 ########
70 x 1..3
71 EXPECT
72 0  1
73 1  2
74 2  3
75 ########
76 x +{1..4}
77 EXPECT
78 0\s+HASH\(0x[0-9a-f]+\)
79 \s+1 => 2
80 \s+3 => 4
81 ########