Alt-CWB-ambs
view release on metacpan or search on metacpan
t/11_cwb_file.t view on Meta::CPAN
test_read_write_file(".txt", 1); # 2-argument form
SKIP: {
skip "compress program not installed", 2 unless $have_Z;
test_read_write_file(".Z", 0); # 1-argument form, T14
test_read_write_file(".Z", 1); # 2-argument form
}
SKIP: {
skip "gzip program not installed", 2 unless $have_gz;
test_read_write_file(".gz", 0); # 1-argument form, T16
test_read_write_file(".gz", 1); # 2-argument form
}
SKIP: {
skip "bzip2 program not installed", 2 unless $have_bz2;
test_read_write_file(".bz2", 0); # 1-argument form, T18
test_read_write_file(".bz2", 1); # 2-argument form
}
## test that reading non-existent compressed file fails immediately
eval { CWB::OpenFile("data/files/does_not_exist.gz") };
like($@, qr/does not exist/, "error condition when opening non-existent .gz file"); # T21
## check if specified tool is available in user's path
sub is_available {
my $cmd = shift;
my $ok = system "$cmd 2>/dev/null | grep ok >/dev/null";
return $ok == 0;
}
## try to read a known compressed or uncompressed file
sub test_read_file {
my $mode = (@_ > 2) ? shift : "";
my $filename = shift;
my $name = shift;;
my $fh;
if ($mode) {
$fh = CWB::OpenFile($mode, $filename);
}
else {
$fh = CWB::OpenFile($filename);
}
my $ok = 0;
if ($fh) {
my $line = <$fh>;
if ($line) {
$ok = ($line =~ /^ok\.$/) ? 1 : 0;
}
else {
diag("couldn't read from file '$filename'");
}
$fh->close;
}
else {
diag("couldn't open file '$filename'");
}
ok($ok, $name);
}
## try to write & read compressed and uncompressed files
sub test_read_write_file {
my ($ext, $two_arg) = @_;
$tempfile = "/tmp/test_CWB_$$.$ext"; # set global variable for END{} cleanup
my $name = "write/read .$ext file (".(($two_arg) ? 1 : 2)."-argument form)";
my $fh = undef;
my $ok = 0;
if ($two_arg) {
$fh = CWB::OpenFile ">", $tempfile;
}
else {
$fh = CWB::OpenFile "> $tempfile";
}
if ($fh) {
my @data = (1, 42, 7, -1001);
map {print $fh "$_\n"} @data;
$fh->close;
if (-s $tempfile >= 10) {
if ($two_arg) {
$fh = CWB::OpenFile "<", $tempfile;
}
else {
$fh = CWB::OpenFile $tempfile;
}
if ($fh) {
my @lines = <$fh>;
$fh->close;
if (@lines == @data and not grep {$lines[$_] != $data[$_]."\n"} (0 .. $#data)) {
$ok = 1;
}
else {
diag("file data corrupt in '$tempfile'");
}
}
else {
diag("couldn't open file '$tempfile' for reading");
}
}
else {
diag("writing '$tempfile' failed (file too small)");
}
}
else {
diag("couldn't open file '$tempfile' for writing");
}
unlink $tempfile;
ok($ok, $name);
}
( run in 1.300 second using v1.01-cache-2.11-cpan-d01c6094234 )