Revision history for Test-MockFile 0.035 11/30/2022 - GH #180 - Prevent open() and sysopen() from opening GLOB(..)-like paths. 0.034 4/25/2022 - GH #176: Add file handle support for BINMODE. This does nothing at this time but at least it doesn't die. - support for ~/foo and ~user/foo in mocking and access (globs) 0.033 3/7/2022 - Request last Overload::FileCheck release - 0.013 - Correct chown parameter position for file name - Fixup Plugin for File::Temp tempfile in scalar context logic. - Track File::Temp version in unit tests. 0.032 2/24/2022 - Less strict mode - Don't complain about commands not opening or directly interacting with a file. 0.031 2/24/2022 - Fix for Plugin::FileTemp when calling tempfile in scalar context 0.030 2/22/2022 - Simplify _strict_mode_violation - Introduce new_dir() to allow older dir() syntax. - Provide a mechanism to setup custom strict rules - Make is_strict_mode a helper - Do not call _get_file_object when all we're trying to determine is if the file is mocked or not. - Add Test::MockFile::Plugins - We support "undef" as filename in strict rules to ignore filenames - Block Plugin::FileTemp < 5.28 - Update MANIFEST 0.029 2/16/2022 - Fix broken link to small test documentation - Ensure strict mode is enabled by default and prevent import conflicts. - Fix warnings during global destruction - Additional rules for _abs_path_to_file - GH #103 - Update eg/example.pl: - Add rmdir, mkdir and unlink default position - Postpone file arg check during strict mode analysis - Fixup hook args and teach for mkdir filename pos - Perltidy policy changes. - Use carp in filename and readlink - Fix broken link to small test documentation 0.028 2/12/2022 - Update test for our FreeBSD results - GH #122 - Support two-arg open, read/write, and understand pipes - Add strict guards for additional keywords: readdir, telldir, rewinddir, seekdir, closedir, readlink, mkdir, rmdir - Revert to old symbol resolution technique. 0.027 2/10/2022 - GH #75 - Strict mode is now on by default - GH #45 - Provide a helpful error message and document fileno unsupported. - GH #90 - Normalize forward slashes. - GH #126 - Document using debugger under strict mode. - Do not hard-code values of $! - Try to get more data when t/runtime-bareword-filehandles.t fails on cpan testers. - GH #64 - Do not overwrite the error code when checking for Docker - GH #63 - FreeBSD's readlink() returns EINVAL for readlink(undef): - Add more data for debugging test failures on OpenBSD 0.026 2/3/2022 - Fix support for mocking the top-level directory. - Symlinks should appear in readdir - Fix directory instantiation when creating a symlink. - GH #105: Show directories in readdir - Improve relative path management - Don't let stat() get confused with trailing forward slash - GH #118: Do not get confused by inner directory files. - GH #85: Do not corrupt blessed handles. 0.025 1/26/2022 - Fix typo in chmod mock. Was accidentally calling chown. - Fix dependency on Text::Glob. It is now a runtime requirement. 0.024 1/24/2022 - Prefer Carp::confess to die - Do not use "$!" in tests as it's not consistent across platforms - GH #78: Do not allow rmdir on a populated directory. - GH #73: Prefer the term ->path to ->filename as it is more clear between file/dir - chown $fh now works. - Only warn about mixed files when using mocked files 0.024_01 - GH #83: Get Solaris testers passing. - Remove all use of "$!" in tests as this has tranlation problems. 0.023 1/14/2022 - GH #58: Fix synopsis typos - GH #65: Fix typos in the typo fixes. - GH #34: Support open() with barewords - GH #59: Detect and reject common path mistakes when mocking - GH #69: Redesigned dir() (and some file()) interface <--- breaks previous interface - GH #40: Support glob() - GH #15: Implement chown/chmod 0.022 12/27/2021 - GH #47: Manage bareword filehandles in runtime: 0.021 1/30/2020 - Emit ENOTDIR on opendir when appropriate - Switch to github actions for CI testing 0.020 10/14/2019 - GH #51 - Basic introduction of file ownership. Set default uid/gid to current user when not set - GH #49 - Make sysseek return position when called while allowing seek to return a true value. 0.19 5/21/2019 - Fix POD for stat example in POD. - Allow scalar file handles on open. We don't care about those - Provide better guidance about keeping your mocks in scope in examples - Disable Test::CheckManifest due to break in Test-CheckManifest - Fix seek bug in sysopen(... O_APPEND) 0.018 1/24/2019 - Properly handle open and sysopen file handles going out of scope. - Provide a helper method to mock objects to determine the file name. GH #31 - Do not throw a file access hook when statting a file handle that is not under MockFile control. GH #30 - Read multiple lines via readline when wantarray is true. GH #29 0.017 1/2/2019 - Require a newer Test2::Bundle::Extended (0.000084) to support named isa_ok 0.016 1/2/2019 - Bump Overload::FileCheck to 0.007 to address stack bug - Try to get EISDIR handling for BSD working. Apparently something changed in perl 5.20? - Do not do access hooks on filehandle interactions. 0.015 12/21/2018 - Remove errant debug messages from open - Pass 3 to fix t/touch.t on BSD. 0.014 12/20/2018 - Re-factor _find_file_or_fh to handle symlink following logic better. GH #26 - Make more standard use of _get_file_object when looking up a file path so we properly handle abs path and symlink following 0.013 12/20/2018 - Add a helper to determine if goto can be used. Where it's available is complicated - First pass at bareword file handles for opendir and friends - Fix errant docs for making a symlink mock - Follow links for stat but not lstat - Add support for readlink - Try 2 to fix BSD issues with GH #20 0.012 11/16/2018 - Fix for #21 - length undef on perl 5.10 - GH #20 - Add EPERM support for freebsd when unlinking directories - Fix for print $fh undef throwing a warning - Remove faulty OS level test of readdir after opendir. 0.011 11/08/2018 - Fix for my $file_contents = do { local $/; <$fh> }; - Mock CORE::GLOBAL::unlink and support directories for unlink - Mock CORE::GLOBAL::mkdir - Mock CORE::GLOBAL::rmdir - MockFile->symlink now follows the symlink norm of ($target, $file), not the reverse. - New mock helper 'exists' to check if the file is there. - New mock helper 'permissions' tells you the current permissions of the mocked file. 0.010 10/31/2018 - Add .perltidyrc policy - When reporting strict mode violations, be sure to report the a stack location outside of our modules. - Report a stack trace for strict mode violations to determine the source of the problem. - Add an ignore hash for modules (like DynaLoader) which are allowed to open files. - Ignore STDIN/STDERR/STDOUT since tests often have to manipulate them and that's not really IO. - Autovivify a sysread where the buffer passed in is undef. 0.009 10/29/2018 - Add unlink and touch as helpers when testing - Depend on new Overload::FileCheck 0.006 which does not call MockFile to determine _ stats 0.008 10/26/2018 - Depend on newest Overload::FileCheck version. Depending on older versions was breaking unit tests. 0.007 10/25/2018 - More POD fixups - Support for unmocked file access hooks. - Implement strict mode to error any time an unmocked file access happens. 0.006 10/25/2018 - Fix for Locale-dependent failures on perl < 5.22 https://github.com/CpanelInc/Test-MockFile/issues/10 - Minor pod fixups. 0.005 10/24/2018 - Complete basic documentation for all public methods. 0.004 10/24/2018 - Raise the Test::More requirement to address an issue with Test2::Formatter::TAP Fixes https://github.com/CpanelInc/Test-MockFile/issues/6 0.003 10/24/2018 - Correct bug in use constant statement. 0.002 was broken on release. - Changes to code to give basic support for Perl 5.10+. Ideally you should be on perl 5.16 to run this code but it'll mostly work below that. 0.002 10/24/2018 - Set bug tracker to github - Fix Fcntl bug when you use unsupported constants. 0.001 10/23/2018 - First release with basic support for open/sysopen/opendir - Support is limited to Perl 5.20 until we address this error: Error: Invalid CODE attribute: prototype(*;$@) at lib/Test/MockFile.pm