Skip to content

Commit 6e37eaf

Browse files
Merge pull request #5836 from xenserver-next/mv-and-fix-test_mail_alarm-py3
Py3: Cleanup `test_mail-alarm.py` to use python3 test helpers and move it
2 parents f1d09ce + 418450d commit 6e37eaf

File tree

1 file changed

+14
-50
lines changed

1 file changed

+14
-50
lines changed

scripts/test_mail-alarm.py renamed to python3/tests/test_mail-alarm.py

Lines changed: 14 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,13 @@
22
# test_mail-alarm.py: uses unittest to test script "mail-alarm"
33
#
44

5-
import tempfile
6-
import os
7-
import shutil
85
import sys
96
import unittest
10-
import mock
11-
import pytest
7+
from unittest import mock
128

13-
if sys.version_info > (2, ):
14-
pytest.skip(allow_module_level=True)
15-
16-
def nottest(obj):
17-
obj.__test__ = False
18-
return obj
19-
20-
sys.path.append("./scripts/examples/python")
21-
sys.modules["xcp"] = mock.Mock()
22-
23-
log_file_global = None
9+
from python3.tests.import_helper import import_file_as_module, mocked_modules
2410

11+
log_strs = ""
2512
XML_MESSAGE_TEMPLATE = """<?xml version="1.0" encoding="UTF-8"?>
2613
<message><generation>63102</generation><ref>OpaqueRef:46be74f4-3a26-31a8-a629-d52584fe6ed3</ref><name>{alarm}</name><priority>3</priority><cls>{cls}</cls><obj_uuid>2e00443d-ac29-4940-8433-a15dda1e8f8e</obj_uuid><timestamp>20170516T16:30:00Z</timestamp><uuid>0d985f5e-6d91-3410-f853-040d0906a4b9</uuid><body>{body}</body></message>"""
2714

@@ -56,28 +43,16 @@ def get_alarm_xml(xmlalarm_str, xmlcls_str, xmlname_str, xmlbody_str):
5643

5744

5845
def log_err(err):
59-
global log_file_global
60-
with open(log_file_global, "a+") as fileh:
61-
fileh.write("%s: %s\n" % (sys.argv[0], err))
46+
global log_strs # pylint: disable=global-statement
47+
log_strs = log_strs + "%s: %s\n" % (sys.argv[0], err)
48+
49+
50+
with mocked_modules("xcp"):
51+
mailalarm = import_file_as_module("python3/libexec/mail-alarm")
52+
mock_setup(mailalarm)
6253

6354

6455
class TestXapiMessage(unittest.TestCase):
65-
def setUp(self):
66-
global log_file_global
67-
try:
68-
self.work_dir = tempfile.mkdtemp(prefix="test-mail-alarm-")
69-
log_file_global = os.path.join(self.work_dir, "user.log")
70-
src_file = "./scripts/mail-alarm"
71-
dst_file = os.path.join(self.work_dir, "mailalarm.py")
72-
shutil.copyfile(src_file, dst_file)
73-
sys.path.append(self.work_dir)
74-
except:
75-
raise
76-
77-
def tearDown(self):
78-
shutil.rmtree(self.work_dir, ignore_errors=True)
79-
80-
@nottest
8156
def common_test_good_input(
8257
self,
8358
xmlalarm_str,
@@ -87,11 +62,6 @@ def common_test_good_input(
8762
body_str,
8863
xmlbody_str=XML_BODY_COMMON,
8964
):
90-
import mailalarm
91-
92-
# Emulate functions with Mock
93-
mock_setup(mailalarm)
94-
9565
session = mock.Mock()
9666

9767
tst_xml = get_alarm_xml(xmlalarm_str, xmlcls_str, xmlname_str, xmlbody_str)
@@ -104,7 +74,6 @@ def common_test_good_input(
10474
self.assertIn(subject_str, mail_subject)
10575
self.assertIn(body_str, mail_body)
10676

107-
@nottest
10877
def common_test_bad_input(
10978
self,
11079
xmlalarm_str,
@@ -114,12 +83,6 @@ def common_test_bad_input(
11483
subtitle_str,
11584
xmlbody_str=XML_BODY_COMMON,
11685
):
117-
global log_file_global
118-
import mailalarm
119-
120-
# Emulate functions with Mock
121-
mock_setup(mailalarm)
122-
12386
session = mock.Mock()
12487

12588
tst_xml = get_alarm_xml(xmlalarm_str, xmlcls_str, xmlname_str, xmlbody_str)
@@ -128,9 +91,11 @@ def common_test_bad_input(
12891

12992
mail_subject = obj_XapiMessage.generate_email_subject()
13093
mail_body = obj_XapiMessage.generate_email_body()
94+
assert mail_subject and mail_body # They're tested by test_good_mail_language()
13195

132-
with open(log_file_global, "r") as fileh:
133-
log_strs = fileh.read()
96+
# Assert the logged error messages for the bad language pack that are
97+
# recorded in `log_str` by `log_err()` when the language pack is not found
98+
# by `generate_email_subject()` and `generate_email_body()`:
13499

135100
self.assertIn("Read mail language pack error", log_strs)
136101
self.assertIn(
@@ -146,7 +111,6 @@ def common_test_bad_input(
146111
log_strs,
147112
)
148113

149-
os.remove(log_file_global)
150114

151115
def test_good_mail_language(self):
152116
## Test cpu_usage alarm

0 commit comments

Comments
 (0)