[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