0002-formdef-prevent-hiding-of-EOFError-on-new-style-pick.patch
tests/test_formdef.py | ||
---|---|---|
622 | 622 |
assert formdef.fields[0].label == 'Test' |
623 | 623 |
assert formdef.workflow.possible_status[0].items[0].varname == 'blah' |
624 | 624 |
assert formdef.workflow.possible_status[0].items[0].formdef.fields[0].varname == 'str' |
625 | ||
626 | ||
627 |
def test_lightweight(pub): |
|
628 |
FormDef.wipe() |
|
629 |
formdef = FormDef() |
|
630 |
formdef.name = 'basic formdef' |
|
631 |
formdef.fields = [ |
|
632 |
StringField(id='1', label='Test', type='string', varname='foo'), |
|
633 |
] |
|
634 |
formdef.store() |
|
635 | ||
636 |
# load works |
|
637 |
FormDef.get(formdef.id) |
|
638 | ||
639 |
# truncate the pickle, now load should fail |
|
640 |
with open(formdef.get_object_filename(), 'rb+') as fd: |
|
641 |
pickle.load(fd) |
|
642 |
fd.truncate(fd.tell()) |
|
643 |
with pytest.raises(KeyError): |
|
644 |
FormDef.get(formdef.id) |
wcs/formdef.py | ||
---|---|---|
1551 | 1551 |
try: |
1552 | 1552 |
o.fields = pickle.load(fd, **PICKLE_KWARGS) |
1553 | 1553 |
except EOFError: |
1554 |
pass # old format |
|
1554 |
if isinstance(getattr(o, 'fields', None), list): |
|
1555 |
pass # old format |
|
1556 |
else: |
|
1557 |
raise |
|
1555 | 1558 |
return o |
1556 | 1559 | |
1557 | 1560 |
@classmethod |
1558 |
- |