2.3 KiB
2.3 KiB
Mock Flag Update
Summary
Updated the --mocks flag to accept an explicit output path, improving usability and integration with build systems.
Changes Made
1. Flag Syntax Change
Before:
zig build run -- header.h --output=bindings.zig --mocks
# Automatically created: header_mock.c
After:
zig build run -- header.h --output=bindings.zig --mocks=mocks.c
# Explicitly creates: mocks.c
2. Benefits
- Explicit control: Users specify exactly where mock file goes
- Build system friendly: Easy to integrate with Zig build system
- Cleaner: No automatic filename generation logic
- Flexible: Can output mocks anywhere in the project structure
3. Build Target Added
New test-mocks target for quick testing:
zig build test-mocks
# Generates: zig-out/test_small.zig and zig-out/test_small_mock.c
4. Files Modified
build.zig:
- Added
test-mocksbuild step - Outputs to
zig-out/directory by default - Uses absolute paths for consistency
parser.zig:
- Changed from
--mocks(boolean flag) to--mocks=<path>(value flag) - Removed automatic filename generation
- Updated usage documentation
docs/usage.md:
- Updated with new flag syntax
- Added command line options reference
- Added
test-mockstarget documentation
PHASE1_COMPLETE.md:
- Updated examples with new syntax
- Documented build system integration
Examples
Simple test:
zig build test-mocks
Custom paths:
zig build run -- SDL_gpu.h --output=gen/bindings.zig --mocks=gen/mocks.c
Just bindings (no mocks):
zig build run -- header.h --output=bindings.zig
Backward Compatibility
Breaking change: The old --mocks flag (without a value) no longer works.
Migration:
# Old (no longer works)
zig build run -- header.h --output=out.zig --mocks
# New (required)
zig build run -- header.h --output=out.zig --mocks=header_mock.c
Testing
All existing tests pass:
- ✅ 7 mock generation unit tests
- ✅ Parser tests
- ✅ Integration with test_small.h
- ✅ Integration with SDL_gpu.h (169 declarations)
- ✅ New
test-mocksbuild target
Implementation Time
- Estimated: 30 minutes
- Actual: 25 minutes
- Flag update: 10 minutes
- Build target: 10 minutes
- Documentation: 5 minutes