Net-Z3950-FOLIO
view release on metacpan or search on metacpan
t/08-short-session.t view on Meta::CPAN
# Note that this test currently emits a harmless, though alarming, message:
# Unknown argument "limit" on field "T_instance.holdingsRecords2".
# This is due to the Index Data FOLIO testing server being out of
# date. It should be cleared up in early 2022.
use strict;
use warnings;
use Test::More tests => 5;
use Test::Differences;
oldstyle_diff;
BEGIN { use_ok('Net::Z3950::FOLIO') };
SKIP: {
skip('zoomsh not available', 4) if system('zoomsh quit') ne 0;
# This test runs perfectly well as
# perl -I lib t/08-short-session.t
# But for reasons that I can't begin to understand, it goes mad
# when run under the test-harness library. The test runs to
# successful completion, but then tries to run again -- which
# times out and fails, because the forked server will only handle
# one session. So we don't even try for now.
skip('cannot run under Test::Harness', 4) if $ENV{PERL_DL_NONLAZY};
my $pid = fork();
exit 'Uh-oh! $!' if $pid < 0;
if ($pid == 0) {
# Child
$ENV{OKAPI_INDEXDATA_PASSWORD} = 'swordfish';
my $service = new Net::Z3950::FOLIO('etc/config');
$service->launch_server('z2folio', '-1', '-f', 't/data/config/yazgfs-9996.xml');
}
# Parent
sleep 1; # Allow time for server to start up
ok(1, 'waited for service');
my $res = `zoomsh -e "open \@:9996/indexdata|marcHoldings" "find \@attr 1=12 in00000000007" "set preferredRecordSyntax opac" "show 0" quit 2>&1`;
ok(1, 'ran a session');
my @lines = split("\n", $res);
shift(@lines); # remove "@:9996/snapshot|marcHoldings: 1 hits"
shift(@lines); # remove "0 database= syntax=OPAC schema=unknown"
$res = join("\n", @lines) . "\n";
ok(1, 'extracted OPAC XML');
my $expectedFile = 'in00000000007-opac.xml';
my $expected = readFile("t/data/fetch/$expectedFile");
eq_or_diff($res, $expected, "OPAC record matches expected value ($expectedFile)");
exit;
}
sub readFile {
my($fileName) = @_;
my $fh = IO::File->new();
$fh->open("<$fileName") or die "can't read '$fileName': $!";
my $data = join('', <$fh>);
$fh->close();
return $data;
}
( run in 1.673 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )