X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FDBIC%2FTest.pm;h=e34e705ede49031cb13fa46b67c17fd66f93e448;hb=1b72f5db095d1e8b34aa1bbe7b03f9f0e540204b;hp=6f254a3b3087f473f51d0bd1ba106b7591f3a654;hpb=3469b2435b72e296830195a12e2b3e1bc5b3cc9d;p=dbsrgits%2FDBIx-Class-UUIDColumns.git diff --git a/t/lib/DBIC/Test.pm b/t/lib/DBIC/Test.pm index 6f254a3..e34e705 100644 --- a/t/lib/DBIC/Test.pm +++ b/t/lib/DBIC/Test.pm @@ -1,112 +1,112 @@ -# $Id: Test.pm 3236 2007-05-05 16:24:35Z claco $ -package DBIC::Test; -use strict; -use warnings; - -BEGIN { - # little trick by Ovid to pretend to subclass+exporter Test::More - use base qw/Test::Builder::Module Class::Accessor::Grouped/; - use Test::More; - use File::Spec::Functions qw/catfile catdir/; - - @DBIC::Test::EXPORT = @Test::More::EXPORT; - - __PACKAGE__->mk_group_accessors('inherited', qw/db_dir db_file/); -}; - -__PACKAGE__->db_dir(catdir('t', 'var')); -__PACKAGE__->db_file('test.db'); - -## cribbed and modified from DBICTest in DBIx::Class tests -sub init_schema { - my ($self, %args) = @_; - my $db_dir = $args{'db_dir'} || $self->db_dir; - my $db_file = $args{'db_file'} || $self->db_file; - my $namespace = $args{'namespace'} || 'DBIC::TestSchema'; - my $db = catfile($db_dir, $db_file); - - eval 'use DBD::SQLite'; - if ($@) { - BAIL_OUT('DBD::SQLite not installed'); - - return; - }; - - eval 'use DBIC::Test::Schema'; - if ($@) { - BAIL_OUT("Could not load DBIC::Test::Schema: $@"); - - return; - }; - - unlink($db) if -e $db; - unlink($db . '-journal') if -e $db . '-journal'; - mkdir($db_dir) unless -d $db_dir; - - my $dsn = 'dbi:SQLite:' . $db; - my $schema = DBIC::Test::Schema->compose_namespace($namespace)->connect($dsn); - $schema->storage->on_connect_do([ - 'PRAGMA synchronous = OFF', - 'PRAGMA temp_store = MEMORY' - ]); - - __PACKAGE__->deploy_schema($schema, %args); - __PACKAGE__->populate_schema($schema, %args) unless $args{'no_populate'}; - - return $schema; -}; - -sub deploy_schema { - my ($self, $schema, %options) = @_; - my $eval = $options{'eval_deploy'}; - - eval 'use SQL::Translator'; - if (!$@ && !$options{'no_deploy'}) { - eval { - $schema->deploy(); - }; - if ($@ && !$eval) { - die $@; - }; - } else { - open IN, catfile('t', 'sql', 'test.sqlite.sql'); - my $sql; - { local $/ = undef; $sql = ; } - close IN; - eval { - ($schema->storage->dbh->do($_) || print "Error on SQL: $_\n") for split(/;\n/, $sql); - }; - if ($@ && !$eval) { - die $@; - }; - }; -}; - -sub clear_schema { - my ($self, $schema, %options) = @_; - - foreach my $source ($schema->sources) { - $schema->resultset($source)->delete_all; - }; -}; - -sub populate_schema { - my ($self, $schema, %options) = @_; - - if ($options{'clear'}) { - $self->clear_schema($schema, %options); - }; -}; - -sub is_uuid { - my $value = defined $_[0] ? shift : ''; - - return ($value =~ m/ ^[0-9a-f]{8}- - [0-9a-f]{4}- - [0-9a-f]{4}- - [0-9a-f]{4}- - [0-9a-f]{12}$ - /ix); -}; - -1; +# $Id$ +package DBIC::Test; +use strict; +use warnings; + +BEGIN { + # little trick by Ovid to pretend to subclass+exporter Test::More + use base qw/Test::Builder::Module Class::Accessor::Grouped/; + use Test::More; + use File::Spec::Functions qw/catfile catdir/; + + @DBIC::Test::EXPORT = @Test::More::EXPORT; + + __PACKAGE__->mk_group_accessors('inherited', qw/db_dir db_file/); +}; + +__PACKAGE__->db_dir(catdir('t', 'var')); +__PACKAGE__->db_file('test.db'); + +## cribbed and modified from DBICTest in DBIx::Class tests +sub init_schema { + my ($self, %args) = @_; + my $db_dir = $args{'db_dir'} || $self->db_dir; + my $db_file = $args{'db_file'} || $self->db_file; + my $namespace = $args{'namespace'} || 'DBIC::TestSchema'; + my $db = catfile($db_dir, $db_file); + + eval 'use DBD::SQLite'; + if ($@) { + BAIL_OUT('DBD::SQLite not installed'); + + return; + }; + + eval 'use DBIC::Test::Schema'; + if ($@) { + BAIL_OUT("Could not load DBIC::Test::Schema: $@"); + + return; + }; + + unlink($db) if -e $db; + unlink($db . '-journal') if -e $db . '-journal'; + mkdir($db_dir) unless -d $db_dir; + + my $dsn = 'dbi:SQLite:' . $db; + my $schema = DBIC::Test::Schema->compose_namespace($namespace)->connect($dsn); + $schema->storage->on_connect_do([ + 'PRAGMA synchronous = OFF', + 'PRAGMA temp_store = MEMORY' + ]); + + __PACKAGE__->deploy_schema($schema, %args); + __PACKAGE__->populate_schema($schema, %args) unless $args{'no_populate'}; + + return $schema; +}; + +sub deploy_schema { + my ($self, $schema, %options) = @_; + my $eval = $options{'eval_deploy'}; + + eval 'use SQL::Translator'; + if (!$@ && !$options{'no_deploy'}) { + eval { + $schema->deploy(); + }; + if ($@ && !$eval) { + die $@; + }; + } else { + open IN, catfile('t', 'sql', 'test.sqlite.sql'); + my $sql; + { local $/ = undef; $sql = ; } + close IN; + eval { + ($schema->storage->dbh->do($_) || print "Error on SQL: $_\n") for split(/;\n/, $sql); + }; + if ($@ && !$eval) { + die $@; + }; + }; +}; + +sub clear_schema { + my ($self, $schema, %options) = @_; + + foreach my $source ($schema->sources) { + $schema->resultset($source)->delete_all; + }; +}; + +sub populate_schema { + my ($self, $schema, %options) = @_; + + if ($options{'clear'}) { + $self->clear_schema($schema, %options); + }; +}; + +sub is_uuid { + my $value = defined $_[0] ? shift : ''; + + return ($value =~ m/ ^[0-9a-f]{8}- + [0-9a-f]{4}- + [0-9a-f]{4}- + [0-9a-f]{4}- + [0-9a-f]{12}$ + /ix); +}; + +1;