mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-27 15:01:08 +00:00
file-transfer: writing tests and ensuring that all is going well (#2413)
* file-transfer: writing tests and ensuring that all is going well * def send_file(filename: str = "mytext.txt", testing: bool = False) -> None: * send_file(filename="mytext.txt", testing=True) * Update send_file.py * requirements.txt: lxml Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
parent
c676956030
commit
2e790ce4ca
|
@ -1,11 +1,6 @@
|
||||||
if __name__ == "__main__":
|
def send_file(filename: str = "mytext.txt", testing: bool = False) -> None:
|
||||||
import socket # Import socket module
|
import socket
|
||||||
|
|
||||||
ONE_CONNECTION_ONLY = (
|
|
||||||
True # Set this to False if you wish to continuously accept connections
|
|
||||||
)
|
|
||||||
|
|
||||||
filename = "mytext.txt"
|
|
||||||
port = 12312 # Reserve a port for your service.
|
port = 12312 # Reserve a port for your service.
|
||||||
sock = socket.socket() # Create a socket object
|
sock = socket.socket() # Create a socket object
|
||||||
host = socket.gethostname() # Get local machine name
|
host = socket.gethostname() # Get local machine name
|
||||||
|
@ -29,10 +24,12 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
print("Done sending")
|
print("Done sending")
|
||||||
conn.close()
|
conn.close()
|
||||||
if (
|
if testing: # Allow the test to complete
|
||||||
ONE_CONNECTION_ONLY
|
|
||||||
): # This is to make sure that the program doesn't hang while testing
|
|
||||||
break
|
break
|
||||||
|
|
||||||
sock.shutdown(1)
|
sock.shutdown(1)
|
||||||
sock.close()
|
sock.close()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
send_file()
|
||||||
|
|
32
file_transfer/tests/test_send_file.py
Normal file
32
file_transfer/tests/test_send_file.py
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
from unittest.mock import patch, Mock
|
||||||
|
|
||||||
|
|
||||||
|
from file_transfer.send_file import send_file
|
||||||
|
|
||||||
|
|
||||||
|
@patch("socket.socket")
|
||||||
|
@patch("builtins.open")
|
||||||
|
def test_send_file_running_as_expected(file, sock):
|
||||||
|
# ===== initialization =====
|
||||||
|
conn = Mock()
|
||||||
|
sock.return_value.accept.return_value = conn, Mock()
|
||||||
|
f = iter([1, None])
|
||||||
|
file.return_value.__enter__.return_value.read.side_effect = lambda _: next(f)
|
||||||
|
|
||||||
|
# ===== invoke =====
|
||||||
|
send_file(filename="mytext.txt", testing=True)
|
||||||
|
|
||||||
|
# ===== ensurance =====
|
||||||
|
sock.assert_called_once()
|
||||||
|
sock.return_value.bind.assert_called_once()
|
||||||
|
sock.return_value.listen.assert_called_once()
|
||||||
|
sock.return_value.accept.assert_called_once()
|
||||||
|
conn.recv.assert_called_once()
|
||||||
|
|
||||||
|
file.return_value.__enter__.assert_called_once()
|
||||||
|
file.return_value.__enter__.return_value.read.assert_called()
|
||||||
|
|
||||||
|
conn.send.assert_called_once()
|
||||||
|
conn.close.assert_called_once()
|
||||||
|
sock.return_value.shutdown.assert_called_once()
|
||||||
|
sock.return_value.close.assert_called_once()
|
|
@ -3,6 +3,7 @@ black
|
||||||
fake_useragent
|
fake_useragent
|
||||||
flake8
|
flake8
|
||||||
keras
|
keras
|
||||||
|
lxml
|
||||||
matplotlib
|
matplotlib
|
||||||
mypy
|
mypy
|
||||||
numpy
|
numpy
|
||||||
|
|
Loading…
Reference in New Issue
Block a user