feat: case-insensitive input/ matching and test improvements#92
Conversation
Use .lower() comparison for input/ directory detection in core.py and io_utils.py so that Input/, INPUT/, etc. trigger the grandparent logic on case-insensitive filesystems. Collapse three extension-specific tests into a single parametrized test and add edge case coverage for non-YAML files in input/. Fixes #86 Fixes #89 Fixes #90
Bump version 0.2.4 -> 0.2.5 across pyproject.toml, __init__.py, uv.lock, wiki API references, and CHANGELOG. Includes case-insensitive input/ directory matching fix and parametrized test improvements.
PR Review: #92 - Case-Insensitive
|
Test Plan
|
Comprehensive PR Review (pr-review-toolkit)Agents run: code-reviewer, pr-test-analyzer, silent-failure-hunter, comment-analyzer, code-simplifier Critical Issues (0 found)None. No bugs, security vulnerabilities, or blocking defects in the changed code. Important Issues (2 found)1. [silent-failure-hunter]
2. [comment-analyzer] Docstrings not updated for case-insensitive behavior
Suggestions (5 found)3. [silent-failure-hunter]
4. [silent-failure-hunter] Warning at
5. [code-simplifier] Merge duplicate warning tests
6. [comment-analyzer] CHANGELOG issue attribution
7. [pr-test-analyzer] Minor test coverage gaps
Strengths
Recommended Action
Overall verdict: This PR is safe to merge. The important items are documentation/defense-in-depth concerns, not correctness bugs. |
- Add root-path guard to resolve_paths_for_read for degenerate parent.parent when input/ is at filesystem root - Update docstrings to document case-insensitive input/ matching - Merge duplicate warning tests into single parametrized test - Fix CHANGELOG attribution: separate test issues (#89, #90) from path-resolution fix (#86) Deferred to issues: #93, #94, #95
PR Review Fixes Applied (c3119c7)Fixed Items
Deferred to Issues
Informational (No Action)
|
Summary
Fixes #86, fixes #89, fixes #90
Case-insensitive
input/directory matching for cross-platform filesystem support, test consolidation via parametrization, and edge case coverage for non-YAML files.Changes
.lower()normalization forinput/directory checks incore.py(lines 553, 572) andio_utils.py(line 65). HandlesInput/,INPUT/,iNpUt/on case-preserving filesystems (macOS HFS+, Windows NTFS).@pytest.mark.parametrizetest covering.yaml,.yml,.YAML.input/withoutdata_dirraisesValueError.Test Plan
test_infer_data_dir.py(including 3 new parametrized case-variant tests)Input,INPUT,iNpUt) in both test filesValueError