Skip to content

Commit b02268f

Browse files
committed
add tests for renamed_parameter: chaining and not in signature
1 parent f3dc1b8 commit b02268f

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

tests/utils/test_deprecation.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,57 @@ def test_renamed_parameter_invalid_since_raises():
211211
@renamed_parameter(old="videotype", new="extensions", since="invalid-version")
212212
def fn(extensions=None):
213213
return extensions
214+
215+
216+
def test_renamed_parameter_new_not_in_signature_raises():
217+
with pytest.raises(ValueError, match="not a parameter"):
218+
219+
@renamed_parameter(old="foo", new="nonexistent")
220+
def fn(bar=None):
221+
return bar
222+
223+
224+
def test_new_not_in_signature_raises():
225+
"""Applying a rename whose 'new' is not in the signature raises an error."""
226+
with pytest.raises(ValueError, match="not a parameter"):
227+
228+
@renamed_parameter(old="videotype", new="video_type")
229+
def fn(extensions=None):
230+
return extensions
231+
232+
233+
def test_renamed_parameter_chaining_raises():
234+
"""Chaining renames A→B→C raises an error."""
235+
with pytest.raises(ValueError, match="chaining renames is not allowed"):
236+
237+
@renamed_parameter(old="A", new="B") # outer: A→B, but B is already deprecated to C
238+
@renamed_parameter(old="B", new="C") # inner: B→C
239+
def fn(B=None, C=None):
240+
return C or B
241+
242+
243+
def test_renamed_parameter_multiple_independent_renames():
244+
@renamed_parameter(old="batchsize", new="batch_size")
245+
@renamed_parameter(old="videotype", new="extensions")
246+
def fn(extensions=None, batch_size=None):
247+
return extensions, batch_size
248+
249+
with pytest.warns(DLCDeprecationWarning):
250+
result = fn(videotype="mp4")
251+
assert result == ("mp4", None)
252+
253+
with pytest.warns(DLCDeprecationWarning):
254+
result = fn(batchsize=4)
255+
assert result == (None, 4)
256+
257+
258+
def test_renamed_parameter_positional_arg_unaffected():
259+
@renamed_parameter(old="in_random_order", new="shuffle")
260+
def fn(shuffle=False):
261+
return shuffle
262+
263+
with warnings.catch_warnings():
264+
warnings.simplefilter("error", DLCDeprecationWarning)
265+
result = fn(True)
266+
267+
assert result is True

0 commit comments

Comments
 (0)