langchain
be2c7f1a - test(core): add tests for formatting utils and merge functions (#34511)

Commit
39 days ago
test(core): add tests for formatting utils and merge functions (#34511) ## Summary Add comprehensive test coverage for previously untested utilities in `langchain-core`. ## Changes ### New file: `test_formatting.py` (18 tests) Tests for `StrictFormatter` class: - `test_vformat_with_keyword_args` - basic functionality - `test_vformat_with_multiple_keyword_args` - multiple placeholders - `test_vformat_with_empty_string` - edge case - `test_vformat_with_no_placeholders` - literal strings - `test_vformat_raises_on_positional_args` - error handling - `test_vformat_raises_on_multiple_positional_args` - error handling - `test_vformat_with_special_characters` - newlines, tabs - `test_vformat_with_unicode` - emoji, CJK characters - `test_vformat_with_format_spec` - format specifications - `test_vformat_with_nested_braces` - escaped braces Tests for `validate_input_variables`: - `test_validate_input_variables_success` - valid input - `test_validate_input_variables_with_extra_variables` - extra vars allowed - `test_validate_input_variables_with_missing_variable` - KeyError - `test_validate_input_variables_empty_format` - edge case - `test_validate_input_variables_no_placeholders` - edge case Tests for `formatter` singleton: - `test_formatter_is_strict_formatter` - type check - `test_formatter_format_works` - functionality - `test_formatter_rejects_positional_args` - error handling ### Extended `test_utils.py` (14 new tests) Tests for `merge_lists`: - Parametrized tests covering None handling, simple merge, empty lists, index-based merging - `test_merge_lists_multiple_others` - merging 3+ lists - `test_merge_lists_all_none` - all None inputs Tests for `merge_obj`: - Parametrized tests for None, strings, dicts, lists, equal values - `test_merge_obj_type_mismatch` - TypeError on type mismatch - `test_merge_obj_unmergeable_values` - ValueError on different values - `test_merge_obj_tuple_raises` - ValueError for tuples ## Test plan - [x] Tests follow existing patterns in the codebase - [x] All tests are unit tests (no network calls) - [x] Tests cover happy paths and error conditions - [x] Tests verify no mutation of input data ## AI Disclosure This contribution was developed with AI assistance (Claude Code). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: yurekami <yurekami@users.noreply.github.com> Co-authored-by: Mason Daugherty <github@mdrxy.com> Co-authored-by: Mason Daugherty <mason@langchain.dev>
Author
Parents
Loading