Added file-like methods to DontReadFromInput (#10173)
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com> Fixes #10150
This commit is contained in:
		
							parent
							
								
									b4ab2f0942
								
							
						
					
					
						commit
						1c31a7e659
					
				|  | @ -0,0 +1 @@ | ||||||
|  | :data:`sys.stdin` now contains all expected methods of a file-like object when capture is enabled. | ||||||
|  | @ -203,12 +203,39 @@ class DontReadFromInput: | ||||||
|     def fileno(self) -> int: |     def fileno(self) -> int: | ||||||
|         raise UnsupportedOperation("redirected stdin is pseudofile, has no fileno()") |         raise UnsupportedOperation("redirected stdin is pseudofile, has no fileno()") | ||||||
| 
 | 
 | ||||||
|  |     def flush(self) -> None: | ||||||
|  |         raise UnsupportedOperation("redirected stdin is pseudofile, has no flush()") | ||||||
|  | 
 | ||||||
|     def isatty(self) -> bool: |     def isatty(self) -> bool: | ||||||
|         return False |         return False | ||||||
| 
 | 
 | ||||||
|     def close(self) -> None: |     def close(self) -> None: | ||||||
|         pass |         pass | ||||||
| 
 | 
 | ||||||
|  |     def readable(self) -> bool: | ||||||
|  |         return False | ||||||
|  | 
 | ||||||
|  |     def seek(self, offset: int) -> int: | ||||||
|  |         raise UnsupportedOperation("redirected stdin is pseudofile, has no seek(int)") | ||||||
|  | 
 | ||||||
|  |     def seekable(self) -> bool: | ||||||
|  |         return False | ||||||
|  | 
 | ||||||
|  |     def tell(self) -> int: | ||||||
|  |         raise UnsupportedOperation("redirected stdin is pseudofile, has no tell()") | ||||||
|  | 
 | ||||||
|  |     def truncate(self, size: int) -> None: | ||||||
|  |         raise UnsupportedOperation("cannont truncate stdin") | ||||||
|  | 
 | ||||||
|  |     def write(self, *args) -> None: | ||||||
|  |         raise UnsupportedOperation("cannot write to stdin") | ||||||
|  | 
 | ||||||
|  |     def writelines(self, *args) -> None: | ||||||
|  |         raise UnsupportedOperation("Cannot write to stdin") | ||||||
|  | 
 | ||||||
|  |     def writable(self) -> bool: | ||||||
|  |         return False | ||||||
|  | 
 | ||||||
|     @property |     @property | ||||||
|     def buffer(self): |     def buffer(self): | ||||||
|         return self |         return self | ||||||
|  |  | ||||||
|  | @ -897,6 +897,15 @@ def test_dontreadfrominput() -> None: | ||||||
|     iter_f = iter(f) |     iter_f = iter(f) | ||||||
|     pytest.raises(OSError, next, iter_f) |     pytest.raises(OSError, next, iter_f) | ||||||
|     pytest.raises(UnsupportedOperation, f.fileno) |     pytest.raises(UnsupportedOperation, f.fileno) | ||||||
|  |     pytest.raises(UnsupportedOperation, f.flush) | ||||||
|  |     assert not f.readable() | ||||||
|  |     pytest.raises(UnsupportedOperation, f.seek, 0) | ||||||
|  |     assert not f.seekable() | ||||||
|  |     pytest.raises(UnsupportedOperation, f.tell) | ||||||
|  |     pytest.raises(UnsupportedOperation, f.truncate, 0) | ||||||
|  |     pytest.raises(UnsupportedOperation, f.write, b"") | ||||||
|  |     pytest.raises(UnsupportedOperation, f.writelines, []) | ||||||
|  |     assert not f.writable() | ||||||
|     f.close()  # just for completeness |     f.close()  # just for completeness | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue