Home | Trees | Indices | Help |
|
---|
|
1 # -*- coding: iso-8859-1 -*- 2 # copyright 2006-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved. 3 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr 4 # 5 # This file is part of logilab-mtconverter. 6 # 7 # logilab-mtconverter is free software: you can redistribute it and/or modify it 8 # under the terms of the GNU Lesser General Public License as published by the 9 # Free Software Foundation, either version 2.1 of the License, or (at your 10 # option) any later version. 11 # 12 # logilab-mtconverter is distributed in the hope that it will be useful, but 13 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 15 # for more details. 16 # 17 # You should have received a copy of the GNU Lesser General Public License along 18 # with logilab-mtconverter. If not, see <http://www.gnu.org/licenses/>. 19 from logilab.common.testlib import TestCase, unittest_main 20 21 from logilab.mtconverter.engine import TransformEngine 22 from logilab.mtconverter import TransformData, TransformError, \ 23 register_base_transforms, register_pil_transforms 24 25 ENGINE = TransformEngine() 26 register_base_transforms(ENGINE) 27 register_pil_transforms(ENGINE) 28 29 import logilab.mtconverter as mtc 30 import os.path as osp 31 DATAPATH = osp.join(osp.split(mtc.__file__)[0], 'test') 3280 81 if __name__ == '__main__': 82 unittest_main() 83 84 85 ## from utils import input_file_path, output_file_path, normalize_html,\ 86 ## load, matching_inputs 87 88 ## from logilab.mtconverter import MissingBinary 89 ## from logilab.mtconverter.transforms.piltransforms import image_to_gif 90 ## from logilab.mtconverter.transforms.piltransforms import image_to_png 91 ## from logilab.mtconverter.transforms.piltransforms import image_to_jpeg 92 ## from logilab.mtconverter.transforms.piltransforms import image_to_bmp 93 ## from logilab.mtconverter.transforms.piltransforms import image_to_tiff 94 ## from logilab.mtconverter.transforms.piltransforms import image_to_ppm 95 ## from logilab.mtconverter.transforms.piltransforms import image_to_pcx 96 97 ## from os.path import exists 98 ## import sys 99 ## # we have to set locale because lynx output is locale sensitive ! 100 ## os.environ['LC_ALL'] = 'C' 101 102 103 ## class TransformTest(TestCase): 104 105 ## def do_convert(self, filename=None): 106 ## if filename is None and exists(self.output + '.nofilename'): 107 ## output = self.output + '.nofilename' 108 ## else: 109 ## output = self.output 110 ## input = open(self.input) 111 ## orig = input.read() 112 ## input.close() 113 ## data = datastream(self.transform.name()) 114 ## res_data = self.transform.convert(orig, data, filename=filename) 115 ## self.assert_(idatastream.isImplementedBy(res_data)) 116 ## got = res_data.getData() 117 ## try: 118 ## output = open(output) 119 ## except IOError: 120 ## import sys 121 ## print >>sys.stderr, 'No output file found.' 122 ## print >>sys.stderr, 'File %s created, check it !' % self.output 123 ## output = open(output, 'w') 124 ## output.write(got) 125 ## output.close() 126 ## self.assert_(0) 127 ## expected = output.read() 128 ## if self.normalize is not None: 129 ## expected = self.normalize(expected) 130 ## got = self.normalize(got) 131 ## output.close() 132 133 ## self.assertEquals(got, expected, 134 ## '[%s]\n\n!=\n\n[%s]\n\nIN %s(%s)' % ( 135 ## got, expected, self.transform.name(), self.input)) 136 ## self.assertEquals(self.subobjects, len(res_data.getSubObjects()), 137 ## '%s\n\n!=\n\n%s\n\nIN %s(%s)' % ( 138 ## self.subobjects, len(res_data.getSubObjects()), self.transform.name(), self.input)) 139 140 ## def testSame(self): 141 ## self.do_convert(filename=self.input) 142 143 ## def testSameNoFilename(self): 144 ## self.do_convert() 145 146 ## def __repr__(self): 147 ## return self.transform.name() 148 149 150 ## class PILTransformsTest(TestCase): 151 ## def afterSetUp(self): 152 ## ATSiteTestCase.afterSetUp(self) 153 ## self.pt = self.portal.portal_transforms 154 155 ## def test_image_to_bmp(self): 156 ## self.pt.registerTransform(image_to_bmp()) 157 ## imgFile = open(input_file_path('logo.jpg'), 'rb') 158 ## data = imgFile.read() 159 ## self.failUnlessEqual(self.portal.mimetypes_registry.classify(data),'image/jpeg') 160 ## data = self.pt.convertTo(target_mimetype='image/x-ms-bmp',orig=data) 161 ## self.failUnlessEqual(data.getMetadata()['mimetype'], 'image/x-ms-bmp') 162 163 ## def test_image_to_gif(self): 164 ## self.pt.registerTransform(image_to_gif()) 165 ## imgFile = open(input_file_path('logo.png'), 'rb') 166 ## data = imgFile.read() 167 ## self.failUnlessEqual(self.portal.mimetypes_registry.classify(data),'image/png') 168 ## data = self.pt.convertTo(target_mimetype='image/gif',orig=data) 169 ## self.failUnlessEqual(data.getMetadata()['mimetype'], 'image/gif') 170 171 ## def test_image_to_jpeg(self): 172 ## self.pt.registerTransform(image_to_jpeg()) 173 ## imgFile = open(input_file_path('logo.gif'), 'rb') 174 ## data = imgFile.read() 175 ## self.failUnlessEqual(self.portal.mimetypes_registry.classify(data),'image/gif') 176 ## data = self.pt.convertTo(target_mimetype='image/jpeg',orig=data) 177 ## self.failUnlessEqual(data.getMetadata()['mimetype'], 'image/jpeg') 178 179 ## def test_image_to_png(self): 180 ## self.pt.registerTransform(image_to_png()) 181 ## imgFile = open(input_file_path('logo.jpg'), 'rb') 182 ## data = imgFile.read() 183 ## self.failUnlessEqual(self.portal.mimetypes_registry.classify(data),'image/jpeg') 184 ## data = self.pt.convertTo(target_mimetype='image/png',orig=data) 185 ## self.failUnlessEqual(data.getMetadata()['mimetype'], 'image/png') 186 187 ## def test_image_to_pcx(self): 188 ## self.pt.registerTransform(image_to_pcx()) 189 ## imgFile = open(input_file_path('logo.gif'), 'rb') 190 ## data = imgFile.read() 191 ## self.failUnlessEqual(self.portal.mimetypes_registry.classify(data),'image/gif') 192 ## data = self.pt.convertTo(target_mimetype='image/pcx',orig=data) 193 ## self.failUnlessEqual(data.getMetadata()['mimetype'], 'image/pcx') 194 195 ## def test_image_to_ppm(self): 196 ## self.pt.registerTransform(image_to_ppm()) 197 ## imgFile = open(input_file_path('logo.png'), 'rb') 198 ## data = imgFile.read() 199 ## self.failUnlessEqual(self.portal.mimetypes_registry.classify(data),'image/png') 200 ## data = self.pt.convertTo(target_mimetype='image/x-portable-pixmap',orig=data) 201 ## self.failUnlessEqual(data.getMetadata()['mimetype'], 'image/x-portable-pixmap') 202 203 ## def test_image_to_tiff(self): 204 ## self.pt.registerTransform(image_to_tiff()) 205 ## imgFile = open(input_file_path('logo.jpg'), 'rb') 206 ## data = imgFile.read() 207 ## self.failUnlessEqual(self.portal.mimetypes_registry.classify(data),'image/jpeg') 208 ## data = self.pt.convertTo(target_mimetype='image/tiff',orig=data) 209 ## self.failUnlessEqual(data.getMetadata()['mimetype'], 'image/tiff') 210 211 212 ## TRANSFORMS_TESTINFO = ( 213 ## ('Products.PortalTransforms.transforms.pdf_to_html', 214 ## "demo1.pdf", "demo1.html", None, 0 215 ## ), 216 ## ('Products.PortalTransforms.transforms.word_to_html', 217 ## "test.doc", "test_word.html", normalize_html, 0 218 ## ), 219 ## ('Products.PortalTransforms.transforms.lynx_dump', 220 ## "test_lynx.html", "test_lynx.txt", None, 0 221 ## ), 222 ## ('Products.PortalTransforms.transforms.html_to_text', 223 ## "test_lynx.html", "test_html_to_text.txt", None, 0 224 ## ), 225 ## ('Products.PortalTransforms.transforms.identity', 226 ## "rest1.rst", "rest1.rst", None, 0 227 ## ), 228 ## ('Products.PortalTransforms.transforms.text_to_html', 229 ## "rest1.rst", "rest1.html", None, 0 230 ## ), 231 ## ('Products.PortalTransforms.transforms.safe_html', 232 ## "test_safehtml.html", "test_safe.html", None, 0 233 ## ), 234 ## ('Products.PortalTransforms.transforms.image_to_bmp', 235 ## "logo.jpg", "logo.bmp", None, 0 236 ## ), 237 ## ('Products.PortalTransforms.transforms.image_to_gif', 238 ## "logo.bmp", "logo.gif", None, 0 239 ## ), 240 ## ('Products.PortalTransforms.transforms.image_to_jpeg', 241 ## "logo.gif", "logo.jpg", None, 0 242 ## ), 243 ## ('Products.PortalTransforms.transforms.image_to_png', 244 ## "logo.bmp", "logo.png", None, 0 245 ## ), 246 ## ('Products.PortalTransforms.transforms.image_to_ppm', 247 ## "logo.gif", "logo.ppm", None, 0 248 ## ), 249 ## ('Products.PortalTransforms.transforms.image_to_tiff', 250 ## "logo.png", "logo.tiff", None, 0 251 ## ), 252 ## ('Products.PortalTransforms.transforms.image_to_pcx', 253 ## "logo.png", "logo.pcx", None, 0 254 ## ), 255 ## ) 256 257 ## def initialise(transform, normalize, pattern): 258 ## global TRANSFORMS_TESTINFO 259 ## for fname in matching_inputs(pattern): 260 ## outname = '%s.out' % fname.split('.')[0] 261 ## #print transform, fname, outname 262 ## TRANSFORMS_TESTINFO += ((transform, fname, outname, normalize, 0),) 263 264 265 ## # ReST test cases 266 ## initialise('Products.PortalTransforms.transforms.rest', normalize_html, "rest*.rst") 267 ## # Python test cases 268 ## initialise('Products.PortalTransforms.transforms.python', normalize_html, "*.py") 269 270 ## # FIXME missing tests for image_to_html, st 271 272 ## TR_NAMES = None 273 274 ## # generate tests classes from test info 275 ## for _transform, tr_input, tr_output, _normalize, _subobjects in TRANSFORMS_TESTINFO: 276 ## # load transform if necessary 277 ## if type(_transform) is type(''): 278 ## try: 279 ## _transform = load(_transform).register() 280 ## except MissingBinary: 281 ## # we are not interessted in tests with missing binaries 282 ## continue 283 ## except: 284 ## import traceback 285 ## traceback.print_exc() 286 ## continue 287 288 ## if TR_NAMES is not None and not _transform.name() in TR_NAMES: 289 ## print 'skip test for', _transform.name() 290 ## continue 291 292 ## class TransformTestSubclass(TransformTest): 293 ## input = input_file_path(tr_input) 294 ## output = output_file_path(tr_output) 295 ## transform = _transform 296 ## normalize = lambda x, y: _normalize(y) 297 ## subobjects = _subobjects 298 299 ## tests.append(TransformTestSubclass) 300 301 ## tests.append(PILTransformsTest) 30235 data = TransformData(u'<b>yo (zou éà ;)</b>', 'text/html', 'utf8') 36 converted = ENGINE.convert(data, 'text/plain').decode().strip() 37 self.assertEquals(converted, u'**yo (zou éà ;)**') 38 39 # will trigger guess_encoding, check non-utf8 encoding 40 data = TransformData(u'<b>yo (zou éà ;)</b>'.encode('latin1'), 'text/html') 41 converted = ENGINE.convert(data, 'text/plain').decode().strip() 42 self.assertEquals(converted, u'**yo (zou éà ;)**') 43 44 data = TransformData(u'<p>yo <br/>zogzog </p>', 'text/html', 'utf8') 45 converted = ENGINE.convert(data, 'text/plain').decode().strip() 46 self.assertEquals(converted, u'yo\n\nzogzog')4749 data = TransformData(u'<root><b>yo (zou éà ;)</b>a<tag/>b<root>', 'application/xml', 'utf8') 50 converted = ENGINE.convert(data, 'text/plain').decode().strip() 51 self.assertEquals(converted, u'yo (zou éà ;) a b')52 5355 _data = u"""-----BEGIN PGP SIGNATURE----- 56 Version: GnuPG v1.4.9 (GNU/Linux) 57 58 iEYEARECAAYFAkxX5p8ACgkQkjcInxztrI64QQCggKA+PmbLYnGNtBB3Lb3pO3P8 59 r2MAoIO1DSsuM23SzgmqubGJEZuSRWhR 60 =GDDk 61 -----END PGP SIGNATURE----- 62 """ 63 data = TransformData(_data, 'application/pgp-signature') 64 converted = ENGINE.convert(data, 'text/plain').decode() 65 self.assertTextEquals(converted, _data)66 6769 data = TransformData(open(osp.join(DATAPATH, 'hello.odt')), 70 'application/vnd.oasis.opendocument.text', 'utf8') 71 converted = ENGINE.convert(data, 'text/plain').decode().strip() 72 self.assertEquals(converted, u'Hello ! OpenOffice.org/2.4$Unix OpenOffice.org_project/680m17$Build-9310 Hello quoi de neuf doc ? bonjour 2008-07-08T16:19:35 2009-01-09T14:44:54 mot-clef 1 PT37S') 73 # ZipFile will complain that 74 # TypeError: file() argument 1 must be (encoded string without NULL bytes), not str 75 # if given a plain str ... we shielded us from that. 76 data = TransformData(open(osp.join(DATAPATH, 'hello.odt')).read(), 77 'application/vnd.oasis.opendocument.text', 'utf8') 78 converted = ENGINE.convert(data, 'text/plain').decode().strip() 79 self.assertEquals(converted, u'Hello ! OpenOffice.org/2.4$Unix OpenOffice.org_project/680m17$Build-9310 Hello quoi de neuf doc ? bonjour 2008-07-08T16:19:35 2009-01-09T14:44:54 mot-clef 1 PT37S')
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Sat Jun 23 22:15:09 2012 | http://epydoc.sourceforge.net |