diff --git a/lib/WebGUI/AssetPackage.pm b/lib/WebGUI/AssetPackage.pm index ab068d7f6..607eb1f00 100644 --- a/lib/WebGUI/AssetPackage.pm +++ b/lib/WebGUI/AssetPackage.pm @@ -161,6 +161,7 @@ sub importAssetData { WebGUI::Asset->loadModule( $class ); my %properties = %{ $data->{properties} }; + delete $properties{tagId}; if ($options->{inheritPermissions}) { delete $properties{ownerUserId}; delete $properties{groupIdView}; @@ -173,6 +174,13 @@ sub importAssetData { $properties{isDefault} = 1; } + if ($options->{clearPackageFlag}) { + $properties{isPackage} = 0; + } + if ($options->{setDefaultTemplate}) { + $properties{isDefault} = 1; + } + my $asset = eval { $class->new($session, $id, $version); }; if (! Exception::Class->caught()) { # update an existing revision diff --git a/lib/WebGUI/Upgrade/File/wgpkg.pm b/lib/WebGUI/Upgrade/File/wgpkg.pm index 07a22df5a..9eaf0c884 100644 --- a/lib/WebGUI/Upgrade/File/wgpkg.pm +++ b/lib/WebGUI/Upgrade/File/wgpkg.pm @@ -8,6 +8,7 @@ use WebGUI::Session; use WebGUI::Storage; use WebGUI::VersionTag; use File::Spec; +use Try::Tiny; sub run { my $class = shift; @@ -16,15 +17,13 @@ sub run { my $session = WebGUI::Session->open($configFile); $session->user({userId => 3}); + my $versionTag = WebGUI::VersionTag->getWorking($session); (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; @@ -41,8 +40,13 @@ sub import_package { $storage->addFileFromFilesystem( $file ); # Import the package into the import node - my $package = eval { - WebGUI::Asset->getImportNode($session)->importPackage( $storage ); + my $package = try { + my $node = WebGUI::Asset->getImportNode($session); + $node->importPackage( $storage, { + overwriteLatest => 1, + clearPackageFlag => 1, + setDefaultTemplate => 1, + } ); }; $storage->delete; diff --git a/t/Upgrade.t b/t/Upgrade.t index 4a0770163..194f95b2b 100644 --- a/t/Upgrade.t +++ b/t/Upgrade.t @@ -59,12 +59,10 @@ is_deeply } $upgrade->set_true('runUpgradeFile'); -my $stdout; -my $stderr; - -my $res; -capture { $res = $upgrade->upgradeSites }; -ok $res, 'upgradeSites runs'; +capture { + my $res = $upgrade->upgradeSites; + ok $res, 'upgradeSites runs'; +}; $upgrade->called_pos_ok(1, 'getCurrentVersion'); $upgrade->called_pos_ok(2, 'runUpgradeFile'); @@ -80,13 +78,17 @@ $upgrade->mock(testUpgrade => sub { $self->runUpgradeFile($configFile, '8.3.0', collateral('Upgrade', $file), @_); }); -$stdout = capture { $upgrade->testUpgrade('output.pl') }; -ok $stdout =~ 'Simple Output', 'report command functions correctly'; -ok $stdout =~ 'Done', 'done command functions correctly'; +{ + my $stdout = capture { $upgrade->testUpgrade('output.pl') }; + ok $stdout =~ 'Simple Output', 'report command functions correctly'; + ok $stdout =~ 'Done', 'done command functions correctly'; +} -$stdout = capture { $upgrade->testUpgrade('output.pl', 1) }; -ok $stdout !~ 'Simple Output', 'quiet flag silences report command'; -ok $stdout !~ 'Done', 'quiet flag silences done command'; +{ + my $stdout = capture { $upgrade->testUpgrade('output.pl', 1) }; + ok $stdout !~ 'Simple Output', 'quiet flag silences report command'; + ok $stdout !~ 'Done', 'quiet flag silences done command'; +} ok !try { $upgrade->testUpgrade('die.pl'); 1 }, 'Error on failing upgrade'; ok !try { $upgrade->testUpgrade('strict-failure.pl'); 1 }, 'strict enabled in upgrades'; @@ -146,10 +148,20 @@ END_PM my $package = $upgrade->testUpgrade('test-template.wgpkg'); isa_ok $package, 'WebGUI::Asset::Template'; my $vtId = $package->get('tagId'); - warn $vtId; my $vt = WebGUI::VersionTag->new($session, $vtId); addToCleanup($vt); - is $vt->get('name'), 'Upgrade to 8.3.0 - test-snippet', 'package import names version tag correctly'; + is $vt->get('name'), 'Upgrade to 8.3.0 - test-template', 'package import names version tag correctly'; +} + +{ + my $stdout = capture { + $upgrade->testUpgrade('select.sql'); + }; + my @lines = split /[\r\n]+/, $stdout; + my $dateApplied = $lines[1]; + + my $dbdateApplied = $dbh->selectrow_array('SELECT dateApplied FROM webguiVersion ORDER BY dateApplied DESC LIMIT 1'); + is $dateApplied, $dbdateApplied, 'SQL script run against database properly'; } done_testing; diff --git a/t/supporting_collateral/Upgrade/select.sql b/t/supporting_collateral/Upgrade/select.sql new file mode 100644 index 000000000..0cbaddaed --- /dev/null +++ b/t/supporting_collateral/Upgrade/select.sql @@ -0,0 +1 @@ +SELECT dateApplied FROM webguiVersion ORDER BY dateApplied DESC LIMIT 1 diff --git a/t/supporting_collateral/Upgrade/test-template.wgpkg b/t/supporting_collateral/Upgrade/test-template.wgpkg index 4e2f8a442..95350bc5c 100644 Binary files a/t/supporting_collateral/Upgrade/test-template.wgpkg and b/t/supporting_collateral/Upgrade/test-template.wgpkg differ