@@ -518,8 +518,7 @@ def path(self) -> AnyStr:
518518 dir_path = sep + dir_path
519519 else :
520520 dir_path = sep .join (names )
521- dir_path = self .filesystem .absnormpath (dir_path )
522- return dir_path
521+ return self .filesystem .absnormpath (dir_path )
523522
524523 @Deprecator ('property path' )
525524 def GetPath (self ):
@@ -3933,10 +3932,10 @@ def write(self, fd: int, contents: bytes) -> int:
39333932
39343933 def pipe (self ) -> Tuple [int , int ]:
39353934 read_fd , write_fd = os .pipe ()
3936- read_wrapper = FakePipeWrapper (self .filesystem , read_fd )
3935+ read_wrapper = FakePipeWrapper (self .filesystem , read_fd , False )
39373936 file_des = self .filesystem ._add_open_file (read_wrapper )
39383937 read_wrapper .filedes = file_des
3939- write_wrapper = FakePipeWrapper (self .filesystem , write_fd )
3938+ write_wrapper = FakePipeWrapper (self .filesystem , write_fd , True )
39403939 file_des = self .filesystem ._add_open_file (write_wrapper )
39413940 write_wrapper .filedes = file_des
39423941 return read_wrapper .filedes , write_wrapper .filedes
@@ -5429,9 +5428,10 @@ class FakePipeWrapper:
54295428 used in open files list.
54305429 """
54315430
5432- def __init__ (self , filesystem : FakeFilesystem , fd : int ):
5431+ def __init__ (self , filesystem : FakeFilesystem , fd : int , can_write : bool ):
54335432 self ._filesystem = filesystem
54345433 self .fd = fd # the real file descriptor
5434+ self .can_write = can_write
54355435 self .file_object = None
54365436 self .filedes : Optional [int ] = None
54375437
@@ -5475,6 +5475,18 @@ def close(self) -> None:
54755475 open_files .remove (self )
54765476 os .close (self .fd )
54775477
5478+ def readable (self ) -> bool :
5479+ """The pipe end can either be readable or writable."""
5480+ return not self .can_write
5481+
5482+ def writable (self ) -> bool :
5483+ """The pipe end can either be readable or writable."""
5484+ return self .can_write
5485+
5486+ def seekable (self ) -> bool :
5487+ """A pipe is not seekable."""
5488+ return False
5489+
54785490
54795491Deprecator .add (FakeFileWrapper , FakeFileWrapper .get_object , 'GetObject' )
54805492Deprecator .add (FakeFileWrapper , FakeFileWrapper .size , 'Size' )
@@ -5559,7 +5571,8 @@ def call(self, file_: Union[AnyStr, int],
55595571 assert wrappers is not None
55605572 existing_wrapper = wrappers [0 ]
55615573 assert isinstance (existing_wrapper , FakePipeWrapper )
5562- wrapper = FakePipeWrapper (self .filesystem , existing_wrapper .fd )
5574+ wrapper = FakePipeWrapper (self .filesystem , existing_wrapper .fd ,
5575+ existing_wrapper .can_write )
55635576 file_des = self .filesystem ._add_open_file (wrapper )
55645577 wrapper .filedes = file_des
55655578 return wrapper
0 commit comments