@@ -, +, @@ the current version in installer/data/mysql/updatedatabase.pl has a version number one greater than the version of Koha you have installed. installer. and has displayed the log message: "Upgrade to 3.11.00.XXX done (Bug 9191: You should see this)" but not the log message: "Upgrade to [version number] done (Bug 9191: You shouldn't see this)" --- C4/Context.pm | 12 ++++++++++ installer/data/mysql/updatedatabase.pl | 41 ++++++++++++++++++++++++++++++++ t/db_dependent/Context.t | 17 +++++++++++++ 3 files changed, 70 insertions(+) --- a/C4/Context.pm +++ a/C4/Context.pm @@ -220,6 +220,18 @@ sub KOHAVERSION { do $cgidir."/kohaversion.pl" || die "NO $cgidir/kohaversion.pl"; return kohaversion(); } + +=head2 final_linear_version + +Returns the version number of the final update to run in updatedatabase.pl. +This number is equal to the version in kohaversion.pl + +=cut + +sub final_linear_version { + return KOHAVERSION; +} + =head2 read_config_file Reads the specified Koha config file. --- a/installer/data/mysql/updatedatabase.pl +++ a/installer/data/mysql/updatedatabase.pl @@ -6114,6 +6114,18 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.11.00.005"; +if ( CheckVersion($DBversion) ) { + print "Upgrade to $DBversion done (Bug 9191: You shouldn't see this)\n"; + SetVersion($DBversion); +} + +$DBversion = "3.11.00.XXX"; +if ( CheckVersion($DBversion) ) { + print "Upgrade to $DBversion done (Bug 9191: You should see this)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) @@ -6195,4 +6207,33 @@ sub SetVersion { } C4::Context::clear_syspref_cache(); # invalidate cached preferences } + +=head2 CheckVersion + +Check whether a given update should be run when passed the proposed version +number. The update will always be run if the proposed version is greater +than the current database version and less than or equal to the version in +kohaversion.pl. The update is also run if the version contains XXX, though +this behavior will be changed following the adoption of non-linear updates +as implemented in bug 7167. + +=cut + +sub CheckVersion { + my ($proposed_version) = @_; + my $version_number = TransformToNum($proposed_version); + + # The following line should be deleted when bug 7167 is pushed + return 1 if ( $proposed_version =~ m/XXX/ ); + + if ( C4::Context->preference("Version") < $version_number + && $version_number <= TransformToNum( C4::Context->final_linear_version ) ) + { + return 1; + } + else { + return 0; + } +} + exit; --- a/t/db_dependent/Context.t +++ a/t/db_dependent/Context.t @@ -23,6 +23,11 @@ ok($koha = C4::Context->new, 'C4::Context->new'); ok($dbh = C4::Context->dbh(), 'Getting dbh from C4::Context'); ok($ret = C4::Context->KOHAVERSION, ' (function) KOHAVERSION = ' . ($ret||'')); ok($ret = $koha->KOHAVERSION, ' $koha->KOHAVERSION = ' . ($ret||'')); +ok( + TransformVersionToNum( C4::Context->final_linear_version ) <= + TransformVersionToNum( C4::Context->KOHAVERSION ), + 'Final linear version is less than or equal to kohaversion.pl' +); my @keys = keys %$koha; diag("Number of keys in \%\$koha: " . scalar @keys); our $width = 0; @@ -104,4 +109,16 @@ is(scalar(@{$history}), 0, 'Did not retrieve syspref from database'); done_testing(); +sub TransformVersionToNum { + my $version = shift; + + # remove the 3 last . to have a Perl number + $version =~ s/(.*\..*)\.(.*)\.(.*)/$1$2$3/; + + # three X's at the end indicate that you are testing patch with dbrev + # change it into 999 + # prevents error on a < comparison between strings (should be: lt) + $version =~ s/XXX$/999/; + return $version; +} 1; --