## 0.184.0 — 2026-05-04
## What's Changed
* fix: restore noop() to return 1 for backward compatibility by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/80
**Full Changelog**: https://github.com/geofffranks/test-mockmodule/compare/0.183.0...0.184.0
## 0.183.0 — 2026-05-01
## What's Changed
* Followup to PR #77 by @geofffranks in https://github.com/geofffranks/test-mockmodule/pull/79
* Thanks @Koan-Bot @atoomic for providing a fix for #48 !
**Full Changelog**: https://github.com/geofffranks/test-mockmodule/compare/0.181.0...0.183.0
## 0.182.0 — 2026-05-01
## What's Changed
* Provide a global way to assure nostrict ever happens by @toddr in https://github.com/geofffranks/test-mockmodule/pull/66
* Fix define() + unmock() bug, CI modernization, prototype tests by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/69
* feat: mocked_subs() introspection + original() fix (GH #52, #42) by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/70
* fix: align noop() return value with mock_all(noop=>1) by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/71
* fix: add strict mode guard to mock_all() by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/72
* ci: add Perl 5.40 and 5.42 to test matrix by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/75
* docs: fix POD typos and syntax errors by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/76
* perf: optimize _strict_mode() with exists check by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/73
* fix: skip special Perl subs in mock_all() by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/74
## New Contributors
* @Koan-Bot made their first contribution in https://github.com/geofffranks/test-mockmodule/pull/69
**Full Changelog**: https://github.com/geofffranks/test-mockmodule/compare/0.180.0...0.182.0
## 0.181.0 — 2026-04-30
## What's Changed
* Provide a global way to assure nostrict ever happens by @toddr in https://github.com/geofffranks/test-mockmodule/pull/66
* Fix define() + unmock() bug, CI modernization, prototype tests by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/69
* feat: mocked_subs() introspection + original() fix (GH #52, #42) by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/70
* fix: align noop() return value with mock_all(noop=>1) by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/71
* fix: add strict mode guard to mock_all() by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/72
* ci: add Perl 5.40 and 5.42 to test matrix by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/75
* docs: fix POD typos and syntax errors by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/76
* perf: optimize _strict_mode() with exists check by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/73
* fix: skip special Perl subs in mock_all() by @Koan-Bot in https://github.com/geofffranks/test-mockmodule/pull/74
## Moose & Mouse meta-class aware mocking (#55)
`Test::MockModule` now registers mocks on the target's Moose/Mouse meta-class via `add_method` (in addition to the symbol table) when the target uses `Class::MOP::Class` or `Mouse::Meta::Class`. This fixes:
- Role `requires` checks failing after mocking (incl. dynamic `apply_all_roles`).
- `The method 'foo' was not found in the inheritance hierarchy` errors when loading a subclass with `around foo` after mocking the parent's `foo`.
`unmock` restores via `add_method`, or `remove_method` (Moose) / internal cache purge (Mouse) for inherited originals.
Immutable classes fall back to symbol-table-only with a one-time warning. Moo is not supported (no MOP).
No public API change. Moose/Mouse/Class::MOP are not auto-loaded for non-Moose users.
**Full Changelog**: https://github.com/geofffranks/test-mockmodule/compare/0.181.0...0.182.0
## New Contributors
* @Koan-Bot made their first contribution in https://github.com/geofffranks/test-mockmodule/pull/69
**Full Changelog**: https://github.com/geofffranks/test-mockmodule/compare/0.180.0...0.181.0
## 0.180.0 — 2025-07-03
## What's Changed
* Remove Software::License from runtime dependencies by @bbrtj in https://github.com/geofffranks/test-mockmodule/pull/68
## New Contributors
* @bbrtj made their first contribution in https://github.com/geofffranks/test-mockmodule/pull/68
**Full Changelog**: https://github.com/geofffranks/test-mockmodule/compare/0.179.0...0.180.0
# NOTE: Automated tracking resumed 2026-05-04. See https://github.com/geofffranks/test-mockmodule/releases for any older entries pre-0.180.0.
# Revision history for Test::MockModule pre Aug 29, 2024
v0.179.0
- 82881df - Bump Module::Build requirement by @atoomic in #65
v0.178.0
- 6724a30 - Simplify CI workflow - Nicolas R
- 1801372 - Multiple improvements - Nicolas R
- e97e316 - Add protection to _replace_sub - Nicolas R
v0.177.0
- 35f0d0b Update changelog - Geoff Franks
- 1d5b485 Move test modules from build to test requires - Olaf Alders
- 78afe10 Clean up changelog - Geoff Franks
v0.277.0
- Move test modules from build to test requires - Olaf Alders
v0.176.0
- 3ba8bc7 lexically scoped strictness - David Cantrell
- e57fc5a Update ci with dockerhub auth - Geoff Franks
- bfe1e63 Update GitHub workflow with deprecated add-path - Nicolas R
v0.175.0
- 964aa2a Ignore CI files and whitesource - Nicolas R
v0.174.0
- cf65e7c Fix typo in pod - nima
v0.173.0
- 4dacd82 Add warning when 'unmock' called without arguments - Matthew Hughes
- b20dc7c import warns when using unknown argument - Nicolas R
- 3b217ba Fix windows CI by installing SUPER - Nicolas R
- 0ef70c5 Add .whitesource configuration file - whitesource-bolt-for-github[bot]
v0.172.0
- 7558aa9 Make sure we can redefine a function in 'main' - Nicolas R
- 0538fe1 Plug GitHub workflow as additional CI - Nicolas R
- 0e9d90b update parallel to use in_parallel instead ofaggregate - Geoff Franks
v0.171.0
- 89dc5c0 Fixes #25 - mocking core::global no longer fails trying to load the module - Geoff Franks
- 9bb081a update ci for fewer infinite loops - Geoff Franks
- 289d014 Update release notes for all the newly merged PRs - Geoff Franks
- fef9e74 Allow chaining of new with mock, redefine, define - Nicolas Rochelemagne
- e136131 Prevent redefine() from triggering DESTROY. - Felipe Gasper
- 311f6b4 Adjust Travis CI configuration to use travis-perl.github.io - Nicolas Rochelemagne
- 2bed3e2 Add strict mode to ban the use of noop and mock. - Todd Rinaldo
- 0298d8d Provide define method so the mock method is unneeded in tests. - Todd Rinaldo
v0.171.0
- allow chaining of new with mock, redefine, define
- redefine() no longer triggers errors if the object being mocked is not a hashref
- Adds a define() method for mocking new functions that do not exist. Throws an
error if a function does exist.
- Adds `strict` mode to prevent usage of noop() and mock() functions, and force
the usage of define/redefine if desired.:
```
use Test::MockModule qw/strict/;
```
- Mocking CORE::GLOBAL no longer throws errors indicating CORE::GLOBAL should have
been installed/loaded
v0.170.0
- 182d066 Fix versioning for semver conversion + PAUSE - Geoff Franks
- 4afeedf release v0.17.0 - CI Bot
- 9df8ac4 Add CI pipeline for releasing to cpan - Geoff Franks
- 577350e Pod - provide a code snippet for original usage - Nicolas R
- 3e4ec72 Add missing pod entries - Geoff Franks
v0.16
- Fixes an issue where warnings were thrown for mismatched prototypes,
when mocking a prototyped function.
Thanks @toddr for the fix!
v0.15
- Fixes a minor bug in the release tarball
v0.14
- Fixes a bug where the `redefine()` function was dying when attempting to
mock a function that was defined further up a module's inheritance chain.
It now only dies when the mocked function does not exist in the module being
mocked, or any of its parent modules. Thanks @atoomic for the improvement!
v0.13
- Added the `redefine()` function. It works just like `mock()`, except if the
method being mocked doesn't exist, it causes a panic. Many thanks to Felipe
Gasper for this feature!
v0.12
- Added the `noop()` function to make mocking noops easier. Thanks for the PR,
Ali Zia!
v0.11 2016-10-27
- Various housekeeping, testing and minor fixes, courtesy of Paul Cochrane, thanks!
v0.10 2015-05-30
- Updated docs for mocking when using exported functions
v0.09 2015-03-15
- Ensure LICENSE autogenerates for distribution, fixed license issues in Build.PL
v0.08 2015-03-14
- Updated README with correct instructions now that we use Build.PL
v0.07 2015-03-14
- Updated docs for more clarity when handling objects of mocked classes.
v0.06 2015-03-07
- unmock() on inherited subroutines will dispatch to the parent module,
rather than replace the local subroutine with the parent's subroutine
from the time of mocking (RT77439)
v0.05 2004-03-24
- unmock() accepts a list of subroutines to unmock. Thanks to David Wheeler
for the suggestion and patch
- Added t/pod_coverage.t
v0.04 2004-12-12
- You can now mock a subroutine with a scalar value or a reference
(install sub that returns the value). Thanks to Ovid for the suggestion.
v0.03 2004-12-05
- Restores subs/methods that previously didn't exist (undefine them)
v0.02 2004-11-28
- Fixed restoring inherited methods
v0.01 2004-11-28
- Initial revision