@@ -518,8 +518,7 @@ def path(self) -> AnyStr:
518
518
dir_path = sep + dir_path
519
519
else :
520
520
dir_path = sep .join (names )
521
- dir_path = self .filesystem .absnormpath (dir_path )
522
- return dir_path
521
+ return self .filesystem .absnormpath (dir_path )
523
522
524
523
@Deprecator ('property path' )
525
524
def GetPath (self ):
@@ -3933,10 +3932,10 @@ def write(self, fd: int, contents: bytes) -> int:
3933
3932
3934
3933
def pipe (self ) -> Tuple [int , int ]:
3935
3934
read_fd , write_fd = os .pipe ()
3936
- read_wrapper = FakePipeWrapper (self .filesystem , read_fd )
3935
+ read_wrapper = FakePipeWrapper (self .filesystem , read_fd , False )
3937
3936
file_des = self .filesystem ._add_open_file (read_wrapper )
3938
3937
read_wrapper .filedes = file_des
3939
- write_wrapper = FakePipeWrapper (self .filesystem , write_fd )
3938
+ write_wrapper = FakePipeWrapper (self .filesystem , write_fd , True )
3940
3939
file_des = self .filesystem ._add_open_file (write_wrapper )
3941
3940
write_wrapper .filedes = file_des
3942
3941
return read_wrapper .filedes , write_wrapper .filedes
@@ -5429,9 +5428,10 @@ class FakePipeWrapper:
5429
5428
used in open files list.
5430
5429
"""
5431
5430
5432
- def __init__ (self , filesystem : FakeFilesystem , fd : int ):
5431
+ def __init__ (self , filesystem : FakeFilesystem , fd : int , can_write : bool ):
5433
5432
self ._filesystem = filesystem
5434
5433
self .fd = fd # the real file descriptor
5434
+ self .can_write = can_write
5435
5435
self .file_object = None
5436
5436
self .filedes : Optional [int ] = None
5437
5437
@@ -5475,6 +5475,18 @@ def close(self) -> None:
5475
5475
open_files .remove (self )
5476
5476
os .close (self .fd )
5477
5477
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
+
5478
5490
5479
5491
Deprecator .add (FakeFileWrapper , FakeFileWrapper .get_object , 'GetObject' )
5480
5492
Deprecator .add (FakeFileWrapper , FakeFileWrapper .size , 'Size' )
@@ -5559,7 +5571,8 @@ def call(self, file_: Union[AnyStr, int],
5559
5571
assert wrappers is not None
5560
5572
existing_wrapper = wrappers [0 ]
5561
5573
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 )
5563
5576
file_des = self .filesystem ._add_open_file (wrapper )
5564
5577
wrapper .filedes = file_des
5565
5578
return wrapper
0 commit comments