diff options
author | Pieter Mulder <pmulder@proigia.nl> | 2016-06-29 11:15:44 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-06-29 17:21:31 -0400 |
commit | fcfff77128174fe5f5e82d2897c5c76df308c8ed (patch) | |
tree | 39d957baba905e82344c6b6f58ead4408a39838f /test/base/test_utils.py | |
parent | 7c74d702a9632a8c7264d6972e46985de3fb2487 (diff) | |
download | sqlalchemy-fcfff77128174fe5f5e82d2897c5c76df308c8ed.tar.gz |
Repair pickling for Properties object
Fixed bug whereby the ``__getstate__`` / ``__setstate__``
methods for sqlalchemy.util.Properties were
non-working due to the transition in the 1.0 series to ``__slots__``.
The issue potentially impacted some third-party applications.
Pull request courtesy Pieter Mulder.
Fixes: #3728
Change-Id: I01ebd425bbfe145747fea2edd0d2d412c74fd84d
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/286
(cherry picked from commit cab57e9bab04fbdea44690c08dff379a29eaab32)
Diffstat (limited to 'test/base/test_utils.py')
-rw-r--r-- | test/base/test_utils.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/base/test_utils.py b/test/base/test_utils.py index fcb9a59a3..7e2473dee 100644 --- a/test/base/test_utils.py +++ b/test/base/test_utils.py @@ -2256,3 +2256,38 @@ class TestClassProperty(fixtures.TestBase): eq_(B.something, {'foo': 1, 'bazz': 2}) +class TestProperties(fixtures.TestBase): + + def test_pickle(self): + data = {'hello': 'bla'} + props = util.Properties(data) + + for loader, dumper in picklers(): + s = dumper(props) + p = loader(s) + + eq_(props._data, p._data) + eq_(props.keys(), p.keys()) + + def test_pickle_immuatbleprops(self): + data = {'hello': 'bla'} + props = util.Properties(data).as_immutable() + + for loader, dumper in picklers(): + s = dumper(props) + p = loader(s) + + eq_(props._data, p._data) + eq_(props.keys(), p.keys()) + + def test_pickle_orderedprops(self): + data = {'hello': 'bla'} + props = util.OrderedProperties() + props.update(data) + + for loader, dumper in picklers(): + s = dumper(props) + p = loader(s) + + eq_(props._data, p._data) + eq_(props.keys(), p.keys()) |