Test::Trap::Builder::SystemSafe - "Safe" output layer backend using File::Temp
Version 0.2.3
This module provides an implementation systemsafe, based on File::Temp, for the trap's output layers. This implementation insists on reopening the output file handles with the same descriptors, and therefore, unlike Test::Trap::Builder::TempFile and Test::Trap::Builder::PerlIO, is able to trap output from forked-off processes, including system().
See also Test::Trap (:stdout and :stderr) and Test::Trap::Builder (output_layer).
Using File::Temp, we need privileges to create tempfiles.
We need disk space for the output of every trap (it should clean up after the trap is sprung).
Disk access may be slow -- certainly compared to the in-memory files of PerlIO.
If the file handle we try to trap using this backend is on an in-memory file, it would not be available to other processes in any case. Rather than change the semantics of the trapped code or silently fail to trap output from forked-off processes, we just raise an exception in this case.
If there is another file handle with the same descriptor (f ex after an open OTHER, '>&=', THIS), we can't get that file descriptor. Rather than silently fail, we again raise an exception.
open OTHER, '>&=', THIS
Threads? No idea. It might even work correctly.
Please report any bugs or feature requests directly to the author.
Eirik Berg Hanssen, <ebhanssen@allverden.no>
<ebhanssen@allverden.no>
Copyright 2006-2012 Eirik Berg Hanssen, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Test::Trap, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Test::Trap
CPAN shell
perl -MCPAN -e shell install Test::Trap
For more information on module installation, please visit the detailed CPAN module installation guide.