| Test-DBIx-Class documentation | Contained in the Test-DBIx-Class distribution. |
Test::DBIx::Class::SchemaManager::Trait::SQLite - The Default Role
The default Storage trait which provides the ability to deploy to a SQLite database. It also sets some %ENV and or configuration options that you can use to specify alternative database setup.
In addition to the documented %ENV settings, this Trait adds the following:
Defaults to ':memory:' to create an in memory database. Provide a string suitable for the "dbname=XXX" part of your connect string. Typically this should be the path to a location on the filesystem you want the datbase file to be stored.
Please note that this file will automatically be deleted unless you have specified to 'keep_db' in the config or via the $ENV{KEEP_DB} setting.
Also note that if you specify a path that already exists, we will automatically add the option 'force_drop_table', on the assumption you are roundtripping tests to the same database file. This way you can avoid having to specifically tell the system to delete the file each time.
John Napiorkowski <jjnapiork@cpan.org>
Tristan Pratt
Copyright 2009, John Napiorkowski <jjnapiork@cpan.org>
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Test-DBIx-Class documentation | Contained in the Test-DBIx-Class distribution. |
package Test::DBIx::Class::SchemaManager::Trait::SQLite; { use Moose::Role; use MooseX::Attribute::ENV; use Test::DBIx::Class::Types qw(ConnectInfo); sub dbname { my ($self) = @_; my $env_path = $ENV{DBNAME}; my $dsn = $self->{connect_info}{dsn}; if($env_path) { return $env_path; } elsif($dsn) { my ($dbname) = $dsn =~ m/dbi:[^:]+:dbname=(.+)/i; if($dbname) { return $dbname; } else { croak("Couldn't find dbname in sqlite dsn '$dsn'"); } } else { return ':memory:'; } } sub get_default_connect_info { my ($self) = @_; return ["dbi:SQLite:dbname=".$self->dbname,'','']; } before 'setup' => sub { my ($self) = @_; if(my $path = $ENV{DBNAME}) { if(-e $path) { $self->builder->ok(-w $path, "Path $path is accessible, forcing 'force_drop_table'"); $self->force_drop_table(1); } } }; after 'cleanup' => sub { my ($self) = @_; if(!$self->keep_db && lc $self->dbname ne ':memory:') { unlink $self->dbname; } }; } 1; __END__