Skip to content

Release: v7.2.1 — Testing Overhaul & Cleanup#399

Merged
Data-Wise merged 23 commits intomainfrom
dev
Feb 16, 2026
Merged

Release: v7.2.1 — Testing Overhaul & Cleanup#399
Data-Wise merged 23 commits intomainfrom
dev

Conversation

@Data-Wise
Copy link
Owner

Summary

  • Testing overhaul — migrated 134 test files from inline frameworks to shared test-framework.zsh with 14 assertion helpers, mock registry, and subshell isolation
  • Dogfood scanner — meta-test that catches 4 anti-pattern categories in test files
  • Removed semantic-release — manual releases via gh release create; cleaned up 5 devDependencies and .releaserc.json
  • TESTING.md rewrite — complete overhaul from v5.0.0 patterns to current shared framework docs
  • FLOW_VERSION syncflow.plugin.zsh version updated from 7.0.0 to 7.2.1

Test plan

  • ./tests/run-all.sh — 45/45 passed, 1 expected timeout (IMAP)
  • zsh tests/dogfood-test-quality.zsh — 4/4 clean
  • MkDocs build — 0 warnings
  • Pre-commit hooks pass (prettier)

🤖 Generated with Claude Code

Test User and others added 23 commits February 16, 2026 11:27
Option C from testing research — improve existing framework with
assertion helpers, mock registry, subshell isolation, and behavioral
test conversions across 3 parallel batches.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Enhance test-framework.zsh with mock registry (create_mock,
  assert_mock_called, assert_mock_args, reset_mocks), subshell
  isolation (run_isolated), and convenience aliases
- Convert test-work.zsh from existence-only checks to behavioral
  assertions (24 tests now verify exit codes, output, and mocks)
- Convert test-dispatcher-enhancements.zsh to use shared framework
  with assert_contains instead of inline grep checks
- Add dogfood-test-quality.zsh scanner that detects 4 anti-patterns:
  permissive exit codes, existence-only tests, unused output
  captures, and inline frameworks

Full suite: 45/45 passing, no regressions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace inline test frameworks with shared test-framework.zsh.
Convert existence-only checks to behavioral assertions, fix
permissive exit codes, and eliminate unused output captures.

Dogfood scanner delta: existence-only 94→65, unused captures 51→31,
permissive exit codes 14→11, inline frameworks 115→103.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Three-layer testing taxonomy (unit/E2E/dogfood), framework comparison
(ShellSpec vs BATS vs ZTAP vs native), and anti-pattern catalog.
Complements ORCHESTRATE file with strategic direction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Convert 4 more test files to use test-framework.zsh with proper
behavioral assertions. Add test_skip() and TESTS_SKIPPED counter
to framework.

Anti-pattern progress: permissive 11→2, existence 65→45,
unused captures 31→21, inline frameworks 103→91.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Convert 4 high-anti-pattern test files to use test-framework.zsh:
- test-atlas-e2e.zsh: 19/19 passing (was inline framework + 11 existence-only)
- test-token-automation-unit.zsh: 25/25 passing (fixed jq newline capture)
- test-token-automation.zsh: 18/18+2skip+1skip (doc files skip in worktree)
- test-doctor-cache.zsh: 19/20 passing (fixed readonly scoping bug, 10→19)

Anti-pattern progress: existence 45→11, inline 91→80, permissive 2→1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- test-work.zsh: replace permissive exit code (0||1) with strict assert
- test-adhd.zsh: add output assertions to 6 help/flag tests
- test-capture.zsh: add output assertions to 6 unused captures

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add output assertions to 3 timer tests that captured output
but only checked exit codes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ework.zsh

Eliminate inline pass/fail/log_test functions across 30 test files,
replacing them with shared test-framework.zsh assertions. This reduces
the dogfood scanner's inline framework violations from 80 in 30 files
to 2 in 1 file (97.5% reduction).

Files converted: test-ai-features, test-atlas-integration, test-cc-*,
test-course-planning-*, test-doctor-email-*, test-em-dispatcher,
test-flow, test-g-feature-*, test-keychain-default-automated,
test-mcp-dispatcher, test-obs-dispatcher, test-pick-*, test-production-*,
test-qu-dispatcher, test-quick-wins, test-r-dispatcher, test-status-fields,
test-sync, test-tm-dispatcher, test-token-automation-e2e, test-wt-*.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All acceptance criteria met:
- 14 assertion helpers + 5 mock registry functions in test-framework.zsh
- 30+ test files converted from inline to shared framework
- Dogfood scanner: permissive exit codes eliminated (0), inline frameworks 80→2
- Full suite: 45/45 passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Convert test-course-planning-docs-unit.zsh and
test-doctor-email-interactive.zsh from inline pass/fail/log_test
to shared test-framework.zsh. Reduces dogfood inline framework
violations to 0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ptures)

- Add behavioral follow-ups to existence-only tests in 6 files
- Fix unused output captures in 4 files
- Dogfood scanner now passes 4/4 categories (all clean)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add `trap cleanup EXIT` to 31 test files that create temp dirs
  (prevents /tmp leaks when tests fail early)
- Standardize on `test_suite_end` instead of mixed `print_summary`
  (10 files updated for consistency)
- Update ORCHESTRATE results table to match final scanner output

Test suite: 45/45 passing, dogfood scanner: 4/4 clean

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ring

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Guard test_pass against double-counting when test_fail already fired
- Remove unused mock_function/restore_function (superseded by mock registry)
- Move ORCHESTRATE files from repo root to docs/specs/
- Add scalar-only limitation note to with_env helper
- Deduplicate .STATUS wins entries

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…framework

Resolves merge conflicts from work -e editor flag (PR #396) added on dev
after the testing overhaul branched. Converts 40+ new editor/help/arg-parser
tests from inline framework to shared test-framework.zsh assertions.

71/71 test-work.zsh passing, dogfood 4/4 clean, full suite 45/45.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
test: testing infrastructure overhaul — shared framework + dogfood scanner
semantic-release was removed in v7.1.0 (manual releases via gh release).
Removes @semantic-release/*, conventional-changelog-conventionalcommits,
and .releaserc.json config. Closes dependabot PR #395.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ase refs

- TESTING.md: full rewrite for shared test-framework.zsh (716→363 lines)
- CHANGELOG.md: add [Unreleased] section for testing overhaul + semantic-release removal
- QUALITY-GATES.md: remove semantic release CI section
- COMMIT-MESSAGES.md: remove semantic-release from tools list
- CLAUDE.md: update test file count 186→134
- .STATUS: remove merged worktree, update test counts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Data-Wise Data-Wise merged commit fefa0ac into main Feb 16, 2026
2 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