Skip to content

feat: add is_mocked() and get_mocked_checks() introspection API#108

Draft
Koan-Bot wants to merge 1 commit into
cpan-authors:mainfrom
Koan-Bot:koan.atoomic/feat-introspection-api
Draft

feat: add is_mocked() and get_mocked_checks() introspection API#108
Koan-Bot wants to merge 1 commit into
cpan-authors:mainfrom
Koan-Bot:koan.atoomic/feat-introspection-api

Conversation

@Koan-Bot
Copy link
Copy Markdown
Contributor

@Koan-Bot Koan-Bot commented May 11, 2026

What

Adds two new exported functions for querying mock state: is_mocked($check) and get_mocked_checks().

Why

Users had no way to check if a file check op is currently mocked without trying to mock it and catching the croak. This makes debugging complex test setups harder than necessary — especially when multiple test helpers may independently set up mocks.

How

Both functions operate on the existing $_current_mocks hash. is_mocked() resolves the check name via _resolve_check() and tests existence. get_mocked_checks() maps the hash keys back to check names via %REVERSE_MAP, excluding stat/lstat from the list (those can be queried with is_mocked('stat')).

Exported via @EXPORT_OK and included in :all.

Testing

25 new tests covering:

  • Basic is_mocked true/false/after-unmock
  • Dash-optional syntax
  • stat/lstat via mock_stat
  • mock_all_from_stat interaction
  • get_mocked_checks sorted output and stat exclusion
  • Guard scope interaction
  • Invalid check croak

Full test suite passes (65 test files).

🤖 Generated with Claude Code


Quality Report

Changes: 2 files changed, 121 insertions(+)

Code scan: clean

Tests: passed (0 Tests)

Branch hygiene: clean

Generated by Kōan post-mission quality pipeline

Users had no way to query which file checks are currently mocked without
trying to mock and catching the croak. These two functions expose mock
state for debugging and conditional test logic.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant