[pypy-svn] r58835 - in pypy/branch/2.5-merge: lib-python/modified-2.5.2/test pypy/module/_file pypy/module/_file/test
iko at codespeak.net
iko at codespeak.net
Wed Oct 8 16:48:58 CEST 2008
Author: iko
Date: Wed Oct 8 16:48:57 2008
New Revision: 58835
Modified:
pypy/branch/2.5-merge/lib-python/modified-2.5.2/test/test_file.py
pypy/branch/2.5-merge/pypy/module/_file/interp_file.py
pypy/branch/2.5-merge/pypy/module/_file/test/test_file_extra.py
Log:
(iko, cfbolz)
Fix file tests
Modified: pypy/branch/2.5-merge/lib-python/modified-2.5.2/test/test_file.py
==============================================================================
--- pypy/branch/2.5-merge/lib-python/modified-2.5.2/test/test_file.py (original)
+++ pypy/branch/2.5-merge/lib-python/modified-2.5.2/test/test_file.py Wed Oct 8 16:48:57 2008
@@ -6,6 +6,7 @@
from weakref import proxy
from test.test_support import TESTFN, findfile, run_unittest
+from test.test_support import gc_collect, impl_detail
from UserList import UserList
class AutoFileTests(unittest.TestCase):
@@ -26,6 +27,7 @@
self.assertEquals(self.f.name, p.name)
self.f.close()
self.f = None
+ gc_collect()
self.assertRaises(ReferenceError, getattr, p, 'name')
def testAttributes(self):
@@ -218,6 +220,7 @@
finally:
os.unlink(TESTFN)
+ @impl_detail
def testIteration(self):
# Test the complex interaction when mixing file-iteration and the
# various read* methods. Ostensibly, the mixture could just be tested
Modified: pypy/branch/2.5-merge/pypy/module/_file/interp_file.py
==============================================================================
--- pypy/branch/2.5-merge/pypy/module/_file/interp_file.py (original)
+++ pypy/branch/2.5-merge/pypy/module/_file/interp_file.py Wed Oct 8 16:48:57 2008
@@ -8,6 +8,7 @@
from pypy.interpreter.gateway import ObjSpace, W_Root, Arguments
from pypy.interpreter.typedef import TypeDef, GetSetProperty
from pypy.interpreter.typedef import interp_attrproperty, make_weakref_descr
+from pypy.interpreter.typedef import interp_attrproperty_w
from pypy.interpreter.gateway import interp2app
@@ -37,9 +38,9 @@
self.clear_all_weakrefs()
self.direct_close()
- def fdopenstream(self, stream, fd, mode, name):
+ def fdopenstream(self, stream, fd, mode, w_name):
self.fd = fd
- self.name = name
+ self.w_name = w_name
self.softspace = 0 # Required according to file object docs
self.encoding = None # This is not used internally by file objects
self.mode = mode
@@ -78,12 +79,13 @@
# The 'direct_' methods assume that the caller already acquired the
# file lock. They don't convert StreamErrors to OperationErrors, too.
- def direct___init__(self, name, mode='r', buffering=-1):
+ def direct___init__(self, w_name, mode='r', buffering=-1):
+ name = self.space.str_w(w_name)
self.direct_close()
self.check_mode_ok(mode)
stream = streamio.open_file_as_stream(name, mode, buffering)
fd = stream.try_to_find_file_descriptor()
- self.fdopenstream(stream, fd, mode, name)
+ self.fdopenstream(stream, fd, mode, w_name)
def direct___enter__(self):
if self.stream is None:
@@ -101,7 +103,7 @@
self.direct_close()
self.check_mode_ok(mode)
stream = streamio.fdopen_as_stream(fd, mode, buffering)
- self.fdopenstream(stream, fd, mode, '<fdopen>')
+ self.fdopenstream(stream, fd, mode, self.space.wrap('<fdopen>'))
def direct_close(self):
space = self.space
@@ -282,7 +284,7 @@
class_scope['_exposed_method_names'].append(name)
- _decl(locals(), "__init__", ['self', str, str, int],
+ _decl(locals(), "__init__", ['self', W_Root, str, int],
"""Opens a file.""")
_decl(locals(), "__enter__", ['self'], """__enter__() -> self.""")
@@ -384,7 +386,8 @@
head = "closed"
else:
head = "open"
- info = "%s file '%s', mode '%s'" % (head, self.name, self.mode)
+ repr_filename = self.space.str_w(self.space.repr(self.w_name))
+ info = "%s file %s, mode '%s'" % (head, repr_filename, self.mode)
return self.getrepr(self.space, info)
file__repr__.unwrap_spec = ['self']
@@ -467,7 +470,7 @@
""",
__new__ = interp2app(descr_file__new__),
fdopen = interp2app(descr_file_fdopen, as_classmethod=True),
- name = interp_attrproperty('name', cls=W_File, doc="file name"),
+ name = interp_attrproperty_w('w_name', cls=W_File, doc="file name"),
mode = interp_attrproperty('mode', cls=W_File,
doc = "file mode ('r', 'U', 'w', 'a', "
"possibly with 'b' or '+' added)"),
Modified: pypy/branch/2.5-merge/pypy/module/_file/test/test_file_extra.py
==============================================================================
--- pypy/branch/2.5-merge/pypy/module/_file/test/test_file_extra.py (original)
+++ pypy/branch/2.5-merge/pypy/module/_file/test/test_file_extra.py Wed Oct 8 16:48:57 2008
@@ -566,3 +566,9 @@
def test_docstrings(self):
assert file.closed.__doc__ == 'True if the file is closed'
+
+ def test_repr_unicode_filename(self):
+ f = open(unicode(self.temptestfile), 'w')
+ assert repr(f).startswith("<open file u'" + self.temptestfile)
+ f.close()
+
More information about the Pypy-commit
mailing list