Bugzilla – Attachment 113793 Details for
Bug 26031
www/search_utf8.t is failing randomly and must be removed/replaced
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 26031: Remove www/search_utf8.t
Bug-26031-Remove-wwwsearchutf8t.patch (text/plain), 13.00 KB, created by
Jonathan Druart
on 2020-11-18 16:21:47 UTC
(
hide
)
Description:
Bug 26031: Remove www/search_utf8.t
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2020-11-18 16:21:47 UTC
Size:
13.00 KB
patch
obsolete
>From f7b40e05ef53b26af14b8d0cacfdbcd2c58d40af Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Wed, 18 Nov 2020 17:20:38 +0100 >Subject: [PATCH] Bug 26031: Remove www/search_utf8.t > >Those tests are not reliable and fail randomly and we did not find the >root of the problem. >I am in favour of removing them, at least for now. >--- > t/db_dependent/www/search_utf8.t | 371 ------------------------------- > 1 file changed, 371 deletions(-) > delete mode 100755 t/db_dependent/www/search_utf8.t > >diff --git a/t/db_dependent/www/search_utf8.t b/t/db_dependent/www/search_utf8.t >deleted file mode 100755 >index 499e6181cc..0000000000 >--- a/t/db_dependent/www/search_utf8.t >+++ /dev/null >@@ -1,371 +0,0 @@ >-#!/usr/bin/perl >- >-# This file is part of Koha. >-# >-# Koha is free software; you can redistribute it and/or modify it >-# under the terms of the GNU General Public License as published by >-# the Free Software Foundation; either version 3 of the License, or >-# (at your option) any later version. >-# >-# Koha is distributed in the hope that it will be useful, but >-# WITHOUT ANY WARRANTY; without even the implied warranty of >-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >-# GNU General Public License for more details. >-# >-# You should have received a copy of the GNU General Public License >-# along with Koha; if not, see <http://www.gnu.org/licenses>. >- >-use Modern::Perl; >- >-use utf8; >-use Test::More; #See plan tests => \d+ below >-use Test::WWW::Mechanize; >-use Data::Dumper; >-use XML::Simple; >-use JSON; >-use File::Basename; >-use File::Path; >-use File::Spec; >-use File::Temp qw/ tempdir /; >-use POSIX; >-use Encode; >-use URI::Escape; >- >-use C4::Context; >- >-my $testdir = File::Spec->rel2abs( dirname(__FILE__) ); >-# global variables that will be used when forking >-our $zebra_pid; >-our $indexer_pid; >-our $datadir = tempdir();; >- >-my $koha_conf = $ENV{KOHA_CONF}; >-my $xml = XMLin($koha_conf); >- >-my $marcflavour = C4::Context->preference('marcflavour') || 'MARC21'; >- >-# For the purpose of this test, we can reasonably take MARC21 and NORMARC to be the same >-my $file1 = >- $marcflavour eq 'UNIMARC' >- ? "$testdir/data/unimarcutf8record.mrc" >- : "$testdir/data/marc21utf8record.mrc"; >- >-my $file2 = >- $marcflavour eq 'UNIMARC' >- ? "$testdir/data/unimarclatin1utf8rec.mrc" >- : "$testdir/data/marc21latin1utf8rec.mrc"; >- >-my $file3 = >- $marcflavour eq 'UNIMARC' >- ? "$testdir/data/unimarcutf8supprec.mrc" >- : "$testdir/data/marc21utf8supprec.mrc"; >- >-my $user = $ENV{KOHA_USER} || $xml->{config}->{user}; >-my $password = $ENV{KOHA_PASS} || $xml->{config}->{pass}; >-my $intranet = $ENV{KOHA_INTRANET_URL}; >-my $opac = $ENV{KOHA_OPAC_URL}; >- >- >-# test KOHA_INTRANET_URL is set >-if ( not $intranet ) { >- plan skip_all => "Tests skip. You must set env. variable KOHA_INTRANET_URL to do tests\n"; >-} >-# test KOHA_OPAC_URL is set >-elsif ( not $opac ) { >- plan skip_all => "Tests skip. You must set env. variable KOHA_OPAC_URL to do tests\n"; >-} >-else { >- plan tests => 99; >-} >- >-$intranet =~ s#/$##; >-$opac =~ s#/$##; >- >-#-------------------------------- Test with greek and corean chars; >-# launch the zebra saerch process >-launch_zebra( $datadir, $koha_conf ); >-if ( not defined $zebra_pid ) { >- plan skip_all => "Tests skip. Error starting Zebra Server to do those tests\n"; >-} >-# launch the zebra index process >-launch_indexer( ); >-if ( not defined $indexer_pid ) { >- plan skip_all => "Tests skip. Error starting the indexer daemon to do those tests\n"; >-} >- >-my $utf8_reg1 = qr/å¦åä¼. μμ/; >-test_search($file1,'Îθήνα', 'deuteros', $utf8_reg1); >- >- >-#--------------------------------- Test with only utf-8 chars in the latin-1 range; >-launch_zebra( $datadir, $koha_conf ); >-if ( not defined $zebra_pid ) { >- plan skip_all => "Tests skip. Error starting Zebra Server to do those tests\n"; >-} >-launch_indexer( ); >-if ( not defined $indexer_pid ) { >- plan skip_all => "Tests skip. Error starting the indexer daemon to do those tests\n"; >-} >-my $utf8_reg2 = qr/Tòmas/; >-test_search($file2,'Ramòn', 'Tòmas',$utf8_reg2); >- >-#--------------------------------- Test with supplementary utf-8 chars; >-launch_zebra( $datadir, $koha_conf ); >-if ( not defined $zebra_pid ) { >- plan skip_all => "Tests skip. Error starting Zebra Server to do those tests\n"; >-} >-launch_indexer( ); >-if ( not defined $indexer_pid ) { >- plan skip_all => "Tests skip. Error starting the indexer daemon to do those tests\n"; >-} >-my $utf8_reg3 = qr/ð/; >-test_search($file3, "𠻺tomasito𠻺", 'A tiny record', $utf8_reg3); >- >-sub test_search{ >- #Params >- my $file = $_[0]; >- my $publisher = $_[1]; >- my $search_key = $_[2]; >- my $utf8_reg = $_[3]; >- >- my $agent = Test::WWW::Mechanize->new( autocheck => 1 ); >- my $jsonresponse; >- >- # -------------------------------------------------- LOAD RECORD >- >- $agent->get_ok( "$intranet/cgi-bin/koha/mainpage.pl", 'connect to intranet' ); >- $agent->form_name('loginform'); >- $agent->field( 'password', $password ); >- $agent->field( 'userid', $user ); >- $agent->field( 'branch', '' ); >- $agent->click_ok( '', 'login to staff interface' ); >- >- $agent->get_ok( "$intranet/cgi-bin/koha/mainpage.pl", 'load main page' ); >- >- $agent->follow_link_ok( { url_regex => qr/tools-home/i }, 'open tools module' ); >- $agent->follow_link_ok( { text => 'Stage MARC records for import' }, >- 'go to stage MARC' ); >- >- $agent->post( >- "$intranet/cgi-bin/koha/tools/upload-file.pl?temp=1", >- [ 'fileToUpload' => [$file], ], >- 'Content_Type' => 'form-data', >- ); >- ok( $agent->success, 'uploaded file' ); >- >- $jsonresponse = decode_json $agent->content(); >- is( $jsonresponse->{'status'}, 'done', 'upload succeeded' ); >- my $fileid = $jsonresponse->{'fileid'}; >- >- $agent->get_ok( "$intranet/cgi-bin/koha/tools/stage-marc-import.pl", >- 'reopen stage MARC page' ); >- $agent->submit_form_ok( >- { >- form_number => 5, >- fields => { >- 'uploadedfileid' => $fileid, >- 'nomatch_action' => 'create_new', >- 'overlay_action' => 'replace', >- 'item_action' => 'always_add', >- 'matcher' => '', >- 'comments' => '', >- 'encoding' => 'utf8', >- 'parse_items' => '1', >- 'runinbackground' => '1', >- 'record_type' => 'biblio' >- } >- }, >- 'stage MARC' >- ); >- >- $jsonresponse = decode_json $agent->content(); >- my $jobID = $jsonresponse->{'jobID'}; >- ok( $jobID, 'have job ID' ); >- >- my $completed = 0; >- >- # if we haven't completed the batch in two minutes, it's not happening >- for my $counter ( 1 .. 24 ) { >- $agent->get( >- "$intranet/cgi-bin/koha/tools/background-job-progress.pl?jobID=$jobID" >- ); # get job progress >- $jsonresponse = decode_json $agent->content(); >- if ( $jsonresponse->{'job_status'} eq 'completed' ) { >- $completed = 1; >- last; >- } >- warn( >- ( >- $jsonresponse->{'job_size'} >- ? floor( >- 100 * $jsonresponse->{'progress'} / $jsonresponse->{'job_size'} >- ) >- : '100' >- ) >- . "% completed" >- ); >- sleep 5; >- } >- is( $jsonresponse->{'job_status'}, 'completed', 'job was completed' ); >- >- $agent->get_ok( >- "$intranet/cgi-bin/koha/tools/stage-marc-import.pl", >- 'reopen stage MARC page at end of upload' >- ); >- $agent->submit_form_ok( >- { >- form_number => 5, >- fields => { >- 'uploadedfileid' => $fileid, >- 'nomatch_action' => 'create_new', >- 'overlay_action' => 'replace', >- 'item_action' => 'always_add', >- 'matcher' => '1', >- 'comments' => '', >- 'encoding' => 'utf8', >- 'parse_items' => '1', >- 'runinbackground' => '1', >- 'completedJobID' => $jobID, >- 'record_type' => 'biblio' >- } >- }, >- 'stage MARC' >- ); >- >- $agent->follow_link_ok( { text => 'Manage staged records' }, 'view batch' ); >- >- >- $agent->form_number(6); >- $agent->field( 'framework', '' ); >- $agent->click_ok( 'mainformsubmit', "imported records into catalog" ); >- my $webpage = $agent->{content}; >- >- $webpage =~ /(.*<title>.*?)(\d{1,})(.*<\/title>)/sx; >- my $id_batch = $2; >- my $id_bib_number = GetBiblionumberFromImport($id_batch); >- >- # wait enough time for the indexer >- sleep 10; >- >- # --------------------------------- TEST INTRANET SEARCH >- >- >- $agent->get_ok( "$intranet/cgi-bin/koha/catalogue/search.pl" , "got search on intranet"); >- $agent->form_number(5); >- $agent->field('idx', 'kw'); >- $agent->field('q', $search_key); >- $agent->click(); >- my $intra_text = $agent->text() ; >- my $diag = sub { >- my $pref = 'XSLTResultsDisplay'; >- my $xslt_file = C4::Context->preference('marcflavour') . 'slim2intranetResults.xsl'; >- my $xslt_filepath = C4::XSLT::_get_best_default_xslt_filename( C4::Context->config('intrahtdocs'), C4::Context->preference("template"), 'en', $xslt_file ); >- return sprintf( "===DIAG===\n%s is %s\n%s %s\n==========", $pref, C4::Context->preference($pref), $xslt_filepath, ( -f $xslt_filepath ? 'exists' : 'does not exist' )); >- }; >- >- like( $intra_text, qr|Publication details: $publisher|, ) or diag($diag->()); >- >- $agent->get_ok( "$intranet/cgi-bin/koha/catalogue/search.pl" , "got search on intranet"); >- $agent->form_number(5); >- $agent->field('idx', 'kw'); >- $agent->field('q', $publisher); >- $agent->click(); >- $intra_text = $agent->text(); >- >- like( $intra_text, qr|Publication details: $publisher|, ); >- my $expected_base = q|search.pl\?advsearch=1&idx=kw&q=| . uri_escape_utf8( $publisher ); >- $agent->base_like(qr|$expected_base|, ); >- >- ok ( ( length(Encode::encode('UTF-8', $intra_text)) != length($intra_text) ) , 'UTF-8 are multi-byte. Good') ; >- ok ($intra_text =~ $utf8_reg, 'UTF-8 chars are correctly present. Good'); >- # -------------------------------------------------- TEST ON OPAC >- >- $agent->get_ok( "$opac" , "got opac"); >- $agent->form_name('searchform'); >- $agent->field( 'q', $search_key ); >- $agent->field( 'idx', '' ); >- $agent->click( ); >- my $opac_text = $agent->text() ; >- like( $opac_text, qr|Publication details: $publisher|, ); >- >- $agent->get_ok( "$opac" , "got opac"); >- $agent->form_name('searchform'); >- $agent->field('q', $publisher); >- $agent->field( 'idx', '' ); >- $agent->click(); >- $opac_text = $agent->text(); >- >- like( $opac_text, qr|Publication details: $publisher|, ); >- $expected_base = q|opac-search.pl\?(idx=&)?q=| . uri_escape_utf8( $publisher ); >- $agent->base_like(qr|$expected_base|, ); >- # Test added on BZ 14909 in addition to making the empty idx= optional >- # in the previous regex >- $agent->base_unlike( qr|idx=\w+|, 'Base does not contain an idx' ); >- >- >- ok ( ( length(Encode::encode('UTF-8', $opac_text)) != length($opac_text) ) , 'UTF-8 are multi-byte. Good') ; >- ok ($opac_text =~ $utf8_reg, 'UTF-8 chars are correctly present. Good'); >- >- #-------------------------------------------------- REVERT >- >- $agent->get_ok( "$intranet/cgi-bin/koha/tools/manage-marc-import.pl", 'view and clean batch' ); >- $agent->form_name('clean_batch_'.$id_batch); >- $agent->click(); >- $agent->get_ok( "$intranet/cgi-bin/koha/catalogue/detail.pl?biblionumber=$id_bib_number", 'biblio on intranet' ); >- $agent->get_ok( "$intranet/cgi-bin/koha/cataloguing/addbiblio.pl?op=delete&biblionumber=$id_bib_number", 'biblio deleted' ); >- >- # clean >- cleanup(); >-} >- >- >-# function that launches the zebra daemon >-sub launch_zebra { >- >- my ( $datadir, $koha_conf ) = @_; >- >- $zebra_pid = fork(); >- if ( $zebra_pid == 0 ) { >- exec("zebrasrv -f $koha_conf -v none,request -l $datadir/zebra.log"); >- exit; >- } >- sleep( 1 ); >-} >- >-sub launch_indexer { >- >- my $rootdir = dirname(__FILE__) . '/../../../'; >- my $rebuild_zebra = "$rootdir/misc/migration_tools/rebuild_zebra.pl"; >- >- $indexer_pid = fork(); >- >- if ( $indexer_pid == 0 ) { >- exec("$rebuild_zebra -daemon -sleep 5"); >- exit; >- } >- sleep( 1 ); >-} >- >-sub cleanup { >- >- kill 9, $zebra_pid if defined $zebra_pid; >- kill 9, $indexer_pid if defined $indexer_pid; >- # Clean up the Zebra files since the child process was just shot >- rmtree $datadir; >- >-} >- >-sub GetBiblionumberFromImport{ >- my ( $batch_id) = @_; >- use C4::ImportBatch; >- my $data = C4::ImportBatch::GetImportRecordsRange($batch_id, '', '', undef, >- { order_by => 'import_record_id', order_by_direction => 'DESC' }); >- my $biblionumber = $data->[0]->{'matched_biblionumber'}; >- >- return $biblionumber; >-} >- >-END { >- cleanup(); >-}; >- >-- >2.20.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 26031
:
108780
|
108798
|
113793
|
113796
|
113811
|
113812