Skip to content

feat: pytest-beehave v2.0 — full plugin implementation#3

Merged
nullhack merged 42 commits intomainfrom
v2
Apr 18, 2026
Merged

feat: pytest-beehave v2.0 — full plugin implementation#3
nullhack merged 42 commits intomainfrom
v2

Conversation

@nullhack
Copy link
Copy Markdown
Owner

Summary

This PR merges the complete v2.0 implementation of pytest-beehave into main.

All 6 core features were built, verified, and accepted through the full SCOPE → ARCH → TDD → VERIFY → ACCEPT workflow:

  • stub-creation — generate class-based test stubs from Gherkin .feature files with @id traceability
  • auto-id-generation — automatically write @id tags into .feature files; enforce presence in CI
  • deprecation-sync — propagate @deprecated tags to @pytest.mark.deprecated, with Rule/Feature inheritance
  • stub-updates — docstring updates, function renames, orphan detection, non-conforming stub markers
  • features-dir-bootstrap — create canonical backlog//in-progress//completed/ structure on first run
  • plugin-hook — all sync runs as pytest_configure so stubs are current before collection

Quality

  • 115 tests passing, 2 intentional skips (orphaned stubs — system working as designed)
  • 100% coverage
  • 0 lint errors, 0 type errors
  • Modular architecture replacing the original monolithic syncer.py

Release

Tagged as v2.0.20260418 - Industrious Bombus

nullhack added 30 commits April 18, 2026 07:54
- Replace developer agent with software-engineer agent
- Update product-owner, reviewer agents with revised workflows
- Add create-agent, design-patterns, feature-selection, refactor skills
- Remove tdd skill (replaced by implementation skill)
- Reset completed features back to backlog with updated Gherkin
- Add features-path-config feature to in-progress
- Expand project discovery with v2 design decisions (test structure, marker ownership, state machine)
- Add scientific research docs (ai-agents, architecture, OOP, refactoring, testing, etc.)
- Remove v1 post-mortems and academic research doc
…, stub_writer, stub_reader, sync_engine, bootstrap, reporter, models)

- New modules: models.py, feature_parser.py, stub_writer.py, stub_reader.py, sync_engine.py, bootstrap.py, reporter.py
- Removed syncer.py and syncer_test.py
- plugin.py refactored to use pytest_configure only with bootstrap + sync
- Class-based test structure for Rule blocks, examples_test.py for top-level
- New stubs include @pytest.mark.skip(reason='not yet implemented')
- 100% test coverage, 0 lint errors, 0 pyright errors
- 91 tests passing
…egin multilingual-feature-parsing Step 2

- Remove type: ignore from feature_parser.py — use cast() instead
- Write error to stderr before pytest.exit() in plugin.py (test 124f65e7 was asserting wrong stream)
- Move features-path-config to completed/ as a proper subfolder
- Move multilingual-feature-parsing from backlog to in-progress
- Update TODO.md to Step 2 ARCH with correct @id rows and agent name
…erkin-official handles Spanish and Chinese transparently
…per spec

All tests/features/ test files now use class Test<RuleSlug> containing
test methods, matching the architecture spec in stub-creation.feature.
Old flat-function test directories deleted and replaced with properly
structured class-based equivalents. Also moves stub-creation to
in-progress and selects it as the active feature.
…eritance

- Fix RuleSlug to use underscores, rename all hyphenated test files
- Implement orphan-handling and non-conforming-handling tests
- Fix @deprecated tag inheritance from feature/rule to examples in parser
- Implement deprecation_sync tag inheritance tests (b3d7f942, a9e1c504, d6f8b231)
- Implement features_dir_bootstrap tests (11 tests across 4 files)
- Add non-conforming detection to sync_engine
- Move test/test-fast verbosity control to per-task flags, add test-build task
- 112 passed, 3 skipped (2 orphans + 1 deprecated), 100% coverage
…md spec

Move all .feature files from subfolder convention to flat files:
- in-progress/stub-creation/stub-creation.feature → in-progress/stub-creation.feature
- completed/features-path-config/features-path-config.feature → completed/features-path-config.feature
- completed/multilingual-feature-parsing/multilingual_feature_parsing.feature → completed/multilingual-feature-parsing.feature
- completed/plugin-hook/plugin-hook.feature → completed/plugin-hook.feature

Move backlog discovery stubs to flat .md files:
- backlog/display-version/discovery.md → backlog/display-version.md
- backlog/gen-tests-orphan-fix/discovery.md → backlog/gen-tests-orphan-fix.md

Remove redundant multilingual-feature-parsing/discovery.md (content already in .feature)
Update TODO.md Source path to match new location
@nullhack nullhack merged commit fd975af into main Apr 18, 2026
2 of 4 checks passed
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