From 232dcacb692d6c2e917767eaa9daab7d139ccf13 Mon Sep 17 00:00:00 2001 From: Mark Tompsett Date: Thu, 5 Apr 2018 01:31:38 +0000 Subject: [PATCH] Bug 20191: Use Test::MockTime to hold time still The problem is the calls to HTTP::OAI::Header, etc. may reference gmtime which is continually changing by the second. By forcing time to lock for all the tests, except the last one, we can be assured things should not fail. TEST PLAN --------- install libtest-mocktime-perl apply the patch restart_all in kshell, prove t/db_dependent/OAI/Server.t run koha qa test tools Signed-off-by: Tomas Cohen Arazi Signed-off-by: Jonathan Druart (cherry picked from commit b76ad51b9d45d67746bddf27a9376e810c1b2d1e) Signed-off-by: Fridolin Somers --- C4/Installer/PerlDependencies.pm | 5 +++++ t/db_dependent/OAI/Server.t | 17 +++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/C4/Installer/PerlDependencies.pm b/C4/Installer/PerlDependencies.pm index 8257d9a10b..5438996c80 100644 --- a/C4/Installer/PerlDependencies.pm +++ b/C4/Installer/PerlDependencies.pm @@ -867,6 +867,11 @@ our $PERL_DEPS = { 'required' => '0', 'min_ver' => '0.17', }, + 'Test::MockTime' => { + usage => 'Testing suite', + required => 0, + min_ver => '0.17', + }, }; 1; diff --git a/t/db_dependent/OAI/Server.t b/t/db_dependent/OAI/Server.t index 87d5c8b557..7309c4a3ab 100644 --- a/t/db_dependent/OAI/Server.t +++ b/t/db_dependent/OAI/Server.t @@ -18,6 +18,7 @@ # along with Koha; if not, see . use Modern::Perl; +use Test::MockTime qw/set_fixed_time restore_time/; use Test::More tests => 29; use DateTime; @@ -69,10 +70,14 @@ $dbh->do('DELETE FROM deletedbiblioitems'); $dbh->do('DELETE FROM deleteditems'); $dbh->do('DELETE FROM oai_sets'); -my $date_added = DateTime->now() . 'Z'; +set_fixed_time(CORE::time()); + +my $base_datetime = DateTime->now(); +my $date_added = $base_datetime->ymd . ' ' .$base_datetime->hms . 'Z'; my $date_to = substr($date_added, 0, 10) . 'T23:59:59Z'; my (@header, @marcxml, @oaidc); -my $sth = $dbh->prepare('SELECT timestamp FROM biblioitems WHERE biblionumber=?'); +my $sth = $dbh->prepare('UPDATE biblioitems SET timestamp=? WHERE biblionumber=?'); +my $sth2 = $dbh->prepare('UPDATE biblio_metadata SET timestamp=? WHERE biblionumber=?'); # Add biblio records foreach my $index ( 0 .. NUMBER_OF_MARC_RECORDS - 1 ) { @@ -85,8 +90,10 @@ foreach my $index ( 0 .. NUMBER_OF_MARC_RECORDS - 1 ) { $record->append_fields( MARC::Field->new('245', '', '', 'a' => "Title $index" ) ); } my ($biblionumber) = AddBiblio($record, ''); - $sth->execute($biblionumber); - my $timestamp = $sth->fetchrow_array . 'Z'; + my $timestamp = $base_datetime->ymd . ' ' .$base_datetime->hms; + $sth->execute($timestamp,$biblionumber); + $sth2->execute($timestamp,$biblionumber); + $timestamp .= 'Z'; $timestamp =~ s/ /T/; $record = GetMarcBiblio({ biblionumber => $biblionumber }); $record = XMLin($record->as_xml_record); @@ -341,6 +348,8 @@ test_query( }, }); +restore_time(); + subtest 'Bug 19725: OAI-PMH ListRecords and ListIdentifiers should use biblio_metadata.timestamp' => sub { plan tests => 1; -- 2.39.5