Several cosmetic fixups, making next commit easier to read
[dbsrgits/DBIx-Class.git] / t / storage / deploy.t
CommitLineData
c0329273 1BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
cb551b07 2use DBIx::Class::Optional::Dependencies -skip_all_without => 'deploy';
3
4068e05f 4use strict;
5use warnings;
6
7use Test::More;
91d0c99f 8use Test::Exception;
1759f82f 9use Path::Class qw/dir/;
4068e05f 10
c0329273 11
4068e05f 12use DBICTest;
13
37b5ab51 14local $ENV{DBI_DSN};
15
1759f82f 16# this is how maint/gen_schema did it (connect() to force a storage
17# instance, but no conninfo)
18# there ought to be more code like this in the wild
19like(
20 DBICTest::Schema->connect->deployment_statements('SQLite'),
111364b3 21 qr/\bCREATE TABLE artist\b/i # ensure quoting *is* disabled
1759f82f 22);
91d0c99f 23
24lives_ok( sub {
25 my $parse_schema = DBICTest->init_schema(no_deploy => 1);
26 $parse_schema->deploy({},'t/lib/test_deploy');
27 $parse_schema->resultset("Artist")->all();
28}, 'artist table deployed correctly' );
29
08ac7648 30my $schema = DBICTest->init_schema( quote_names => 1 );
4068e05f 31
8d6b1478 32my $var = dir ("t/var/ddl_dir-$$");
33$var->mkpath unless -d $var;
4068e05f 34
076be7c4 35my $test_dir_1 = $var->subdir ('test1', 'foo', 'bar' );
8d6b1478 36$test_dir_1->rmtree if -d $test_dir_1;
08ac7648 37$schema->create_ddl_dir( [qw(SQLite MySQL)], 1, $test_dir_1 );
4068e05f 38
076be7c4 39ok( -d $test_dir_1, 'create_ddl_dir did a make_path on its target dir' );
4068e05f 40ok( scalar( glob $test_dir_1.'/*.sql' ), 'there are sql files in there' );
41
08ac7648 42my $less = $schema->clone;
43$less->unregister_source('BindType');
44$less->create_ddl_dir( [qw(SQLite MySQL)], 2, $test_dir_1, 1 );
45
46for (
47 [ SQLite => '"' ],
48 [ MySQL => '`' ],
49) {
50 my $type = $_->[0];
51 my $q = quotemeta($_->[1]);
52
53 for my $f (map { $test_dir_1->file("DBICTest-Schema-${_}-$type.sql") } qw(1 2) ) {
54 like scalar $f->slurp, qr/CREATE TABLE ${q}track${q}/, "Proper quoting in $f";
55 }
56
57 {
58 local $TODO = 'SQLT::Producer::MySQL has no knowledge of the mythical beast of quoting...'
59 if $type eq 'MySQL';
60
61 my $f = $test_dir_1->file("DBICTest-Schema-1-2-$type.sql");
62 like scalar $f->slurp, qr/DROP TABLE ${q}bindtype_test${q}/, "Proper quoting in diff $f";
63 }
64}
65
4ca1fd6f 66{
67 local $TODO = 'we should probably add some tests here for actual deployability of the DDL?';
68 ok( 0 );
4068e05f 69}
70
8d6b1478 71END {
72 $var->rmtree;
73}
74
4068e05f 75done_testing;