From cff87da7c813b319bfe6905c308ff8b194c00adc Mon Sep 17 00:00:00 2001 From: tligui_y Date: Wed, 30 Jul 2025 20:32:12 +0200 Subject: [PATCH] Update tests/test_utils_sendmail.py --- tests/test_utils_sendmail.py | 59 +++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/tests/test_utils_sendmail.py b/tests/test_utils_sendmail.py index 28bf6a97e..c21d20f27 100644 --- a/tests/test_utils_sendmail.py +++ b/tests/test_utils_sendmail.py @@ -7,39 +7,44 @@ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..') from slic.utils.sendmail import sendmail from slic.utils.sendmail import * +import os +import tempfile +from email.mime.text import MIMEText +from slic.utils.sendmail import sendmail -def test_sendmail_mime_format_in_tmux(): - # Retrieve the tmux TTY from the environment - tmux_tty = os.environ.get("TMUX_TTY") - assert tmux_tty and os.path.exists(tmux_tty), f"Invalid TMUX_TTY: {tmux_tty}" +def test_sendmail_mime_format_to_file(): - # Define test message parameters - to_addr=f"| tee {tmux_tty}" from_addr = "robot@local" subject = "MIME Format Test" body = "This is the MIME body." - # Send the message via your sendmail() - sendmail( - to_addr=f"| tee {tmux_tty}", # Write the message to the tmux terminal - from_addr=from_addr, - subject=subject, - body=body - ) + # Create temporary file + with tempfile.NamedTemporaryFile("r+", delete=False) as tmp: + tmp_path = tmp.name - # Capture the content from the tmux terminal - output = subprocess.check_output( - ["tmux", "capture-pane", "-pt", "test-session"], - timeout=2 - ).decode() + try: + # Send message + sendmail( + to_addr=f"| tee {tmp_path}", + from_addr=from_addr, + subject=subject, + body=body + ) - # Build the expected MIME-formatted message - msg = MIMEText(body) - msg["To"] = to_addr - msg["From"] = from_addr or getpass.getuser() - msg["Subject"] = subject - expected = msg.as_string() + # Read file content + with open(tmp_path, "r") as f: + output = f.read() - # Verify that each line of the expected MIME message is present in the tmux output - for line in expected.splitlines(): - assert line in output, f"Missing line in tmux output: {line!r}" \ No newline at end of file + # Expected message + msg = MIMEText(body) + msg["To"] = f"| tee {tmp_path}" + msg["From"] = from_addr + msg["Subject"] = subject + expected = msg.as_string() + + # Check that the good message is in the file + for line in expected.splitlines(): + assert line in output, f"Missing line in output: {line!r}" + + finally: + os.remove(tmp_path)