Added basic array test structure
[dbsrgits/DBM-Deep.git] / t / lib / TestBase.pm
CommitLineData
d0c365a5 1package TestBase;
2
3use 5.6.0;
4
5use strict;
6use warnings;
7
361dba51 8use Fcntl qw( :flock );
d0c365a5 9use File::Path ();
10use File::Temp ();
361dba51 11use Scalar::Util ();
d0c365a5 12
13use base 'Test::Class';
14
15use DBM::Deep;
16
361dba51 17sub setup_db : Test(startup) {
18 my $self = shift;
19
20 my $data = ($self->{data} ||= {});
21
22 my $r = Scalar::Util::reftype( $data );
23 my $type = $r eq 'HASH' ? DBM::Deep->TYPE_HASH : DBM::Deep->TYPE_ARRAY;
24
25 $self->{db} = DBM::Deep->new({
26 file => $self->new_file,
27 type => $type,
28 });
29
30 return;
31}
32
d0c365a5 33sub setup_dir : Test(startup) {
34 my $self = shift;
35
aa7ad9c2 36 $self->{workdir} ||= File::Temp::tempdir();
d0c365a5 37
38 return;
39}
40
41sub new_file {
42 my $self = shift;
43
aa7ad9c2 44 $self->setup_dir;
45
d0c365a5 46 my ($fh, $filename) = File::Temp::tempfile(
47 'tmpXXXX', DIR => $self->{workdir}, CLEANUP => 1,
48 );
49 flock( $fh, LOCK_UN );
50
51 return $filename;
52}
53
54sub remove_dir : Test(shutdown) {
55 my $self = shift;
56
57 File::Path::rmtree( $self->{workdir} );
58
59 return;
60}
61
621;
63__END__