]>
Dogcows Code - chaz/p5-File-KDBX/blob - hash-block.t
78008ab5d0a08ff09191ecf2c918dc9287fcd2f6
7 use TestCommon
qw(:no_warnings_test);
9 use File
::KDBX
::Util
qw(can_fork);
11 use File
::KDBX
::IO
::HashBlock
;
15 my $expected_plaintext = 'Tiny food from Spain!';
17 pipe(my $read, my $write) or die "pipe failed: $!\n";
19 $write = File
::KDBX
::IO
::HashBlock-
>new($write, block_size
=> 3);
20 print $write $expected_plaintext;
21 close($write) or die "close failed: $!";
23 $read = File
::KDBX
::IO
::HashBlock-
>new($read);
24 my $plaintext = do { local $/; <$read> };
27 is $plaintext, $expected_plaintext, 'Hash-block just a little bit';
31 skip
'Tests require fork' if !can_fork
;
33 my $expected_plaintext = "\x64" x
(1024*1024*12 - 57);
35 local $SIG{CHLD
} = 'IGNORE';
36 pipe(my $read, my $write) or die "pipe failed: $!\n";
38 defined(my $pid = fork) or die "fork failed: $!\n";
40 $write = File
::KDBX
::IO
::HashBlock-
>new($write);
41 print $write $expected_plaintext;
42 close($write) or die "close failed: $!";
48 $read = File
::KDBX
::IO
::HashBlock-
>new($read);
49 my $plaintext = do { local $/; <$read> };
52 is $plaintext, $expected_plaintext, 'Hash-block a lot';
55 subtest
'Error handling' => sub {
56 pipe(my $read, my $write) or die "pipe failed: $!\n";
58 $read = File
::KDBX
::IO
::HashBlock-
>new($read);
60 print $write 'blah blah blah';
61 close($write) or die "close failed: $!";
63 is $read->error, '', 'Read handle starts out fine';
64 my $data = do { local $/; <$read> };
65 is $read->error, 1, 'Read handle can enter an error state';
67 like
$File::KDBX
::IO
::HashBlock
::ERROR
, qr/invalid block index/i, 'Error object is available';
This page took 0.043786 seconds and 3 git commands to generate.