Commit | Line | Data |
d0c365a5 |
1 | package TestBase; |
2 | |
3 | use 5.6.0; |
4 | |
5 | use strict; |
6 | use warnings; |
7 | |
361dba51 |
8 | use Fcntl qw( :flock ); |
d0c365a5 |
9 | use File::Path (); |
10 | use File::Temp (); |
361dba51 |
11 | use Scalar::Util (); |
d0c365a5 |
12 | |
13 | use base 'Test::Class'; |
14 | |
15 | use DBM::Deep; |
16 | |
361dba51 |
17 | sub 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 |
33 | sub setup_dir : Test(startup) { |
34 | my $self = shift; |
35 | |
aa7ad9c2 |
36 | $self->{workdir} ||= File::Temp::tempdir(); |
d0c365a5 |
37 | |
38 | return; |
39 | } |
40 | |
41 | sub 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 | |
54 | sub remove_dir : Test(shutdown) { |
55 | my $self = shift; |
56 | |
57 | File::Path::rmtree( $self->{workdir} ); |
58 | |
59 | return; |
60 | } |
61 | |
62 | 1; |
63 | __END__ |