diff --git a/codetools/contexts/tests/data/data_context.pickle b/codetools/contexts/tests/data/data_context.pickle new file mode 100644 index 0000000..d98517c Binary files /dev/null and b/codetools/contexts/tests/data/data_context.pickle differ diff --git a/codetools/contexts/tests/data_context_test_case.py b/codetools/contexts/tests/data_context_test_case.py index 3d09264..8982d1d 100644 --- a/codetools/contexts/tests/data_context_test_case.py +++ b/codetools/contexts/tests/data_context_test_case.py @@ -1,8 +1,10 @@ # Standard Library Imports from io import BytesIO +import os import sys +from importlib_resources import files import nose # Local library imports @@ -10,6 +12,22 @@ from codetools.contexts.tests.abstract_context_test_case import AbstractContextTestCase +def _create_data_context_pickle(): + """ Used to create a pickled DataContext stored in + codetools/contexts/tests/data/data_context.pickle. + + Function is kept for reference. Do not rerun unless you need to override + the existing pickled DataContext to be tested. + """ + d = DataContext(name='test_context') + d['a'] = 1 + d['b'] = 2 + + filename = os.fspath( + files('codetools.contexts.tests') / 'data' / 'data_context.pickle' + ) + d.save(filename) + class DataContextTestCase(AbstractContextTestCase): #### AbstactContextTestCase interface ###################################### @@ -41,6 +59,18 @@ def test_persistence(): assert set(d2.keys()) == set(['a', 'b']) assert d2['a'] == d['a'] assert d2['b'] == d['b'] + + +def test_persistence_backwards_compatibility(): + filename = os.fspath( + files('codetools.contexts.tests') / 'data' / 'data_context.pickle' + ) + d = DataContext.load(filename) + + assert d.name == 'test_context' + assert set(d.keys()) == set(['a', 'b']) + assert d['a'] == 1 + assert d['b'] == 2 class RestrictedValues(DataContext): @@ -118,4 +148,3 @@ class _TestContext(DataContext): assert a == b assert a != c - diff --git a/setup.py b/setup.py index 4714e1e..d2cecb6 100644 --- a/setup.py +++ b/setup.py @@ -144,6 +144,7 @@ def write_version_py(filename='codetools/_version.py'): package_data={ 'codetools': [ 'contexts/images/*.png', + 'contexts/tests/data/*', 'contexts/tests/with_mask_codes*.py', ], },