2
2
# test_mail-alarm.py: uses unittest to test script "mail-alarm"
3
3
#
4
4
5
- import tempfile
6
- import os
7
- import shutil
8
5
import sys
9
6
import unittest
10
- import mock
11
- import pytest
7
+ from unittest import mock
12
8
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
24
10
11
+ log_strs = ""
25
12
XML_MESSAGE_TEMPLATE = """<?xml version="1.0" encoding="UTF-8"?>
26
13
<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>"""
27
14
@@ -56,28 +43,16 @@ def get_alarm_xml(xmlalarm_str, xmlcls_str, xmlname_str, xmlbody_str):
56
43
57
44
58
45
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 )
62
53
63
54
64
55
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
81
56
def common_test_good_input (
82
57
self ,
83
58
xmlalarm_str ,
@@ -87,11 +62,6 @@ def common_test_good_input(
87
62
body_str ,
88
63
xmlbody_str = XML_BODY_COMMON ,
89
64
):
90
- import mailalarm
91
-
92
- # Emulate functions with Mock
93
- mock_setup (mailalarm )
94
-
95
65
session = mock .Mock ()
96
66
97
67
tst_xml = get_alarm_xml (xmlalarm_str , xmlcls_str , xmlname_str , xmlbody_str )
@@ -104,7 +74,6 @@ def common_test_good_input(
104
74
self .assertIn (subject_str , mail_subject )
105
75
self .assertIn (body_str , mail_body )
106
76
107
- @nottest
108
77
def common_test_bad_input (
109
78
self ,
110
79
xmlalarm_str ,
@@ -114,12 +83,6 @@ def common_test_bad_input(
114
83
subtitle_str ,
115
84
xmlbody_str = XML_BODY_COMMON ,
116
85
):
117
- global log_file_global
118
- import mailalarm
119
-
120
- # Emulate functions with Mock
121
- mock_setup (mailalarm )
122
-
123
86
session = mock .Mock ()
124
87
125
88
tst_xml = get_alarm_xml (xmlalarm_str , xmlcls_str , xmlname_str , xmlbody_str )
@@ -128,9 +91,11 @@ def common_test_bad_input(
128
91
129
92
mail_subject = obj_XapiMessage .generate_email_subject ()
130
93
mail_body = obj_XapiMessage .generate_email_body ()
94
+ assert mail_subject and mail_body # They're tested by test_good_mail_language()
131
95
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()`:
134
99
135
100
self .assertIn ("Read mail language pack error" , log_strs )
136
101
self .assertIn (
@@ -146,7 +111,6 @@ def common_test_bad_input(
146
111
log_strs ,
147
112
)
148
113
149
- os .remove (log_file_global )
150
114
151
115
def test_good_mail_language (self ):
152
116
## Test cpu_usage alarm
0 commit comments