Annotation of kupuMPIWG/plone/tests/test_html2captioned.py, revision 1.1
1.1 ! dwinter 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')
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>