more upgrade progress

This commit is contained in:
Graham Knop 2010-05-11 20:03:01 -05:00
parent adf3dbbe04
commit cf92cb5a4f
3 changed files with 31 additions and 24 deletions

View file

@ -8,37 +8,43 @@ use Path::Class::Dir ();
use Try::Tiny; use Try::Tiny;
use namespace::clean; use namespace::clean;
my $namespace = 0;
my $namespacePrefix = __PACKAGE__ . '::__ANON__::';
sub _runScript { sub _runScript {
my $file = shift; my $file = shift;
my @res; my @res;
my $err; my $err;
{ {
local $@;
local *_; local *_;
my $guard = WebGUI::Upgrade::Script->cleanup_guard; my $guard = WebGUI::Upgrade::Script->cleanup_guard;
# place this in a specific separate package to prevent namespace my $wanted = wantarray;
# pollution and to allow us to clean it up afterward eval sprintf(<<'END_CODE', $namespacePrefix . $namespace);
package # place this in a specific separate package to prevent namespace
WebGUI::Upgrade::File::pl::script; # pollution and to allow us to clean it up afterward
# maintain context package %s;
if (wantarray) { # maintain context
@res = do $file; if ($wanted) {
} @res = do $file;
elsif (defined wantarray) { }
$res[0] = do $file; elsif (defined $wanted) {
} $res[0] = do $file;
else { }
do $file; else {
} do $file;
# save error as soon as possible }
$err = $@; # save error as soon as possible
$err = $@;
END_CODE
} }
{ {
# delete entire namespace that script was run in # delete entire namespace that script was run in
no strict 'refs'; no strict 'refs';
delete ${'WebGUI::Upgrade::File::pl::'}{'script::'}; delete ${ $namespacePrefix }{ $namespace . '::' };
} }
die $@ $namespace++;
if $@; die $err
if $err;
return (wantarray ? @res : $res[0]); return (wantarray ? @res : $res[0]);
} }

View file

@ -23,7 +23,7 @@ sub import {
$extra->{into_level}++; $extra->{into_level}++;
} }
$caller_upgrade_file = (caller 0)[1]; $caller_upgrade_file = File::Spec->rel2abs( (caller 0)[1] );
feature->import(':5.10'); feature->import(':5.10');
strict->import; strict->import;
@ -44,7 +44,7 @@ sub _build_exports {
my $dbh; my $dbh;
my $collateral; my $collateral;
my $versionTag; my $versionTag;
my $upgrade_file = File::Spec->rel2abs( $caller_upgrade_file ); my $upgrade_file = $caller_upgrade_file;
my $subs; my $subs;

View file

@ -67,9 +67,10 @@ capture {
}; };
$upgrade->called_pos_ok(1, 'getCurrentVersion'); $upgrade->called_pos_ok(1, 'getCurrentVersion');
$upgrade->called_pos_ok(2, 'getCodeVersion');
SKIP: { SKIP: {
$upgrade->called_pos_ok(2, 'runUpgradeFile') || skip 'upgrade not run', 1; $upgrade->called_pos_ok(3, 'runUpgradeFile') || skip 'upgrade not run', 1;
my $upgradeFile = $upgrade->call_args_pos(2, 4); my $upgradeFile = $upgrade->call_args_pos(3, 4);
ok $upgradeFile =~ /\b00_simple\.pl$/, 'correct upgrade file run'; ok $upgradeFile =~ /\b00_simple\.pl$/, 'correct upgrade file run';
} }
@ -108,7 +109,7 @@ $upgrade->testUpgrade('config.pl');
{ {
my $sId = $upgrade->testUpgrade('session.pl'); my $sId = $upgrade->testUpgrade('session.pl');
ok +WebGUI::Session::Id::valid({}, $sId), 'valid session id generated'; ok +WebGUI::Session::Id->valid($sId), 'valid session id generated';
my $hasSession = $dbh->selectrow_array('SELECT COUNT(*) FROM userSession WHERE sessionId = ?', {}, $sId); my $hasSession = $dbh->selectrow_array('SELECT COUNT(*) FROM userSession WHERE sessionId = ?', {}, $sId);
ok !$hasSession, 'session properly closed'; ok !$hasSession, 'session properly closed';
} }