# Copyright (c) 2006 Jeffrey I Cohen. All rights reserved.
#
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'
######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)
BEGIN { $| = 1; print "1..4\n"; }
END {print "not ok 1\n" unless $loaded;}
use Genezzo::GenDBI;
$loaded = 1;
print "ok 1\n";
######################### End of black magic.
# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):
use strict;
use warnings;
use File::Path;
use File::Spec;
my $TEST_COUNT;
$TEST_COUNT = 2;
my $dbinit = 1;
my $gnz_home = File::Spec->catdir("t", "gnz_home");
my $gnz_restore = File::Spec->catdir("t", "restore");
my $gnz_sql = File::Spec->catdir("t", "SQL");
my $gnz_log = File::Spec->catdir("t", "log");
#rmtree($gnz_home, 1, 1);
#mkpath($gnz_home, 1, 0755);
our $GZERR = sub {
my %args = (@_);
return
unless (exists($args{msg}));
# to process spooling to multiple files
my $outfile_h = $args{outfile_list} || undef;
my $warn = 0;
if (exists($args{severity}))
{
my $sev = uc($args{severity});
$sev = 'WARNING'
if ($sev =~ m/warn/i);
# don't print 'INFO' prefix
if ($args{severity} !~ m/info/i)
{
printf ("%s: ", $sev);
if (defined($outfile_h))
{
while (my ($kk, $vv) = each (%{$outfile_h}))
{
printf $vv ("%s: ", $sev);
}
}
$warn = 1;
}
else
{
if (exists($args{no_info}))
{
# don't print info if no_info set...
return;
}
}
}
print $args{msg};
# add a newline if necessary
print "\n" unless $args{msg}=~/\n$/;
# carp $args{msg}
# if (warnings::enabled() && $warn);
if (defined($outfile_h))
{
while (my ($kk, $vv) = each (%{$outfile_h}))
{
print $vv $args{msg};
# add a newline if necessary
print $vv "\n" unless $args{msg}=~/\n$/;
}
}
};
{
use Genezzo::TestSetup;
my $fb =
Genezzo::TestSetup::CreateOrRestoreDB(
gnz_home => $gnz_home,
restore_dir => $gnz_restore
);
unless (defined($fb))
{
not_ok ("could not create database");
exit 1;
}
ok();
$dbinit = 0;
}
{
use Genezzo::Util;
use Genezzo::TestSQL;
# my $dbh = Genezzo::GenDBI->connect($gnz_home, "NOUSER", "NOPASSWORD");
my $dbh = Genezzo::GenDBI->new(gnz_home => $gnz_home,
GZERR => $GZERR);
unless (defined($dbh))
{
not_ok ("could not find database");
exit 1;
}
ok();
my $dir_h;
if ( !opendir($dir_h, $gnz_sql) )
{
not_ok ("could not open $gnz_sql");
}
else
{
my $fnam;
while ($fnam = readdir($dir_h))
{
next
unless ($fnam =~ m/sql$/);
# test each sql file in the directory
my $sql_script =
# File::Spec->rel2abs(
File::Spec->catfile(
$gnz_sql,
$fnam
);
my $stat =
Genezzo::TestSQL::TestSQL(dbh => $dbh,
log_dir => $gnz_log,
sql_script => $sql_script);
unless (defined($stat))
{
not_ok("bad stat for $sql_script");
next;
}
if ($stat =~ m/no differences found/)
{
# ok();
next;
}
else
{
not_ok($stat);
}
} # end while
}
ok();
}
sub ok
{
print "ok $TEST_COUNT\n";
$TEST_COUNT++;
}
sub not_ok
{
my ( $message ) = @_;
print "not ok $TEST_COUNT # $message\n";
$TEST_COUNT++;
}
sub skip
{
my ( $message ) = @_;
print "ok $TEST_COUNT # skipped: $message\n";
$TEST_COUNT++;
}