Package python-module-logilab-mtconverter-0 ::
Package 8 ::
Package 4 ::
Package test ::
Module unittest_engine
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 from logilab.common.testlib import TestCase, unittest_main
19 import urllib
20 import re
21 import os.path as osp
22
23 from logilab.mtconverter import TransformData, TransformError
24 from logilab.mtconverter.transforms import text_to_text
25 from logilab.mtconverter.transform import Transform, TransformsChain
26 from logilab.mtconverter.engine import TransformEngine
27
28 DATAPATH = osp.dirname(__file__)
29
30 -class HtmlToText(Transform):
31 inputs = ('text/html',)
32 output = 'text/plain'
33
34 - def __call__(self, orig):
35 orig = re.sub('<[^>]*>(?i)(?m)', '', orig)
36 return urllib.unquote(re.sub('\n+', '\n', orig)).strip()
37
38 - def _convert(self, data):
39 return self.__call__(data.data)
40
43
54
61
64
68
72
76
80
84
88
89
92
96
101
103 register = self.engine.add_transform
104 self.assertRaises(TransformError, register, TransformNoIO())
105 self.assertRaises(TransformError, register, BadTransformNoInput())
106 self.assertRaises(TransformError, register, BadTransformBadInput1())
107 self.assertRaises(TransformError, register, BadTransformBadInput2())
108 self.assertRaises(TransformError, register, BadTransformWildcardOutput())
109 self.assertRaises(TransformError, register, BadTransformBadOutput1())
110 self.assertRaises(TransformError, register, BadTransformBadOutput2())
111
118
120 self.register()
121 self.engine.add_transform(text_to_text())
122
123 data = TransformData("This is a test", 'text/x-diff', 'ascii')
124 out = self.engine.convert(data, 'text/plain')
125 self.assertEqual(out.data, "This is a test")
126 self.assertEqual(out.mimetype, 'text/plain')
127 self.assertEqual(out.encoding, 'ascii')
128
129
130 data = self.engine.convert(html_data(), "text/plain")
131 self.assertEqual(data.data, "foo")
132 self.assertEqual(data.mimetype, 'text/plain')
133 self.assertEqual(data.encoding, 'ascii')
134
135 self.engine.remove_transform('HtmlToText')
136 self.engine.remove_transform('FooToBar')
137 self.engine.add_transform(HtmlToTextWithEncoding())
138 data = self.engine.convert(html_data(), "text/plain")
139 self.assertEqual(data.mimetype, 'text/plain')
140 self.assertEqual(data.encoding, 'utf8')
141
142 self.engine.add_transform(FooToBar())
143 data = self.engine.convert(html_data(), 'text/bar')
144 self.assertEqual(data.data, "<b>bar</b>")
145
154
156 data = TransformData("This is a test", 'text/plain', 'ascii')
157 out = self.engine.convert(data, 'text/plain')
158 self.assertEqual(out.data, "This is a test")
159 self.assertEqual(out.mimetype, 'text/plain')
160 self.assertEqual(out.encoding, 'ascii')
161
162 self.engine.add_transform(HtmlIdTransform())
163 out = self.engine.convert(html_data(), 'text/html')
164 self.assertEqual(out.data, "<b>foo</b> transformed")
165 self.assertEqual(out.mimetype, 'text/html')
166 self.assertEqual(out.encoding, 'ascii')
167
168
170 self.register()
171 data = TransformData(open(osp.join(DATAPATH, 'data.txt.gz'), 'rb').read(), 'text/plain', 'gzip')
172 self.assertRaises(TransformError, self.engine.convert, data, 'text/plain')
173 self.engine.add_transform(text_to_text())
174 self.assertRaises(TransformError, self.engine.convert, data, 'text/plain')
175
176
177 if __name__ == '__main__':
178 unittest_main()
179