8 use Test::Requires qw(Test::postgresql);
9 use Test::Requires qw(POSIX);
10 use File::Spec::Functions 'catdir', 'catfile';
11 use File::Path 'remove_tree';
12 use DBIx::Class::DeploymentHandler;
15 ok my $testdb = build_test_postgresql(),
18 my $dbh = DBI->connect("DBI:Pg:dbname=test;host=127.0.0.1;port=${\$testdb->port}",'postgres','');
21 use_ok 'DBICVersion_v1';
22 $DBICVersion::Schema1::VERSION = 1;
23 ok my $schema = DBICVersion::Schema1->connect(sub { $dbh }),
26 ok my $dbic_dh = build_dh($schema),
29 $dbic_dh->prepare_install;
33 is $dbic_dh->database_version, 1, 'correct db version';
37 use_ok 'DBICVersion_v2';
38 $DBICVersion::Schema2::VERSION = 2;
39 ok my $schema = DBICVersion::Schema2->connect(sub { $dbh }),
42 ok my $dbic_dh = build_dh($schema,1),
45 $dbic_dh->prepare_install();
46 $dbic_dh->prepare_upgrade();
47 $dbic_dh->prepare_downgrade();
50 ok -d catdir('t','share','var','pg-deploy','PostgreSQL','downgrade','2-1'),
51 'reasonable defaults properly creates a downgrade';
53 $testdb->stop(POSIX::SIGINT); ## We need this to stop Pg
57 DBIx::Class::DeploymentHandler->new({
58 script_directory => catdir('t','share','var','pg-deploy'),
60 databases => ['PostgreSQL']});
63 sub build_test_postgresql {
65 base_dir => catdir('t','share','var','pg'),
66 initdb_args => $Test::postgresql::Defaults{initdb_args},
67 postmaster_args => $Test::postgresql::Defaults{postmaster_args});
69 if(my $testdb = Test::postgresql->new(%config)) {
72 die $Test::postgresql::errstr;
76 sub make_perl_runfile {
80 catfile('t','share','var','pg-deploy','PostgreSQL', 'deploy', '1', '002-test.pl')
81 ) || do { $testdb->stop(POSIX::SIGINT); die "Cannot open: $!"};
83 print $perl_run <<'END';
93 remove_tree catdir('t','share','var','pg');
94 remove_tree catdir('t','share','var','pg-deploy');