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,22 +8,26 @@ 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;
my $wanted = wantarray;
eval sprintf(<<'END_CODE', $namespacePrefix . $namespace);
# place this in a specific separate package to prevent namespace # place this in a specific separate package to prevent namespace
# pollution and to allow us to clean it up afterward # pollution and to allow us to clean it up afterward
package package %s;
WebGUI::Upgrade::File::pl::script;
# maintain context # maintain context
if (wantarray) { if ($wanted) {
@res = do $file; @res = do $file;
} }
elsif (defined wantarray) { elsif (defined $wanted) {
$res[0] = do $file; $res[0] = do $file;
} }
else { else {
@ -31,14 +35,16 @@ sub _runScript {
} }
# save error as soon as possible # save error as soon as possible
$err = $@; $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';
} }