Skip to content

Commit 9433c89

Browse files
committed
add test for legacy _create_function()
1 parent 1476818 commit 9433c89

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

tests/test_functions.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import functools
99
import dill
1010
import sys
11+
from dill._dill import _create_function
1112
dill.settings['recurse'] = True
1213

1314

@@ -102,5 +103,26 @@ def test_functions():
102103
assert dill.loads(dumped_func_e)(1, 2, 3, e2=4) == 12
103104
assert dill.loads(dumped_func_e)(1, 2, 3, e2=4, e3=5) == 15''')
104105

106+
def test_legacy_constructor():
107+
if is_py3():
108+
fields = ('__code__', '__globals__', '__name__', '__defaults__',
109+
'__closure__', '__dict__', '__kwdefaults__')
110+
else:
111+
fields = ('func_code', 'func_globals', 'func_name', 'func_defaults',
112+
'func_closure', '__dict__')
113+
members = [getattr(function_d, f) for f in fields]
114+
115+
# Old pickle.
116+
old_func = _create_function(*members)
117+
# Recent pickle (dill>=0.3.5).
118+
new_func = _create_function(*members[:5])
119+
setattr(new_func, fields[5], members[5])
120+
if is_py3():
121+
setattr(new_func, fields[6], members[6])
122+
123+
for field in fields:
124+
assert getattr(old_func, field) == getattr(new_func, field)
125+
105126
if __name__ == '__main__':
106127
test_functions()
128+
test_legacy_constructor()

0 commit comments

Comments
 (0)