This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Avoid garbage in test output when running make minitest.
[perl5.git] / t / op / dbm.t
CommitLineData
37698ac1
NC
1#!./perl
2
3BEGIN {
4 chdir 't';
5 @INC = '../lib';
6 require './test.pl';
7
8 eval { require AnyDBM_File }; # not all places have dbm* functions
eb5a2f3c 9 skip_all("No dbm functions") if $@;
37698ac1
NC
10}
11
12plan tests => 4;
13
14# This is [20020104.007] "coredump on dbmclose"
15
16my $prog = <<'EOC';
17package Foo;
18sub new {
19 my $proto = shift;
20 my $class = ref($proto) || $proto;
21 my $self = {};
22 bless($self,$class);
23 my %LT;
24 dbmopen(%LT, "dbmtest", 0666) ||
25 die "Can't open dbmtest because of $!\n";
26 $self->{'LT'} = \%LT;
27 return $self;
28}
29sub DESTROY {
30 my $self = shift;
31 dbmclose(%{$self->{'LT'}});
32 1 while unlink 'dbmtest';
33 1 while unlink <dbmtest.*>;
34 print "ok\n";
35}
36package main;
37$test = Foo->new(); # must be package var
38EOC
39
40fresh_perl_is("require AnyDBM_File;\n$prog", 'ok', {}, 'explict require');
41fresh_perl_is($prog, 'ok', {}, 'implicit require');
42
43$prog = <<'EOC';
44@INC = ();
45dbmopen(%LT, "dbmtest", 0666);
461 while unlink 'dbmtest';
471 while unlink <dbmtest.*>;
48die "Failed to fail!";
49EOC
50
51fresh_perl_like($prog, qr/No dbm on this machine/, {},
52 'implicit require fails');
53fresh_perl_like('delete $::{"AnyDBM_File::"}; ' . $prog,
54 qr/No dbm on this machine/, {},
55 'implicit require and no stash fails');