Fix test failure under SQL::Translator <= 0.07
[dbsrgits/DBIx-Class-UUIDColumns.git] / t / lib / DBIC / Test.pm
CommitLineData
a19bdae0 1# $Id$
2package DBIC::Test;
3use strict;
4use warnings;
5
6BEGIN {
7 # little trick by Ovid to pretend to subclass+exporter Test::More
8 use base qw/Test::Builder::Module Class::Accessor::Grouped/;
9 use Test::More;
10 use File::Spec::Functions qw/catfile catdir/;
11
12 @DBIC::Test::EXPORT = @Test::More::EXPORT;
13
14 __PACKAGE__->mk_group_accessors('inherited', qw/db_dir db_file/);
15};
16
17__PACKAGE__->db_dir(catdir('t', 'var'));
18__PACKAGE__->db_file('test.db');
19
20## cribbed and modified from DBICTest in DBIx::Class tests
21sub init_schema {
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);
27
28 eval 'use DBD::SQLite';
29 if ($@) {
30 BAIL_OUT('DBD::SQLite not installed');
31
32 return;
33 };
34
35 eval 'use DBIC::Test::Schema';
36 if ($@) {
37 BAIL_OUT("Could not load DBIC::Test::Schema: $@");
38
39 return;
40 };
41
42 unlink($db) if -e $db;
43 unlink($db . '-journal') if -e $db . '-journal';
44 mkdir($db_dir) unless -d $db_dir;
45
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'
51 ]);
52
53 __PACKAGE__->deploy_schema($schema, %args);
54 __PACKAGE__->populate_schema($schema, %args) unless $args{'no_populate'};
55
56 return $schema;
57};
58
59sub deploy_schema {
60 my ($self, $schema, %options) = @_;
61 my $eval = $options{'eval_deploy'};
62
7edcccc1 63 open IN, catfile('t', 'sql', 'test.sqlite.sql');
64 my $sql;
65 { local $/ = undef; $sql = <IN>; }
66 close IN;
67 eval {
68 ($schema->storage->dbh->do($_) || print "Error on SQL: $_\n") for split(/;\n/, $sql);
69 };
70 if ($@ && !$eval) {
71 die $@;
a19bdae0 72 };
73};
74
75sub clear_schema {
76 my ($self, $schema, %options) = @_;
77
78 foreach my $source ($schema->sources) {
79 $schema->resultset($source)->delete_all;
80 };
81};
82
83sub populate_schema {
84 my ($self, $schema, %options) = @_;
85
86 if ($options{'clear'}) {
87 $self->clear_schema($schema, %options);
88 };
89};
90
91sub is_uuid {
92 my $value = defined $_[0] ? shift : '';
93
94 return ($value =~ m/ ^[0-9a-f]{8}-
95 [0-9a-f]{4}-
96 [0-9a-f]{4}-
97 [0-9a-f]{4}-
98 [0-9a-f]{12}$
99 /ix);
100};
101
1021;