File Coverage

blib/lib/Test/Database/Handle.pm
Criterion Covered Total %
statement 28 28 100.0
branch 2 2 100.0
condition 4 6 66.6
subroutine 9 9 100.0
pod 3 3 100.0
total 46 48 95.8


line stmt bran cond sub pod time code
1             package Test::Database::Handle;
2             $Test::Database::Handle::VERSION = '1.113';
3 9     9   73867 use strict;
  9         20  
  9         348  
4 9     9   49 use warnings;
  9         19  
  9         251  
5 9     9   48 use Carp;
  9         18  
  9         640  
6 9     9   13115 use DBI;
  9         115943  
  9         655  
7              
8             # basic accessors
9             for my $attr (qw( dbd dsn username password name driver )) {
10 9     9   80 no strict 'refs';
  9         21  
  9         3190  
11 200     200   4744 *{$attr} = sub { return $_[0]{$attr} };
12             }
13              
14             sub new {
15 13     13 1 651317 my ( $class, %args ) = @_;
16              
17             exists $args{$_} or croak "$_ argument required"
18 13   66     423 for qw( dsn );
19              
20 11         133 my ( $scheme, $driver, $attr_string, $attr_hash, $driver_dsn )
21             = DBI->parse_dsn( $args{dsn} );
22              
23             # fix args
24 11         397 %args = (
25             %args,
26             dbd => $driver,
27             );
28              
29             # try to provide a Test::Database::Driver object
30 11 100       60 if ( !exists $args{driver} ) {
31 8         12 eval {
32 8         160 $args{driver} = "Test::Database::Driver::$driver"->new(
33             driver_dsn => $args{dsn},
34             username => $args{username},
35             password => $args{password},
36             );
37             };
38             }
39              
40 11         140 return bless { %args }, $class;
41             }
42              
43 4     4 1 23 sub connection_info { return @{ $_[0] }{qw( dsn username password )} }
  4         84  
44              
45             sub dbh {
46 4     4 1 5520 my ( $self, $attr ) = @_;
47 4   66     101 return $self->{dbh} ||= DBI->connect( $self->connection_info(), $attr );
48             }
49              
50             'IDENTITY';
51              
52             __END__