[pypy-svn] r31050 - in pypy/dist/pypy/module/bz2: . test

rhymes at codespeak.net rhymes at codespeak.net
Sat Aug 5 23:07:27 CEST 2006


Author: rhymes
Date: Sat Aug  5 23:07:24 2006
New Revision: 31050

Modified:
   pypy/dist/pypy/module/bz2/interp_bz2.py
   pypy/dist/pypy/module/bz2/test/test_bz2.py
Log:
name, mode, closed BZ2File properties are in

Modified: pypy/dist/pypy/module/bz2/interp_bz2.py
==============================================================================
--- pypy/dist/pypy/module/bz2/interp_bz2.py	(original)
+++ pypy/dist/pypy/module/bz2/interp_bz2.py	Sat Aug  5 23:07:24 2006
@@ -5,6 +5,7 @@
 from pypy.interpreter.error import OperationError
 from pypy.interpreter.baseobjspace import W_Root, ObjSpace, Wrappable
 from pypy.interpreter.typedef import TypeDef, GetSetProperty
+from pypy.interpreter.typedef import interp_attrproperty
 from pypy.interpreter.gateway import interp2app
 from ctypes import *
 import ctypes.util
@@ -328,12 +329,15 @@
         self.pos = 0
         self.size = 0
         
-        self._init_bz2file(filename, mode, buffering, compresslevel)        
+        self.filename = filename
+        self.mode_string = ""
+
+        self._init_bz2file(mode, buffering, compresslevel)        
     
-    def _init_bz2file(self, filename, mode_, buffering, compresslevel):
+    def _init_bz2file(self, mode_, buffering, compresslevel):
         self.size = -1
         
-        name = filename
+        name = self.filename
         mode_char = ""
         mode_list = mode_
         
@@ -362,6 +366,7 @@
         if mode_char == "":
             mode_char = 'r'
         mode = ('wb', 'rb')[mode_char == 'r']
+        self.mode_string = mode
         
         # open the file and set the buffer
         try:
@@ -611,7 +616,7 @@
         return self.space.wrap("".join(buf_lst))
     read.unwrap_spec = ['self', int]
     
-    # accessor for newlines property
+    # accessors for properties
     def fget_newlines(space, self):
         if self.f_newlinetypes == NEWLINE_UNKNOWN:
             return space.wrap(None)
@@ -633,8 +638,12 @@
             raise OperationError(space.w_SystemError,
                 space.wrap(
                     "Unknown newlines value 0x%d\n" % hex(self.f_newlinetypes)))
+    
+    def fget_closed(space, self):
+        return space.wrap(self.mode == MODE_CLOSED)
 
 get_newlines = GetSetProperty(_BZ2File.fget_newlines, cls=_BZ2File)
+get_closed = GetSetProperty(_BZ2File.fget_closed, cls=_BZ2File)
 _BZ2File.typedef = TypeDef("_BZ2File",
     close = interp2app(_BZ2File.close, unwrap_spec=_BZ2File.close.unwrap_spec),
     tell = interp2app(_BZ2File.tell, unwrap_spec=_BZ2File.tell.unwrap_spec),
@@ -643,6 +652,9 @@
         unwrap_spec=_BZ2File.readline.unwrap_spec),
     read = interp2app(_BZ2File.read, unwrap_spec=_BZ2File.read.unwrap_spec),
     newlines = get_newlines,
+    name = interp_attrproperty("filename", _BZ2File),
+    mode = interp_attrproperty("mode_string", _BZ2File),
+    closed = get_closed,
 )
 
 def BZ2File(space, filename, mode='r', buffering=-1, compresslevel=9):

Modified: pypy/dist/pypy/module/bz2/test/test_bz2.py
==============================================================================
--- pypy/dist/pypy/module/bz2/test/test_bz2.py	(original)
+++ pypy/dist/pypy/module/bz2/test/test_bz2.py	Sat Aug  5 23:07:24 2006
@@ -13,6 +13,17 @@
     def setup_class(cls):
         space = gettestobjspace(usemodules=('bz2',))
         cls.space = space
+        
+    def test_attributes(self):
+        from bz2 import BZ2File
+        
+        bz2f = BZ2File("foo", mode="w")
+        assert bz2f.name == "foo"
+        assert bz2f.newlines == None
+        assert bz2f.mode == "wb"
+        assert bz2f.closed == False
+        bz2f.close()
+        assert bz2f.closed == True
     
     def test_creation(self):
         from bz2 import BZ2File
@@ -489,13 +500,7 @@
 #         f = open(self.filename, 'rb')
 #         self.assertEqual(self.decompress(f.read()), self.TEXT)
 #         f.close()
-#     def testOpenDel(self):
-#         # "Test opening and deleting a file many times"
-#         self.createTempFile()
-#         for i in xrange(10000):
-#             o = BZ2File(self.filename)
-#             del o
-# 
+#
 #     def testBug1191043(self):
 #         # readlines() for files containing no newline
 #         data = 'BZh91AY&SY\xd9b\x89]\x00\x00\x00\x03\x80\x04\x00\x02\x00\x0c\x00 \x00!\x9ah3M\x13<]\xc9\x14\xe1BCe\x8a%t'



More information about the Pypy-commit mailing list