Skip to content

Commit

Permalink
Make test_nested.py pytest-friendly
Browse files Browse the repository at this point in the history
  • Loading branch information
Peque committed Jan 6, 2017
1 parent 1e1fb2c commit 7b0c89a
Showing 1 changed file with 38 additions and 23 deletions.
61 changes: 38 additions & 23 deletions tests/test_nested.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@
test dill's ability to handle nested functions
"""

import os
import math

import dill as pickle
pickle.settings['recurse'] = True
import math
#import pickle


# the nested function: pickle should fail here, but dill is ok.
def adder(augend):
Expand All @@ -22,6 +24,7 @@ def inner(addend):
return addend + augend + zero[0]
return inner


# rewrite the nested function using a class: standard pickle should work here.
class cadder(object):
def __init__(self, augend):
Expand All @@ -31,6 +34,7 @@ def __init__(self, augend):
def __call__(self, addend):
return addend + self.augend + self.zero[0]


# rewrite again, but as an old-style class
class c2adder:
def __init__(self, augend):
Expand All @@ -40,22 +44,22 @@ def __init__(self, augend):
def __call__(self, addend):
return addend + self.augend + self.zero[0]

# some basic stuff
a = [0, 1, 2]

# some basic class stuff
class basic(object):
pass


class basic2:
pass


if __name__ == '__main__':
x = 5
y = 1
x = 5
y = 1


# pickled basic stuff
def test_basic():
a = [0, 1, 2]
pa = pickle.dumps(a)
pmath = pickle.dumps(math) #XXX: FAILS in pickle
pmap = pickle.dumps(map)
Expand All @@ -65,46 +69,49 @@ class basic2:
lmap = pickle.loads(pmap)
assert list(map(math.sin, a)) == list(lmap(lmath.sin, la))

# pickled basic class stuff

def test_basic_class():
pbasic2 = pickle.dumps(basic2)
_pbasic2 = pickle.loads(pbasic2)()
pbasic = pickle.dumps(basic)
_pbasic = pickle.loads(pbasic)()

# pickled c2adder

def test_c2adder():
pc2adder = pickle.dumps(c2adder)
pc2add5 = pickle.loads(pc2adder)(x)
assert pc2add5(y) == x+y

# pickled cadder

def test_pickled_cadder():
pcadder = pickle.dumps(cadder)
pcadd5 = pickle.loads(pcadder)(x)
assert pcadd5(y) == x+y

# raw adder and inner

def test_raw_adder_and_inner():
add5 = adder(x)
assert add5(y) == x+y

# pickled adder

def test_pickled_adder():
padder = pickle.dumps(adder)
padd5 = pickle.loads(padder)(x)
assert padd5(y) == x+y

# pickled inner

def test_pickled_inner():
add5 = adder(x)
pinner = pickle.dumps(add5) #XXX: FAILS in pickle
p5add = pickle.loads(pinner)
assert p5add(y) == x+y

# testing moduledict where not __main__

def test_moduledict_where_not_main():
try:
import test_moduledict
error = None
from . import test_moduledict
except:
import sys
error = sys.exc_info()[1]
assert error is None
# clean up
import os
import test_moduledict
name = 'test_moduledict.py'
if os.path.exists(name) and os.path.exists(name+'c'):
os.remove(name+'c')
Expand All @@ -117,4 +124,12 @@ class basic2:
os.removedirs("__pycache__")


# EOF
if __name__ == '__main__':
test_basic()
test_basic_class()
test_c2adder()
test_pickled_cadder()
test_raw_adder_and_inner()
test_pickled_adder()
test_pickled_inner()
test_moduledict_where_not_main()

0 comments on commit 7b0c89a

Please sign in to comment.