Skip to content

Commit fc44bc8

Browse files
authored
test: Add unit test for get_hash (#2025)
1 parent 6bf06a7 commit fc44bc8

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

tests/unit/functions/test_remote_function_utils.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,78 @@ def test_package_existed_helper():
243243
assert not _utils._package_existed([], "pandas")
244244

245245

246+
def _function_add_one(x):
247+
return x + 1
248+
249+
250+
def _function_add_two(x):
251+
return x + 2
252+
253+
254+
@pytest.mark.parametrize(
255+
"func1, func2, should_be_equal, description",
256+
[
257+
(
258+
_function_add_one,
259+
_function_add_one,
260+
True,
261+
"Identical functions should have the same hash.",
262+
),
263+
(
264+
_function_add_one,
265+
_function_add_two,
266+
False,
267+
"Different functions should have different hashes.",
268+
),
269+
],
270+
)
271+
def test_get_hash_without_package_requirements(
272+
func1, func2, should_be_equal, description
273+
):
274+
"""Tests function hashes without any requirements."""
275+
hash1 = _utils.get_hash(func1)
276+
hash2 = _utils.get_hash(func2)
277+
278+
if should_be_equal:
279+
assert hash1 == hash2, f"FAILED: {description}"
280+
else:
281+
assert hash1 != hash2, f"FAILED: {description}"
282+
283+
284+
@pytest.mark.parametrize(
285+
"reqs1, reqs2, should_be_equal, description",
286+
[
287+
(
288+
None,
289+
["pandas>=1.0"],
290+
False,
291+
"Hash with or without requirements should differ from hash.",
292+
),
293+
(
294+
["pandas", "numpy", "scikit-learn"],
295+
["numpy", "scikit-learn", "pandas"],
296+
True,
297+
"Same requirements should produce the same hash.",
298+
),
299+
(
300+
["pandas==1.0"],
301+
["pandas==2.0"],
302+
False,
303+
"Different requirement versions should produce different hashes.",
304+
),
305+
],
306+
)
307+
def test_get_hash_with_package_requirements(reqs1, reqs2, should_be_equal, description):
308+
"""Tests how package requirements affect the final hash."""
309+
hash1 = _utils.get_hash(_function_add_one, package_requirements=reqs1)
310+
hash2 = _utils.get_hash(_function_add_one, package_requirements=reqs2)
311+
312+
if should_be_equal:
313+
assert hash1 == hash2, f"FAILED: {description}"
314+
else:
315+
assert hash1 != hash2, f"FAILED: {description}"
316+
317+
246318
# Helper functions for signature inspection tests
247319
def _func_one_arg_annotated(x: int) -> int:
248320
"""A function with one annotated arg and an annotated return type."""

0 commit comments

Comments
 (0)