[pypy-svn] r64311 - in pypy/trunk/pypy/module/_file: . test

afa at codespeak.net afa at codespeak.net
Fri Apr 17 23:28:17 CEST 2009


Author: afa
Date: Fri Apr 17 23:28:16 2009
New Revision: 64311

Modified:
   pypy/trunk/pypy/module/_file/interp_file.py
   pypy/trunk/pypy/module/_file/test/test_file_extra.py
Log:
Fix repr of file objects:
if filename is a str, backslashes are not doubled.
if filename is a unicode, backslashes are doubled.
This fixes test_repr on windows.


Modified: pypy/trunk/pypy/module/_file/interp_file.py
==============================================================================
--- pypy/trunk/pypy/module/_file/interp_file.py	(original)
+++ pypy/trunk/pypy/module/_file/interp_file.py	Fri Apr 17 23:28:16 2009
@@ -387,8 +387,16 @@
             head = "closed"
         else:
             head = "open"
-        repr_filename = self.space.str_w(self.space.repr(self.w_name))
-        info = "%s file %s, mode '%s'" % (head, repr_filename, self.mode)
+        if self.space.abstract_isinstance_w(self.w_name, self.space.w_str):
+            info = "%s file '%s', mode '%s'" % (
+                head,
+                self.space.str_w(self.w_name),
+                self.mode)
+        else:
+            info = "%s file %s, mode '%s'" % (
+                head,
+                self.space.str_w(self.space.repr(self.w_name)),
+                self.mode)
         return self.getrepr(self.space, info)
     file__repr__.unwrap_spec = ['self']
 

Modified: pypy/trunk/pypy/module/_file/test/test_file_extra.py
==============================================================================
--- pypy/trunk/pypy/module/_file/test/test_file_extra.py	(original)
+++ pypy/trunk/pypy/module/_file/test/test_file_extra.py	Fri Apr 17 23:28:16 2009
@@ -206,6 +206,15 @@
         f.close()
         assert f.closed == True
 
+    def test_repr(self):
+        assert repr(self.file).startswith(
+            "<open file '%s', mode '%s' at 0x" % (
+                self.expected_filename, self.expected_mode))
+        self.file.close()
+        assert repr(self.file).startswith(
+            "<closed file '%s', mode '%s' at 0x" % (
+                self.expected_filename, self.expected_mode))
+        
 # ____________________________________________________________
 #
 #  Basic 'rb' mode
@@ -269,7 +278,7 @@
 #  Files built with fdopen()
 
 class AppTestFdOpen(BaseROTests):
-    expected_filename  = None
+    expected_filename  = '<fdopen>'
     expected_mode      = 'rb'
     extra_args = ()
 
@@ -569,6 +578,7 @@
 
     def test_repr_unicode_filename(self):
         f = open(unicode(self.temptestfile), 'w')
-        assert repr(f).startswith("<open file u'" + self.temptestfile)
+        assert repr(f).startswith("<open file " + 
+                                  repr(unicode(self.temptestfile)))
         f.close()
 



More information about the Pypy-commit mailing list