7 # little trick by Ovid to pretend to subclass+exporter Test::More
8 use base qw/Test::Builder::Module Class::Accessor::Grouped/;
10 use File::Spec::Functions qw/catfile catdir/;
12 @DBIC::Test::EXPORT = @Test::More::EXPORT;
14 __PACKAGE__->mk_group_accessors('inherited', qw/db_dir db_file/);
17 __PACKAGE__->db_dir(catdir('t', 'var'));
18 __PACKAGE__->db_file('test.db');
20 ## cribbed and modified from DBICTest in DBIx::Class tests
22 my ($self, %args) = @_;
23 my $db_dir = $args{'db_dir'} || $self->db_dir;
24 my $db_file = $args{'db_file'} || $self->db_file;
25 my $namespace = $args{'namespace'} || 'DBIC::TestSchema';
26 my $db = catfile($db_dir, $db_file);
28 eval 'use DBD::SQLite';
30 BAIL_OUT('DBD::SQLite not installed');
35 eval 'use DBIC::Test::Schema';
37 BAIL_OUT("Could not load DBIC::Test::Schema: $@");
42 unlink($db) if -e $db;
43 unlink($db . '-journal') if -e $db . '-journal';
44 mkdir($db_dir) unless -d $db_dir;
46 my $dsn = 'dbi:SQLite:' . $db;
47 my $schema = DBIC::Test::Schema->compose_namespace($namespace)->connect($dsn);
48 $schema->storage->on_connect_do([
49 'PRAGMA synchronous = OFF',
50 'PRAGMA temp_store = MEMORY'
53 __PACKAGE__->deploy_schema($schema, %args);
54 __PACKAGE__->populate_schema($schema, %args) unless $args{'no_populate'};
60 my ($self, $schema, %options) = @_;
61 my $eval = $options{'eval_deploy'};
63 open IN, catfile('t', 'sql', 'test.sqlite.sql');
65 { local $/ = undef; $sql = <IN>; }
68 ($schema->storage->dbh->do($_) || print "Error on SQL: $_\n") for split(/;\n/, $sql);
76 my ($self, $schema, %options) = @_;
78 foreach my $source ($schema->sources) {
79 $schema->resultset($source)->delete_all;
84 my ($self, $schema, %options) = @_;
86 if ($options{'clear'}) {
87 $self->clear_schema($schema, %options);
92 my $value = defined $_[0] ? shift : '';
94 return ($value =~ m/ ^[0-9a-f]{8}-