Provided by: libtest-database-perl_1.11-2_all bug

NAME

       Test::Database::Driver - Base class for Test::Database drivers

SYNOPSIS

           package Test::Database::Driver::MyDatabase;
           use strict;
           use warnings;

           use Test::Database::Driver;
           our @ISA = qw( Test::Database::Driver );

           sub _version {
               my ($class) = @_;
               ...;
               return $version;
           }

           sub create_database {
               my ( $self ) = @_;
               ...;
               return $handle;
           }

           sub drop_database {
               my ( $self, $name ) = @_;
               ...;
           }

           sub databases {
               my ($self) = @_;
               ...;
               return @databases;
           }

DESCRIPTION

       "Test::Database::Driver" is a base class for creating "Test::Database" drivers.

METHODS

       The class provides the following methods:

       new( %args )
           Create a new "Test::Database::Driver" object.

           If called as "Test::Database::Driver->new()", requires a "driver" parameter to define
           the actual object class.

       make_handle()
           Create a new "Test::Database::Handle" object, attached to an existing database or to a
           newly created one.

           The decision whether to create a new database or not is made by
           "Test::Database::Driver" based on the information in the mapper.  See "TEMPORARY
           STORAGE ORGANIZATION" for details.

       make_dsn( %args )
           Return a Data Source Name based on the driver's DSN, with the key/value pairs
           contained in %args as additional parameters.

           This is typically used by "dsn()" to make a DSN for a specific database, based on the
           driver's DSN.

       name()
       dbd()
           The driver's short name (everything after "Test::Database::Driver::").

       base_dir()
           The directory where the driver should store all the files for its databases, if
           needed. Typically used by file-based database drivers.

       version()
           "version" object representing the version of the underlying database enginge.  This
           object is build with the return value of "_version()".

       version_string()
           Version string representing the version of the underlying database enginge.  This
           string is the actual return value of "_version()".

       dbd_version()
           The version of the DBD used to connect to the database engine, as returned by
           "VERSION()".

       driver_dsn()
           Return a driver Data Source Name, sufficient to connect to the database engine without
           specifying an actual database.

       username()
           Return the connection username.

       password()
           Return the connection password.

       connection_info()
           Return the connection information triplet ("driver_dsn", "username", "password").

       version_matches( $request )
           Return a boolean indicating if the driver's version matches the version constraints in
           the given request (see Test::Database documentation's section about requests).

       The class also provides a few helpful commands that may be useful for driver authors:

       available_dbname()
           Return an unused database name that can be used to create a new database for the
           driver.

       dsn( $dbname )
           Build a Data Source Name  for the database with the given $dbname, based on the
           driver's DSN.

WRITING A DRIVER FOR YOUR DATABASE OF CHOICE

       The SYNOPSIS contains a good template for writing a "Test::Database::Driver" class.

       Creating a driver requires writing the following methods:

       _version()
           Return the version of the underlying database engine.

       create_database( $name )
           Create the database for the corresponding DBD driver.

           Return a "Test::Database::Handle" in case of success, and nothing in case of failure
           to create the database.

       drop_database( $name )
           Drop the database named $name.

       Some methods have defaults implementations in "Test::Database::Driver", but those can be
       overridden in the derived class:

       is_filebased()
           Return a boolean value indicating if the database engine is file-based or not, i.e. if
           all the database information is stored in a file or a directory, and no external
           database server is needed.

       databases()
           Return the names of all existing databases for this driver as a list (the default
           implementation is only valid for file-based drivers).

TEMPORARY STORAGE ORGANIZATION

       Subclasses of "Test::Database::Driver" store useful information in the system's temporary
       directory, under a directory named Test-Database-$user ($user being the current user's
       name).

       That directory contains the following files:

       database files
           The database files and directories created by file-based drivers controlled by
           "Test::Database" are stored here, under names matching tdd_DRIVER_N, where DRIVER is
           the lowercased name of the driver and N is a number.

       the mapping.yml file
           A YAML file containing a "cwd()" / database name mapping, to enable a given test suite
           to receive the same database handles in all the test scripts that call the
           "Test::Database-"handles()> method.

AUTHOR

       Philippe Bruhat (BooK), "<book@cpan.org>"

COPYRIGHT

       Copyright 2008-2010 Philippe Bruhat (BooK), all rights reserved.

LICENSE

       This module is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself.