From d2edcd29e73f450ff5a6a400154615c99e23af62 Mon Sep 17 00:00:00 2001 From: Mark Tompsett Date: Wed, 28 Mar 2018 03:28:52 +0000 Subject: [PATCH] Bug 20364: Follow up to correct koha qa test tool failure Plus, improve the perlcritic level beyond minimal. TEST PLAN --------- 1) apply first patch 2) run the script in a koha shell output to before.xml 3) run koha qa test tools -- script will fail. 4) perlcritic -3 on script is noisy. 5) apply this patch 6) run the script in a koha shell output to after.xml 7) a diff of these two output files should be identical 8) run koha qa test tools -- script will now pass 9) perlcritic -3 on script is OK. --- misc/maintenance/generate_MARC21Languages.pl | 71 +++++++++++++++++++--------- 1 file changed, 48 insertions(+), 23 deletions(-) diff --git a/misc/maintenance/generate_MARC21Languages.pl b/misc/maintenance/generate_MARC21Languages.pl index f9198d1..cddea52 100755 --- a/misc/maintenance/generate_MARC21Languages.pl +++ b/misc/maintenance/generate_MARC21Languages.pl @@ -22,6 +22,7 @@ use Modern::Perl; use XML::Simple; use Pod::Usage; use Getopt::Long; +use Carp; use open ':std', ':encoding(UTF-8)'; @@ -37,26 +38,54 @@ my $outfile; my $tempfile = '/tmp/languages.xml'; GetOptions( - 'o|output:s' => \$outfile, - 'url:s' => \$sourceurl, - 'help|h' => \$help, + 'o|output:s' => \$outfile, + 'url:s' => \$sourceurl, + 'help|h' => \$help, ); usage() if $help; -# output log or STDOUT -if (defined $outfile) { - open (OUT, ">$outfile") || die ("Cannot open output file"); -} else { - open(OUT, ">&STDOUT") || die ("Couldn't duplicate STDOUT: $!"); -} - -system( qq{/usr/bin/wget $sourceurl -O $tempfile } ) == 0 or die "Can't wget $sourceurl ($?)"; +system(qq{/usr/bin/wget $sourceurl -O $tempfile }) == 0 + or croak "Can't wget $sourceurl ($?)"; -my $ref = XMLin($tempfile); +my $ref = XMLin($tempfile); my $languages = $ref->{'languages'}->{'language'}; -print OUT <', $outfile ) || croak("Cannot open output file"); +} +else { + open( $out_handle, ">&STDOUT" ) || croak("Couldn't duplicate STDOUT: $!"); +} +generate_header($out_handle); +generate_body($out_handle, $languages); +generate_footer($out_handle); +close $out_handle; + +sub generate_body { + my ( $file_handle, $language_list ) = @_; + + foreach my $l ( @{$language_list} ) { + my $code = $l->{'code'}; + my $name = ( + ref( $l->{'name'} ) eq 'HASH' + ? $l->{'name'}{'content'} + : $l->{'name'} + ); + next if ( ref($code) eq 'HASH' && $code->{'status'} eq 'obsolete' ); + print {$file_handle} " "; + print {$file_handle} "$name"; + print {$file_handle} ""; + print {$file_handle} "\n"; + } + return; +} + +sub generate_header { + my ($file_handle) = @_; + print {$file_handle} <<"HEADER"; ]> @@ -65,18 +94,12 @@ print OUT < HEADER - -foreach my $l (@{$languages}) { - my $code = $l->{'code'}; - my $name = (ref($l->{'name'}) eq 'HASH' ? $l->{'name'}{'content'} : $l->{'name'}); - next if (ref($code) eq 'HASH' && $code->{'status'} eq 'obsolete'); - print OUT " "; - print OUT "$name"; - print OUT ""; - print OUT "\n"; + return; } -print OUT < Unknown language code @@ -84,6 +107,8 @@ print OUT < FOOTER + return; +} =head1 NAME -- 2.1.4