[ Index ] |
|
Code source de Kupu-1.3.5 |
1 import os, sys 2 if __name__ == '__main__': 3 execfile(os.path.join(sys.path[0], 'framework.py')) 4 5 from unittest import TestCase, TestSuite, main, makeSuite 6 from Products.CMFPlone.tests import PloneTestCase 7 from os.path import join, abspath, dirname 8 9 #try: 10 # import Zope # Sigh, make product initialization happen 11 # HAS_ZOPE = 1 12 # Zope.startup() 13 #except ImportError: 14 # HAS_ZOPE = 0 15 #except AttributeError: # Zope > 2.6 16 # pass 17 18 from Products.PortalTransforms.tests.test_transforms import * 19 from Products.PortalTransforms.tests.utils import normalize_html 20 21 PREFIX = abspath(dirname(__file__)) 22 23 def input_file_path(file): 24 return join(PREFIX, 'input', file) 25 26 def output_file_path(file): 27 return join(PREFIX, 'output', file) 28 29 tests =( 30 ('Products.kupu.plone.html2captioned', "minimal.in", "minimal.out", normalize_html, 0), 31 ('Products.kupu.plone.html2captioned', "simple.in", "simple.out", normalize_html, 0), 32 ('Products.kupu.plone.html2captioned', "baduid.in", "baduid.out", normalize_html, 0), 33 ('Products.kupu.plone.html2captioned', "notquoted.in", "notquoted.out", normalize_html, 0), 34 ('Products.kupu.plone.html2captioned', "notcaptioned.in", "notcaptioned.out", normalize_html, 0), 35 ('Products.kupu.plone.html2captioned', "linked.in", "linked.out", normalize_html, 0), 36 ) 37 38 class MockImage: 39 def __init__(self, uid, description): 40 self.uid, self.description = uid, description 41 def Description(self): 42 return self.description 43 def absolute_url(self): 44 return '[url for %s]' % self.uid 45 46 class MockCatalogTool: 47 def lookupObject(self, uid): 48 dummydata = { 49 '104ede98d4c7c8eaeaa3b984f7395979': 'Test image caption' 50 } 51 if uid not in dummydata: 52 return None 53 return MockImage(uid, dummydata[uid]) 54 55 class MockArchetypeTool: 56 reference_catalog = MockCatalogTool() 57 58 class MockPortal: 59 # Mock portal class: just enough to let me think I can lookup a 60 # Description for an image from its UID. 61 archetype_tool = MockArchetypeTool() 62 63 class TransformTest(TestCase): 64 portal = MockPortal() 65 66 def do_convert(self, filename=None): 67 if filename is None and exists(self.output + '.nofilename'): 68 output = self.output + '.nofilename' 69 else: 70 output = self.output 71 input = open(self.input) 72 orig = input.read() 73 input.close() 74 data = datastream(self.transform.name()) 75 res_data = self.transform.convert(orig, data, filename=filename, context=self.portal) 76 self.assert_(idatastream.isImplementedBy(res_data)) 77 got = res_data.getData() 78 try: 79 output = open(output) 80 except IOError: 81 import sys 82 print >>sys.stderr, 'No output file found.' 83 print >>sys.stderr, 'File %s created, check it !' % self.output 84 output = open(output, 'w') 85 output.write(got) 86 output.close() 87 self.assert_(0) 88 expected = output.read() 89 if self.normalize is not None: 90 expected = self.normalize(expected) 91 got = self.normalize(got) 92 output.close() 93 94 self.assertEquals(got, expected, 95 '[%s]\n\n!=\n\n[%s]\n\nIN %s(%s)' % ( 96 got, expected, self.transform.name(), self.input)) 97 self.assertEquals(self.subobjects, len(res_data.getSubObjects()), 98 '%s\n\n!=\n\n%s\n\nIN %s(%s)' % ( 99 self.subobjects, len(res_data.getSubObjects()), self.transform.name(), self.input)) 100 101 def testSame(self): 102 self.do_convert(filename=self.input) 103 104 def testSameNoFilename(self): 105 self.do_convert() 106 107 def __repr__(self): 108 return self.transform.name() 109 110 TR_NAMES = None 111 112 def make_tests(test_descr): 113 """generate tests classes from test info 114 115 return the list of generated test classes 116 """ 117 tests = [] 118 for _transform, tr_input, tr_output, _normalize, _subobjects in test_descr: 119 # load transform if necessary 120 if type(_transform) is type(''): 121 try: 122 _transform = load(_transform).register() 123 except: 124 import traceback 125 traceback.print_exc() 126 continue 127 # 128 if TR_NAMES is not None and not _transform.name() in TR_NAMES: 129 print 'skip test for', _transform.name() 130 continue 131 132 class TransformTestSubclass(TransformTest): 133 input = input_file_path(tr_input) 134 output = output_file_path(tr_output) 135 transform = _transform 136 normalize = lambda x, y: _normalize(y) 137 subobjects = _subobjects 138 139 tests.append(TransformTestSubclass) 140 141 return tests 142 143 def test_suite(): 144 t = [ (_transform, 145 input_file_path(tr_input), 146 output_file_path(tr_output), 147 _normalize, 148 _subobjects) 149 for _transform, tr_input, tr_output, _normalize, _subobjects in tests ] 150 151 return TestSuite([makeSuite(test) for test in make_tests(t)]) 152 153 if __name__=='__main__': 154 main(defaultTest='test_suite')
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 15:30:41 2007 | par Balluche grâce à PHPXref 0.7 |