Catmandu-BagIt
view release on metacpan or search on metacpan
t/Catmandu-BagIt.t view on Meta::CPAN
ok -f "$bag_dir/data/test.txt" , "got a $bag_dir/data/test.txt";
ok -f "$bag_dir/data/poem.txt" , "got a $bag_dir/data/poem.txt";
ok -f "$bag_dir/data/results.txt" , "got a $bag_dir/data/results.txt";
like path("$bag_dir/data/test.txt")->slurp_utf8 , qr/test789/, 'file content is correct';
like path("$bag_dir/data/poem.txt")->slurp_utf8 , qr/Violets are blue/ , 'file content is correct';
like path("$bag_dir/data/results.txt")->slurp_utf8 , qr/0123456789/ , 'file content is correct';
ok $bagit->add_file("poem.txt",IO::File->new("t/poem2.txt"), overwrite => 1) , 'setting new file content';
ok $bagit->write($bag_dir, overwrite => 1) , 'write bag overwrite';
like path("$bag_dir/data/poem.txt")->slurp_utf8 , qr/The rose is red, the violet's blue/ , 'file content is correct';
my $payload_oxum = $bagit->payload_oxum;
is $payload_oxum , '218.3' , 'payload oxum';
ok $bagit->add_fetch("http://www.gutenberg.org/cache/epub/1980/pg1980.txt","290000","shortstories.txt") , 'adding payload';
$payload_oxum = $bagit->payload_oxum;
is $payload_oxum , '290218.4' , 'new payload oxum reflects the fetch file';
remove_path($bag_dir);
}
note("mirror fetch");
{
my $bagit = Catmandu::BagIt->new(user_agent => user_agent() );
$bagit->add_fetch("http://demo.org/","65","poem.txt");
dies_ok { $bagit->get_fetch() } 'get_fetch without parameters dies';
ok ! $bagit->get_fetch("poem123.txt") , 'get_fetch() on non-existing';
my $fetch = $bagit->get_fetch("poem.txt");
ok $fetch , 'get_fetch()';
ok $bagit->write($bag_dir, overwrite => 1) , 'write bag overwrite';
ok $bagit->mirror_fetch($fetch) , 'mirror_fetch';
ok $bagit->write($bag_dir, overwrite => 1) , 'write bag overwrite';
ok -r "$bag_dir/data/poem.txt";
my $size = [stat("$bag_dir/data/poem.txt")]->[7];
is $size , 65 , 'got the correct size';
remove_path($bag_dir);
}
note("lock");
{
my $bagit = Catmandu::BagIt->read("bags/demo03");
ok ! $bagit->locked , '!locked';
$bagit = Catmandu::BagIt->new;
ok $bagit->write($bag_dir);
$bagit->touch("$bag_dir/.lock");
ok $bagit->locked , 'locked';
remove_path($bag_dir);
}
note("pipe");
{
SKIP: {
skip "ENV{PIPETEST} not set", 4 unless $ENV{PIPETEST};
my $pipe = new IO::Pipe;
if(my $pid = fork()) { # Parent
$pipe->reader();
my $bagit = Catmandu::BagIt->new;
ok $bagit->add_file("test.txt",$pipe) , 'add_file() pipe';
ok $bagit->write($bag_dir) , 'write()';
my $file = $bagit->get_file("test.txt");
ok $file;
is path($file->path)->slurp_utf8 , "Hello, parent!\n" , 'file->data';
remove_path($bag_dir);
}
elsif(defined $pid) { # Child
$pipe->writer();
print $pipe "Hello, parent!\n";
exit(0);
}
}
}
note("supply md5");
{
my $t_bag_dir = $bag_dir . "-supply-md5";
my $bag = Catmandu::BagIt->new(algorithm => 'md5');
ok( !($bag->add_file("hello_world.txt","hello world",md5 => "abc")), "no valid md5 sum supplied" );
is( ($bag->errors())[0] , "supplied md5 sum for hello_world.txt does not look like an md5 sum" );
is( scalar( $bag->list_files() ), 0, "no payload added" );
ok( $bag->add_file("hello_world.txt","hello world", md5 => "5eb63bbbe01eeed093cb22bb8f5acdc3"), "valid md5 sum supplied" );
is( scalar( $bag->errors() ), 0 );
is( scalar( $bag->list_files() ), 1, "payload added" );
ok $bag->write( $t_bag_dir );
ok( $bag->valid );
( run in 2.683 seconds using v1.01-cache-2.11-cpan-8dfa8b56332 )