testing for all upgrade script subs
This commit is contained in:
parent
15ed4f97e4
commit
94baba20fc
28 changed files with 226 additions and 81 deletions
|
|
@ -3,21 +3,40 @@ use 5.010;
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
use WebGUI::Upgrade;
|
||||
use WebGUI::Upgrade ();
|
||||
use WebGUI::Upgrade::File::wgpkg ();
|
||||
use POSIX ();
|
||||
use Path::Class::Dir ();
|
||||
use Exporter qw(import);
|
||||
|
||||
sub _runCode {
|
||||
eval sprintf <<'END_CODE', $_[0], $_[1];
|
||||
package WebGUI::Upgrade::File::pl::script;
|
||||
use strict;
|
||||
use warnings;
|
||||
local @_;
|
||||
local $_;
|
||||
local *_runCode;
|
||||
local *run;
|
||||
use WebGUI::Upgrade::File::pl qw(:script);
|
||||
# line 1 "%s"
|
||||
%s
|
||||
;
|
||||
use namespace::clean;
|
||||
END_CODE
|
||||
}
|
||||
our @EXPORT_OK = qw(
|
||||
report
|
||||
done
|
||||
config
|
||||
session
|
||||
dbh
|
||||
version_tag
|
||||
rm_lib
|
||||
collateral
|
||||
import_package
|
||||
);
|
||||
our %EXPORT_TAGS = (
|
||||
script => \@EXPORT_OK,
|
||||
);
|
||||
|
||||
my $configFile;
|
||||
my $quiet;
|
||||
|
|
@ -26,15 +45,24 @@ my $file;
|
|||
my $session;
|
||||
my $config;
|
||||
my $dbh;
|
||||
my $collateral;
|
||||
my $versionTag;
|
||||
sub run {
|
||||
my $class = shift;
|
||||
($configFile, $version, $file, $quiet) = @_;
|
||||
($session, $config, $dbh, $versionTag) = undef;
|
||||
($session, $config, $dbh, $versionTag, $collateral) = undef;
|
||||
open my $fh, '<', $file;
|
||||
my $contents = do { local $/; <$fh> };
|
||||
close $fh;
|
||||
_runCode($file, $contents);
|
||||
|
||||
my @res;
|
||||
if (wantarray) {
|
||||
@res = _runCode($file, $contents);
|
||||
}
|
||||
else {
|
||||
$res[0] = _runCode($file, $contents);
|
||||
}
|
||||
|
||||
my $error = $@;
|
||||
if ($session) {
|
||||
require WebGUI::VersionTag;
|
||||
|
|
@ -46,7 +74,7 @@ sub run {
|
|||
}
|
||||
die $error
|
||||
if $error;
|
||||
return 1;
|
||||
return (wantarray ? @res : $res[0]);
|
||||
}
|
||||
|
||||
sub report {
|
||||
|
|
@ -114,5 +142,21 @@ sub rm_lib {
|
|||
}
|
||||
}
|
||||
|
||||
sub collateral () {
|
||||
if (! $collateral) {
|
||||
(my $vol, my $dir, my $shortname) = File::Spec->splitpath($file);
|
||||
$shortname =~ s/\.[^.]*$//;
|
||||
my $path = File::Spec->catpath($vol, File::Spec->catdir($dir, $shortname), '');
|
||||
$collateral = Path::Class::Dir->new($path);
|
||||
}
|
||||
return $collateral;
|
||||
}
|
||||
|
||||
sub import_package {
|
||||
my $fullPath = collateral->file(@_);
|
||||
require WebGUI::Upgrade::File::wgpkg;
|
||||
WebGUI::Upgrade::File::wgpkg->import_package(session, $fullPath);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
|
|
|||
|
|
@ -16,16 +16,30 @@ sub run {
|
|||
my $session = WebGUI::Session->open($configFile);
|
||||
$session->user({userId => 3});
|
||||
|
||||
# Make a storage location for the package
|
||||
my $storage = WebGUI::Storage->createTemp( $session );
|
||||
$storage->addFileFromFilesystem( $file );
|
||||
|
||||
(undef, undef, my $shortname) = File::Spec->splitpath($file);
|
||||
$shortname =~ s/\.[^.]*$//;
|
||||
|
||||
my $versionTag = WebGUI::VersionTag->getWorking($session);
|
||||
$versionTag->set({name => "Upgrade to $version - $shortname"});
|
||||
|
||||
my $package = $class->import_package($session, $file);
|
||||
|
||||
warn $versionTag->getId;
|
||||
$versionTag->commit;
|
||||
$session->var->end;
|
||||
$session->close;
|
||||
|
||||
return $package;
|
||||
}
|
||||
|
||||
sub import_package {
|
||||
my $class = shift;
|
||||
my ($session, $file) = @_;
|
||||
# Make a storage location for the package
|
||||
|
||||
my $storage = WebGUI::Storage->createTemp( $session );
|
||||
$storage->addFileFromFilesystem( $file );
|
||||
|
||||
# Import the package into the import node
|
||||
my $package = eval {
|
||||
WebGUI::Asset->getImportNode($session)->importPackage( $storage );
|
||||
|
|
@ -43,7 +57,7 @@ sub run {
|
|||
# Turn off the package flag, and set the default flag for templates added
|
||||
my $assetIds = $package->getLineage( ['self','descendants'] );
|
||||
for my $assetId ( @{ $assetIds } ) {
|
||||
my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId );
|
||||
my $asset = WebGUI::Asset->newById( $session, $assetId );
|
||||
if ( !$asset ) {
|
||||
print "Couldn't instantiate asset with ID '$assetId'. Please check package '$file' for corruption.\n";
|
||||
next;
|
||||
|
|
@ -54,12 +68,7 @@ sub run {
|
|||
}
|
||||
$asset->update( $properties );
|
||||
}
|
||||
|
||||
$versionTag->commit;
|
||||
$session->var->end;
|
||||
$session->close;
|
||||
|
||||
return 1;
|
||||
return $package;
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue