diff options
author | Michael W. Hudson <mwh@python.net> | 2002-03-06 17:11:18 (GMT) |
---|---|---|
committer | Michael W. Hudson <mwh@python.net> | 2002-03-06 17:11:18 (GMT) |
commit | 0e02530a798807db572968ba914ae3694d71eb91 (patch) | |
tree | 9e7fad6916145181df1cc9ee59eba394eb753989 | |
parent | ce358e3015bc8cafdf949dee624b01f4a38bfad2 (diff) | |
download | cpython-0e02530a798807db572968ba914ae3694d71eb91.zip cpython-0e02530a798807db572968ba914ae3694d71eb91.tar.gz cpython-0e02530a798807db572968ba914ae3694d71eb91.tar.bz2 |
Special support for pickling os.stat and os.stat_vfs results portably
(the types come from different modules on different platforms).
Added tests for pickling these types.
May be a bugfix candidate.
-rw-r--r-- | Lib/os.py | 20 | ||||
-rw-r--r-- | Lib/test/pickletester.py | 11 |
2 files changed, 31 insertions, 0 deletions
@@ -602,3 +602,23 @@ if _exists("fork"): stdout, stdin = popen2.popen4(cmd, bufsize) return stdin, stdout __all__.append("popen4") + +import copy_reg as _copy_reg + +def _make_stat_result(tup, dict): + return stat_result(tup, dict) + +def _pickle_stat_result(sr): + (type, args) = sr.__reduce__() + return (_make_stat_result, args) + +_copy_reg.pickle(stat_result, _pickle_stat_result,_make_stat_result) + +def _make_statvfs_result(tup, dict): + return statvfs_result(tup, dict) + +def _pickle_statvfs_result(sr): + (type, args) = sr.__reduce__() + return (_make_statvfs_result, args) + +_copy_reg.pickle(statvfs_result, _pickle_statvfs_result,_make_statvfs_result) diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index e2d2580..e16428f 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -254,6 +254,17 @@ class AbstractPickleTests(unittest.TestCase): s = self.dumps(t) u = self.loads(s) self.assertEqual(t, u) + import os + if hasattr(os, "stat"): + t = os.stat(os.curdir) + s = self.dumps(t) + u = self.loads(s) + self.assertEqual(t, u) + if hasattr(os, "statvfs"): + t = os.statvfs(os.curdir) + s = self.dumps(t) + u = self.loads(s) + self.assertEqual(t, u) class AbstractPickleModuleTests(unittest.TestCase): |