diff options
| author | Serhiy Storchaka <storchaka@gmail.com> | 2017-04-08 09:55:07 +0300 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-04-08 09:55:07 +0300 | 
| commit | b785396ab451b0c9d6ae9ee5a9e56c810209a6cb (patch) | |
| tree | e84a9440891b8a488be7ef8046fc949a7962837c /Lib/test | |
| parent | b879fe82e7e5c3f7673c9a7fa4aad42bd05445d8 (diff) | |
| download | cpython-git-b785396ab451b0c9d6ae9ee5a9e56c810209a6cb.tar.gz | |
bpo-29998: Pickling and copying ImportError now preserves name and path (#1010)
attributes.
Diffstat (limited to 'Lib/test')
| -rw-r--r-- | Lib/test/test_exceptions.py | 20 | 
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 2cac6c530a..e6fa34610d 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -1,5 +1,6 @@  # Python test set -- part 5, built-in exceptions +import copy  import os  import sys  import unittest @@ -1126,6 +1127,25 @@ class ImportErrorTests(unittest.TestCase):              exc = ImportError(arg)              self.assertEqual(str(arg), str(exc)) +    def test_copy_pickle(self): +        for kwargs in (dict(), +                       dict(name='somename'), +                       dict(path='somepath'), +                       dict(name='somename', path='somepath')): +            orig = ImportError('test', **kwargs) +            for proto in range(pickle.HIGHEST_PROTOCOL + 1): +                exc = pickle.loads(pickle.dumps(orig, proto)) +                self.assertEqual(exc.args, ('test',)) +                self.assertEqual(exc.msg, 'test') +                self.assertEqual(exc.name, orig.name) +                self.assertEqual(exc.path, orig.path) +            for c in copy.copy, copy.deepcopy: +                exc = c(orig) +                self.assertEqual(exc.args, ('test',)) +                self.assertEqual(exc.msg, 'test') +                self.assertEqual(exc.name, orig.name) +                self.assertEqual(exc.path, orig.path) +  if __name__ == '__main__':      unittest.main()  | 
