$Bio::MUST::Core::Utils::VERSION
=
'0.250380'
;
OK
=> [
qw(secure_outfile :filenames :tests)
],
TAGS
=> [
filenames
=> [
qw(insert_suffix change_suffix append_suffix)
],
tests
=> [
qw(cmp_store cmp_float)
],
],
);
sub
secure_outfile {
my
$infile
=
shift
;
my
$suffix
=
shift
;
return
insert_suffix(
$infile
,
$suffix
)
if
defined
$suffix
;
rename
$infile
, append_suffix(
$infile
,
'.bak'
)
if
-e
$infile
;
return
$infile
;
}
sub
insert_suffix {
my
$infile
=
shift
;
my
$string
=
shift
;
my
(
$filename
,
$directories
,
$suffix
) = fileparse(
$infile
,
qr{\.[^.]*}
xms);
return
$directories
.
$filename
.
$string
.
$suffix
;
}
sub
change_suffix {
my
$infile
=
shift
;
my
$suffix
=
shift
;
my
(
$filename
,
$directories
) = fileparse(
$infile
,
qr{\.[^.]*}
xms);
return
$directories
.
$filename
.
$suffix
;
}
sub
append_suffix {
my
$infile
=
shift
;
my
$suffix
=
shift
;
my
(
$filename
,
$directories
) = fileparse(
$infile
);
return
$directories
.
$filename
.
$suffix
;
}
sub
cmp_store {
my
%args
=
@_
;
my
(
$obj
,
$method
,
$file
,
$test
,
$args
)
=
@args
{
qw(obj method file test args)
};
$args
//= {};
my
$outfile
;
unless
(
$method
=~ m/\A temp_/xms) {
$outfile
= file(
'test'
,
"my_$file"
);
( file(
$outfile
) )->remove
if
-e
$outfile
;
$obj
->
$method
(
$outfile
,
$args
);
}
$outfile
//=
$obj
->
$method
(
$args
);
compare_ok(
$outfile
, file(
'test'
,
$file
),
"$test: $file"
);
return
;
}
sub
cmp_float {
my
(
$got
,
$expect
,
$epsilon
,
$test
) =
@_
;
cmp_ok
abs
(
$got
-
$expect
),
'<'
,
$epsilon
,
$test
;
return
;
}
1;