Skip to content

Commit e779f7d

Browse files
ianpittwoodclaude
andcommitted
test(soci): cover explicit-default-value cases in SociOptions.update
Adds two regression tests asserting that when a user explicitly sets a field to its default value (scalar default False, list default empty), self still wins over `other` in `update()`. These guard the `model_fields_set`-based check introduced when the default_factory bug was fixed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 21f38ab commit e779f7d

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

posit-bakery/test/plugins/builtin/soci/test_options.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,21 @@ def test_update_self_wins_for_list_fields_when_explicitly_set():
7171
merged = base.update(override)
7272
assert merged.prefetch_files == ["/x"]
7373
assert merged.optimizations == ["yyy"]
74+
75+
76+
def test_update_scalar_explicitly_set_to_default():
77+
"""User explicitly sets a scalar to its default value; self should still win."""
78+
base = SociOptions(enabled=False) # explicitly set to default False
79+
override = SociOptions(enabled=True)
80+
merged = base.update(override)
81+
# enabled is in base.model_fields_set, so base's value should win
82+
assert merged.enabled is False
83+
84+
85+
def test_update_list_explicitly_set_to_empty():
86+
"""User explicitly sets a list to empty (its default); self should still win."""
87+
base = SociOptions(prefetch_files=[]) # explicitly set to []
88+
override = SociOptions(prefetch_files=["/a"])
89+
merged = base.update(override)
90+
# prefetch_files is in base.model_fields_set, so base's value should win
91+
assert merged.prefetch_files == []

0 commit comments

Comments
 (0)