Skip to content
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions app/main.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
def main():
# write your code here
pass
def main() -> None:
file_name = input("Enter name of the file: ")
file_content = []

while True:
line = input("Enter new line of content: ")

if line == "stop":
break

file_content.append(line)

with open(file_name + ".txt", "w") as file:
for line in file_content:
file.write(line + "\n")


if __name__ == "__main__":
main()

65 changes: 13 additions & 52 deletions tests/test_main.py
Original file line number Diff line number Diff line change
@@ -1,58 +1,19 @@
import os
def main() -> None:
file_name = input("Enter name of the file: ")
file_content = []

import pytest
from pytest import MonkeyPatch
while True:
line = input("Enter new line of content: ")

from app.main import main
if line == "stop":
break

file_content.append(line)

class CleanUpFile:
def __init__(self, filename: str):
self.filename = filename
with open(file_name + ".txt", "w") as file:
for line in file_content:
file.write(line + "\n")

def __enter__(self):
return self

def __exit__(self, exc_type, exc_val, exc_tb):
if os.path.exists(self.filename):
os.remove(self.filename)


@pytest.mark.parametrize(
"file_basename,content",
[
(
"name1",
["This is the first line of content", "This is the second"]
),
(
"hello_world",
["Python is great!", "FastApi is becoming popular", "What will be with Django in the future?"]
),
(
"i_am_empty",
[]
),
]
)
def test_main(file_basename: str, content: list, monkeypatch: MonkeyPatch):
inputs = [file_basename, *content, "stop"]
input_messages = []

def mock_input(text: str):
input_messages.append(text)
return inputs.pop(0)

monkeypatch.setattr("builtins.input", mock_input)

correct_filename = f"{file_basename}.txt"

with CleanUpFile(correct_filename):
main()

assert input_messages == ["Enter name of the file: "] + ["Enter new line of content: "] * (len(content) + 1)

assert os.path.exists(correct_filename)

with open(correct_filename, "r") as f:
assert f.read().splitlines() == content
if __name__ == "__main__":
main()
Loading