our
@EXPORT
=
qw(runtest $progname $progpath)
;
our
$progname
=
"diff_spreadsheets"
;
our
$progpath
=
"$Bin/../bin/$progname"
;
sub
runtest($$$$$$;@) {
my
(
$in1
,
$in2
,
$exp_out
,
$exp_err
,
$exp_exit
,
$desc
,
@extraargs
) =
@_
;
if
(state
$first_time
= 1) {
unless
(
grep
/utf.*8/i, PerlIO::get_layers(
*STDOUT
)) {
croak
"STDOUT does not have utf8 or encoding(UTF-8) enabled"
;
}
unless
(
grep
/utf.*8/i, PerlIO::get_layers(
*STDERR
)) {
croak
"STDERR does not have utf8 or encoding(UTF-8) enabled"
;
}
$first_time
= 0;
}
my
$show_output
=
$debug
|| (
$exp_err
eq
""
&&
$exp_out
eq
""
);
unshift
@extraargs
,
"--verbose"
if
$verbose
;
unshift
@extraargs
,
"--debug"
if
$debug
;
unshift
@extraargs
,
"--silent"
unless
$verbose
or
$debug
;
my
(
$out
,
$err
,
$wstat
);
if
(
$show_output
) {
(
$out
,
$err
,
$wstat
) = Capture::Tiny::tee {
run_perlscript
$progpath
,
@extraargs
,
$in1
,
$in2
;
};
}
else
{
(
$out
,
$err
,
$wstat
) = Capture::Tiny::capture {
run_perlscript
$progpath
,
@extraargs
,
$in1
,
$in2
;
};
}
my
(
$file
,
$lno
) = (
caller
(0))[1,2];
$file
= basename(
$file
);
my
$diag
=
$show_output
?
""
:
"OUT:<<$out>>\nERR:<<$err>>\n"
;
is(
$wstat
, (
$exp_exit
<< 8),
sprintf
(
"(WSTAT=0x%x)"
,
$wstat
).
" ${file}:$lno $desc"
,
$diag
);
if
(!
$debug
) {
if
(!
$verbose
||
$exp_err
ne
""
) {
like(
$err
,
$exp_err
,
"(STDERR) ${file}:$lno $desc"
,
$diag
);
}
}
@_
= (
$out
,
$exp_out
,
"(STDOUT) $desc"
,
$diag
);
goto
&Test2::V0::like
;
}
1;