Ancient
view release on metacpan or search on metacpan
t/8013-file-hooks.t view on Meta::CPAN
# ============================================
subtest 'hook persists across multiple operations' => sub {
file::clear_hooks('read');
my $call_count = 0;
file::register_read_hook(sub {
my ($path, $data) = @_;
$call_count++;
return $data;
});
my $testfile = "$tempdir/persist_test.txt";
file::spew($testfile, "data");
file::slurp($testfile);
file::slurp($testfile);
file::slurp($testfile);
is($call_count, 3, 'hook called for each read');
file::clear_hooks('read');
};
# ============================================
# Encoding-style hook example
# ============================================
subtest 'encoding hook example' => sub {
file::clear_hooks('read');
file::clear_hooks('write');
# Simulate base64-like encoding (just reverse for simplicity)
file::register_write_hook(sub {
my ($path, $data) = @_;
return scalar(reverse($data));
});
file::register_read_hook(sub {
my ($path, $data) = @_;
return scalar(reverse($data));
});
my $testfile = "$tempdir/encoding_test.txt";
my $original = "Hello, World!";
file::spew($testfile, $original);
# File on disk should be reversed
file::clear_hooks('read');
my $on_disk = file::slurp($testfile);
is($on_disk, '!dlroW ,olleH', 'data encoded on disk');
# Re-register read hook
file::register_read_hook(sub {
my ($path, $data) = @_;
return scalar(reverse($data));
});
# Reading should decode
my $decoded = file::slurp($testfile);
is($decoded, $original, 'data decoded on read');
file::clear_hooks('read');
file::clear_hooks('write');
};
done_testing();
( run in 4.180 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )