Some old-style code is making our tests fail when run in Debian Testing.
This patch addresses this.
To test:
1. Launch bookworm KTD:
$ KOHA_IMAGE=master-bookworm ktd up -d
2. Run:
$ ktd --shell
k$ prove t/00-testcritic.t
=> FAIL: It fails!
3. Apply the patch
4. Repeat 2
=> SUCCESS: Tests now pass!
5. Sign off :-D
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
undef $/;
my $dir = C4::Context->config('intranetdir') . "/installer/data/$self->{dbms}/$lang/marcflavour/".lc($marcflavour);
- unless (opendir( MYDIR, $dir )) {
+ my $dir_h;
+ unless (opendir( $dir_h, $dir )) {
if ($lang eq 'en') {
warn "cannot open MARC frameworks directory $dir";
} else {
# if no translated MARC framework is available,
# default to English
$dir = C4::Context->config('intranetdir') . "/installer/data/$self->{dbms}/en/marcflavour/".lc($marcflavour);
- opendir(MYDIR, $dir) or warn "cannot open English MARC frameworks directory $dir";
+ opendir($dir_h, $dir) or warn "cannot open English MARC frameworks directory $dir";
$defaulted_to_en = 1;
}
}
- my @listdir = sort grep { !/^\.|marcflavour/ && -d "$dir/$_" } readdir(MYDIR);
- closedir MYDIR;
+ my @listdir = sort grep { !/^\.|marcflavour/ && -d "$dir/$_" } readdir($dir_h);
+ closedir $dir_h;
my @fwklist;
my $request = $self->{'dbh'}->prepare("SELECT value FROM systempreferences WHERE variable='FrameworksLoaded'");
}
foreach my $requirelevel (@listdir) {
- opendir( MYDIR, "$dir/$requirelevel" );
- my @listname = grep { !/^\./ && -f "$dir/$requirelevel/$_" && $_ =~ m/\.(sql|yml)$/ } readdir(MYDIR);
- closedir MYDIR;
+ my $dir_h;
+ opendir( $dir_h, "$dir/$requirelevel" );
+ my @listname = grep { !/^\./ && -f "$dir/$requirelevel/$_" && $_ =~ m/\.(sql|yml)$/ } readdir($dir_h);
+ closedir $dir_h;
my %cell;
my @frameworklist;
map {
undef $/;
my $dir = C4::Context->config('intranetdir') . "/installer/data/$self->{dbms}/$lang";
- unless (opendir( MYDIR, $dir )) {
+ my $dir_h;
+ unless (opendir( $dir_h, $dir )) {
if ($lang eq 'en') {
warn "cannot open sample data directory $dir";
} else {
# if no sample data is available,
# default to English
$dir = C4::Context->config('intranetdir') . "/installer/data/$self->{dbms}/en";
- opendir(MYDIR, $dir) or warn "cannot open English sample data directory $dir";
+ opendir($dir_h, $dir) or warn "cannot open English sample data directory $dir";
$defaulted_to_en = 1;
}
}
- my @listdir = sort grep { !/^\.|marcflavour/ && -d "$dir/$_" } readdir(MYDIR);
- closedir MYDIR;
+ my @listdir = sort grep { !/^\.|marcflavour/ && -d "$dir/$_" } readdir($dir_h);
+ closedir $dir_h;
my @levellist;
my $request = $self->{'dbh'}->prepare("SELECT value FROM systempreferences WHERE variable='FrameworksLoaded'");
}
foreach my $requirelevel (@listdir) {
- opendir( MYDIR, "$dir/$requirelevel" );
- my @listname = grep { !/^\./ && -f "$dir/$requirelevel/$_" && $_ =~ m/\.(sql|yml)$/ } readdir(MYDIR);
- closedir MYDIR;
+ my $dir_h;
+ opendir( $dir_h, "$dir/$requirelevel" );
+ my @listname = grep { !/^\./ && -f "$dir/$requirelevel/$_" && $_ =~ m/\.(sql|yml)$/ } readdir($dir_h);
+ closedir $dir_h;
my %cell;
my @frameworklist;
map {
my $code = read_file( $filepath );
my ( $out, $err ) = ('', '');
{
- open my $oldout, ">&STDOUT";
+ open my $oldout, qw{>}, "&STDOUT";
close STDOUT;
open STDOUT,'>:encoding(utf8)', \$out;
my $DBversion = Koha::version; # We need $DBversion and $dbh for the eval
else {
$htdocs = C4::Context->config('opachtdocs');
}
- opendir D, "$htdocs";
- my @dirlist = readdir D;
+ my $dir_h;
+ opendir $dir_h, "$htdocs";
+ my @dirlist = readdir $dir_h;
foreach my $directory (@dirlist) {
next if $directory eq 'lib';
-d "$htdocs/$directory/en" and push @themes, $directory;
}
+ close $dir_h;
return @themes;
}
# find the available directory names
my $dir=C4::Context->config('intranetdir')."/installer/data/";
- opendir (MYDIR,$dir);
- my @listdir= grep { !/^\.|CVS/ && -d "$dir/$_"} readdir(MYDIR);
- closedir MYDIR;
+ my $dir_h;
+ opendir ($dir_h,$dir);
+ my @listdir= grep { !/^\.|CVS/ && -d "$dir/$_"} readdir($dir_h);
+ closedir $dir_h;
# pull out all data for the dir names that exist
for my $dirname (@listdir) {
else {
$htdocs = C4::Context->config('opachtdocs');
}
- opendir D, "$htdocs";
- my @dirlist = readdir D;
+ my $dir_h;
+ opendir $dir_h, "$htdocs";
+ my @dirlist = readdir $dir_h;
foreach my $directory (@dirlist) {
# if there's an en dir, it's a valid theme
-d "$htdocs/$directory/en" and push @themes, $directory;
}
+ close $dir_h;
return @themes;
}
$htdocs //= '';
$theme //= '';
my @lang_strings;
- opendir D, "$htdocs/$theme";
- for my $lang_string ( readdir D ) {
+ my $dir_h;
+ opendir $dir_h, "$htdocs/$theme";
+ for my $lang_string ( readdir $dir_h ) {
next if $lang_string =~/^\./;
next if $lang_string eq 'all';
next if $lang_string =~/png$/;
next if $lang_string =~/img|images|famfam|js|less|lib|sound|pdf/;
push @lang_strings, $lang_string;
}
- return (@lang_strings);
+ close $dir_h;
+ return (@lang_strings);
}
=head2 _build_languages_arrayref
my $intype = lc($marcflavour);
# Let's redirect stdout
- open my $oldout, ">&STDOUT";
+ open my $oldout, qw{>}, "&STDOUT";
my $outvar;
close STDOUT;
open STDOUT,'>:encoding(utf8)', \$outvar;
$source = '/dev/urandom'; # non-blocking
}
- sysopen SOURCE, $source, O_RDONLY
+ my $source_fh;
+ sysopen $source_fh, $source, O_RDONLY
or die "failed to open source '$source' in Koha::AuthUtils::generate_salt\n";
# $bytes is the bytes just read
# keep reading until we have $length bytes in $strength
while( length($string) < $length ){
# return the number of bytes read, 0 (EOF), or -1 (ERROR)
- my $return = sysread SOURCE, $bytes, $length - length($string);
+ my $return = sysread $source_fh, $bytes, $length - length($string);
# if no bytes were read, keep reading (if using /dev/random it is possible there was insufficient entropy so this may block)
next unless $return;
$string .= $bytes;
}
- close SOURCE;
+ close $source_fh;
return $string;
}
# 2 cases here : on CVS install, $cgidir does not need a /cgi-bin
# on a standard install, /cgi-bin need to be added.
# test one, then the other
- my $cgidir = C4::Context->config('intranetdir') ."/cgi-bin";
- unless (opendir(DIR, "$cgidir/cataloguing/value_builder")) {
+ my $cgidir = C4::Context->config('intranetdir') . "/cgi-bin";
+ my $dir_h;
+ unless ( opendir( $dir_h, "$cgidir/cataloguing/value_builder" ) ) {
$cgidir = C4::Context->config('intranetdir');
- opendir(DIR, "$cgidir/cataloguing/value_builder") || die "can't opendir $cgidir/value_builder: $!";
- }
- while (my $line = readdir(DIR)) {
- if ( $line =~ /\.pl$/ &&
- $line !~ /EXAMPLE\.pl$/ ) { # documentation purposes
- push (@value_builder,$line);
- }
- }
- @value_builder= sort {$a cmp $b} @value_builder;
- closedir DIR;
+ opendir( $dir_h, "$cgidir/cataloguing/value_builder" ) || die "can't opendir $cgidir/value_builder: $!";
+ }
+ while ( my $line = readdir($dir_h) ) {
+ if ( $line =~ /\.pl$/
+ && $line !~ /EXAMPLE\.pl$/ ) { # documentation purposes
+ push( @value_builder, $line );
+ }
+ }
+ @value_builder = sort { $a cmp $b } @value_builder;
+ closedir $dir_h;
my @loop_data;
my $asses = Koha::Authority::Subfields->search({ tagfield => $tagfield, authtypecode => $authtypecode}, {order_by => 'display_order'})->unblessed;
# on a standard install, /cgi-bin need to be added.
# test one, then the other
my $cgidir = C4::Context->config('intranetdir') . "/cgi-bin";
- unless ( opendir( DIR, "$cgidir/cataloguing/value_builder" ) ) {
+ my $dir_h;
+ unless ( opendir( $dir_h, "$cgidir/cataloguing/value_builder" ) ) {
$cgidir = C4::Context->config('intranetdir');
- opendir( DIR, "$cgidir/cataloguing/value_builder" )
+ opendir( $dir_h, "$cgidir/cataloguing/value_builder" )
|| die "can't opendir $cgidir/value_builder: $!";
}
- while ( my $line = readdir(DIR) ) {
+ while ( my $line = readdir($dir_h) ) {
if ( $line =~ /\.pl$/ &&
$line !~ /EXAMPLE\.pl$/ ) { # documentation purposes
push( @value_builder, $line );
}
}
@value_builder= sort {$a cmp $b} @value_builder;
- closedir DIR;
+ closedir $dir_h;
# build values list
my $mss = Koha::MarcSubfieldStructures->search(
my $dir =
C4::Context->config('intranetdir')
. "/installer/data/$info{dbms}/$langchoice/marcflavour";
- unless ( opendir( MYDIR, $dir ) ) {
+ my $dir_h;
+ unless ( opendir( $dir_h, $dir ) ) {
if ( $langchoice eq 'en' ) {
warn "cannot open MARC frameworks directory $dir";
}
# default to English
$dir = C4::Context->config('intranetdir')
. "/installer/data/$info{dbms}/en/marcflavour";
- opendir( MYDIR, $dir )
+ opendir( $dir_h, $dir )
or warn "cannot open English MARC frameworks directory $dir";
}
}
- my @listdir = grep { !/^\./ && -d "$dir/$_" } readdir(MYDIR);
- closedir MYDIR;
+ my @listdir = grep { !/^\./ && -d "$dir/$_" } readdir($dir_h);
+ closedir $dir_h;
my $marcflavour = C4::Context->preference("marcflavour");
my @flavourlist;
foreach my $marc (@listdir) {
if (defined $outfile) {
open( $out_handle, ">", $outfile ) || croak("Cannot open output file");
} else {
- open( $out_handle, ">&STDOUT" ) || croak("Couldn't duplicate STDOUT: $!");
+ open( $out_handle, q{>}, "&STDOUT" ) || croak("Couldn't duplicate STDOUT: $!");
}
generate_header($out_handle);
generate_body($out_handle, $languages);
my $match = join ('|', @match); # use only this files
my $nomatch = join ('|', @nomatch); # do no use this files
my @it = ();
- if (opendir(DIR, $dir)) {
- my @dirent = readdir DIR; # because DIR is shared when recursing
- closedir DIR;
+ my $dir_h;
+ if (opendir($dir_h, $dir)) {
+ my @dirent = readdir $dir_h; # because $dir_h is shared when recursing
+ closedir $dir_h;
for my $dirent (@dirent) {
my $path = "$dir/$dirent";
if ($dirent =~ /^\./ || $dirent eq 'CVS' || $dirent eq 'RCS'
open($OUTPUT, '>:encoding(utf-8)', $output) || die "$output: $!\n";
} else {
print STDERR "$0: Outputting to STDOUT...\n" if $verbose_p;
- open($OUTPUT, ">&STDOUT");
+ open($OUTPUT, q{>}, "&STDOUT");
}
if (defined $files_from) {
#Get the files list
my @files_list;
foreach my $dir(@directories){
- opendir(DIR, $dir);
- foreach my $filename (readdir(DIR)) {
+ my $dir_h;
+ opendir($dir_h, $dir);
+ foreach my $filename (readdir($dir_h)) {
my $full_path = "$dir/$filename";
my $id = md5_hex($full_path);
next if ($filename =~ /^\./ or -d $full_path);
size => $st->size,
id => $id});
}
- closedir(DIR);
+ closedir($dir_h);
}
my %files_hash = map { $_->{id} => $_ } @files_list;
}
push @directories, "$dirname";
foreach my $recursive_dir (@directories) {
- opendir RECDIR, $recursive_dir;
- while ( my $entry = readdir RECDIR ) {
+ my $recdir_h;
+ opendir $recdir_h, $recursive_dir;
+ while ( my $entry = readdir $recdir_h ) {
push @directories, "$recursive_dir/$entry"
if ( -d "$recursive_dir/$entry" and $entry !~ /^\./ );
}
- closedir RECDIR;
+ closedir $recdir_h;
}
foreach my $dir (@directories) {
$results = handle_dir( $dir, $filesuffix, $template );
my ( $file, $filename );
undef $cardnumber;
$logger->debug("Passed a zip file.");
- opendir DIR, $dir;
- while ( my $filename = readdir DIR ) {
+ my $dir_h;
+ opendir $dir_h, $dir;
+ while ( my $filename = readdir $dir_h ) {
$file = "$dir/$filename"
if ( $filename =~ m/datalink\.txt/i
|| $filename =~ m/idlink\.txt/i );
$source = "$dir/$filename";
%counts = handle_file( $cardnumber, $source, $template, %counts );
}
- closedir DIR;
+ closedir $dir_h;
}
else {
%counts = handle_file( $cardnumber, $source, $template, %counts );