Log message for revision 70149: Merged r69724:70147 from 2.10 branch to pull in recent ZTC changes.
Changed: U Zope/branches/whitmo-2.10-layers/doc/CHANGES.txt U Zope/branches/whitmo-2.10-layers/doc/FAQ.txt U Zope/branches/whitmo-2.10-layers/lib/python/OFS/Application.py U Zope/branches/whitmo-2.10-layers/lib/python/OFS/Image.py U Zope/branches/whitmo-2.10-layers/lib/python/OFS/ObjectManager.py U Zope/branches/whitmo-2.10-layers/lib/python/OFS/dtml/imageView.dtml U Zope/branches/whitmo-2.10-layers/lib/python/OFS/dtml/main.dtml A Zope/branches/whitmo-2.10-layers/lib/python/OFS/tests/testCopySupportHooks.py U Zope/branches/whitmo-2.10-layers/lib/python/OFS/tests/testFileAndImage.py U Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/help/Mail-Host.stx U Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/help/MailHost.py U Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/tests/testMailHost.py U Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt U Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/doc/VERSION.txt U Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/runalltests.py A Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/tests.py U Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py A Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/layerextraction.txt U Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/runalltests.py A Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/testLayerExtraction.py UU Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/tests.py U Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/ztc_common.py U Zope/branches/whitmo-2.10-layers/lib/python/ZServer/FCGIServer.py U Zope/branches/whitmo-2.10-layers/lib/python/ZTUtils/Zope.py U Zope/branches/whitmo-2.10-layers/lib/python/ZTUtils/tests/testZope.py U Zope/branches/whitmo-2.10-layers/lib/python/webdav/Resource.py A Zope/branches/whitmo-2.10-layers/lib/python/webdav/tests/testPUT_factory.py U Zope/branches/whitmo-2.10-layers/setup.py U Zope/branches/whitmo-2.10-layers/skel/etc/site.zcml -=- Modified: Zope/branches/whitmo-2.10-layers/doc/CHANGES.txt =================================================================== --- Zope/branches/whitmo-2.10-layers/doc/CHANGES.txt 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/doc/CHANGES.txt 2006-09-13 13:03:50 UTC (rev 70149) @@ -8,6 +8,24 @@ Bugs fixed + - Collector #2185: Log username for FCGI requests. + + - Collector #2152: Fixed MailHost documentation; simple_send does not + process or validate its arguments in any way. + + - Collector #2175: ZTUtils.make_hidden_input did not escape double-quotes. + + - Collector #2176: Fixed bad logging call. + + - Collector #1907: Moved 'alt' property from File to Image. + + - Collector #1983: Specifying session-resolution-seconds >= 1200 caused + Zope startup to fail. + + - Collector #2169: webdav.Resource.COPY did not send ObjectClonedEvent. + + - Collector #2178: Fix ZopeTestCase doctest support for layers + Zope 2.10.0 beta 2 (2006/08/20) Bugs Fixed @@ -72,6 +90,8 @@ - The defaultView directive now only looks up views, not attributes. + - Collector #2178: Fix ZopeTestCase doctest support for layers + Other Changes - Disabled docutils file inclusion completely, rather than trying Modified: Zope/branches/whitmo-2.10-layers/doc/FAQ.txt =================================================================== --- Zope/branches/whitmo-2.10-layers/doc/FAQ.txt 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/doc/FAQ.txt 2006-09-13 13:03:50 UTC (rev 70149) @@ -249,10 +249,9 @@ 4. Plone doesn't work! - As of the release of Zope 2.8.0, Plone does not support - Zope 2.8 yet. Check http://www.plone.org for updates. + All Plone versions require a certain Zope version. + Check the Plone release informations on http://www.plone.org - General Modified: Zope/branches/whitmo-2.10-layers/lib/python/OFS/Application.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/OFS/Application.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/OFS/Application.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -426,14 +426,7 @@ 'session-delete-notify-script-path' % delnotify) delnotify=None - toc = TransientObjectContainer( - 'session_data', 'Session Data Container', - addNotification = addnotify, - delNotification = delnotify, - limit=limit, - period_secs=period_spec) - - if timeout_spec is not None: + if 1: # Preserve indentation for diff toc = TransientObjectContainer('session_data', 'Session Data Container', timeout_mins = timeout_spec, @@ -678,9 +671,9 @@ for priority, product_name, index, product_dir in products: if done.has_key(product_name): - LOG.warn('Duplicate Product name', - 'After loading Product %s from %s,\n' - 'I skipped the one in %s.\n' % ( + LOG.warn('Duplicate Product name: ' + 'After loading Product %s from %s, ' + 'I skipped the one in %s.' % ( `product_name`, `done[product_name]`, `product_dir`) ) continue done[product_name]=product_dir Modified: Zope/branches/whitmo-2.10-layers/lib/python/OFS/Image.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/OFS/Image.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/OFS/Image.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -85,7 +85,6 @@ precondition='' size=None - alt='' manage_editForm =DTMLFile('dtml/fileEdit',globals(), Kind='File',kind='file') @@ -110,7 +109,6 @@ ) _properties=({'id':'title', 'type': 'string'}, - {'id':'alt', 'type':'string'}, {'id':'content_type', 'type':'string'}, ) @@ -734,6 +732,7 @@ security = ClassSecurityInfo() security.declareObjectProtected(View) + alt='' height='' width='' @@ -750,6 +749,7 @@ security.declareProtected(delete_objects, 'DELETE') _properties=({'id':'title', 'type': 'string'}, + {'id':'alt', 'type':'string'}, {'id':'content_type', 'type':'string','mode':'w'}, {'id':'height', 'type':'string'}, {'id':'width', 'type':'string'}, Modified: Zope/branches/whitmo-2.10-layers/lib/python/OFS/ObjectManager.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/OFS/ObjectManager.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/OFS/ObjectManager.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -167,6 +167,8 @@ isPrincipiaFolderish=1 + has_order_support = 0 # See OrderSupport.py + # IPossibleSite API _components = None Modified: Zope/branches/whitmo-2.10-layers/lib/python/OFS/dtml/imageView.dtml =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/OFS/dtml/imageView.dtml 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/OFS/dtml/imageView.dtml 2006-09-13 13:03:50 UTC (rev 70149) @@ -2,10 +2,7 @@ <dtml-var manage_tabs> <p> -<img src="&dtml-absolute_url;" <dtml-if - width>width="&dtml-width;" </dtml-if><dtml-if - height>height="&dtml-height;" </dtml-if - > alt="&dtml-title_or_id;" /> + <dtml-var tag> </p> <dtml-var manage_page_footer> Modified: Zope/branches/whitmo-2.10-layers/lib/python/OFS/dtml/main.dtml =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/OFS/dtml/main.dtml 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/OFS/dtml/main.dtml 2006-09-13 13:03:50 UTC (rev 70149) @@ -61,7 +61,7 @@ <form action="&dtml-URL1;/" name="objectItems" method="post"> <dtml-if objectItems> - <dtml-let hasOrderSupport="_.hasattr(this().aq_self, 'has_order_support')"> + <dtml-let hasOrderSupport="_.getattr(this().aq_explicit, 'has_order_support', 0)"> <dtml-unless skey> <dtml-if hasOrderSupport> <dtml-call expr="REQUEST.set('skey', getDefaultSorting()[0])"> Copied: Zope/branches/whitmo-2.10-layers/lib/python/OFS/tests/testCopySupportHooks.py (from rev 70147, Zope/branches/2.10/lib/python/OFS/tests/testCopySupportHooks.py) Modified: Zope/branches/whitmo-2.10-layers/lib/python/OFS/tests/testFileAndImage.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/OFS/tests/testFileAndImage.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/OFS/tests/testFileAndImage.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -277,8 +277,12 @@ ('<img src="http://foo/file" alt="" title="" height="16" width="16" />')) def testTag(self): - self.assertEqual(self.file.tag(), - ('<img src="http://foo/file" alt="" title="" height="16" width="16" />')) + tag_fmt = '<img src="http://foo/file" alt="%s" title="%s" height="16" width="16" />' + self.assertEqual(self.file.tag(), (tag_fmt % ('',''))) + self.file.manage_changeProperties(title='foo') + self.assertEqual(self.file.tag(), (tag_fmt % ('','foo'))) + self.file.manage_changeProperties(alt='bar') + self.assertEqual(self.file.tag(), (tag_fmt % ('bar','foo'))) def testViewImageOrFile(self): pass # dtml method,screw it Modified: Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/help/Mail-Host.stx =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/help/Mail-Host.stx 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/help/Mail-Host.stx 2006-09-13 13:03:50 UTC (rev 70149) @@ -10,7 +10,7 @@ Sends an email message where the messageText is an rfc822 formatted message. This allows you complete control over the message headers, - including setting any extra headers such as Cc: and Bcc:. + including setting any extra headers such as Cc: and Reply-To:. The arguments are: messageText -- The mail message. It can either be a rfc822 @@ -31,9 +31,11 @@ 'simple_send(self, mto, mfrom, subject, body)' Sends a message. Only To:, From: and Subject: headers can be set. + Note that simple_send does not process or validate its arguments + in any way. The arguments are: - mto -- A commaseparated string or list of recipient(s) of the message. + mto -- A commaseparated string of recipient(s) of the message. mfrom -- The address of the message sender. Modified: Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/help/MailHost.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/help/MailHost.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/help/MailHost.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -37,7 +37,7 @@ """ Sends an email message where the messageText is an rfc822 formatted message. This allows you complete control over the message headers, - including setting any extra headers such as Cc: and Bcc:. + including setting any extra headers such as Cc: and Reply-To:. The arguments are: messageText -- The mail message. It can either be a rfc822 @@ -60,9 +60,11 @@ def simple_send(self, mto, mfrom, subject, body): """ Sends a message. Only To:, From: and Subject: headers can be set. + Note that simple_send does not process or validate its arguments + in any way. The arguments are: - mto -- A commaseparated string or list of recipient(s) of the message. + mto -- A commaseparated string of recipient(s) of the message. mfrom -- The address of the message sender. Modified: Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/tests/testMailHost.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/tests/testMailHost.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/Products/MailHost/tests/testMailHost.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -17,15 +17,26 @@ import unittest +from Products.MailHost.MailHost import MailHost from Products.MailHost.MailHost import MailHostError, _mungeHeaders +class DummyMailHost(MailHost): + meta_type = 'Dummy Mail Host' + def __init__(self, id): + self.id = id + self.sent = '' + def _send(self, mfrom, mto, messageText): + self.sent = messageText + + class TestMailHost(unittest.TestCase): def _getTargetClass(self): - from Products.MailHost.MailHost import MailHost + return DummyMailHost - return MailHost + def _makeOne(self, *args, **kw): + return self._getTargetClass()(*args, **kw) def test_z3interfaces(self): from Products.MailHost.interfaces import IMailHost @@ -113,7 +124,74 @@ '"Foo Bar" <[EMAIL PROTECTED]>']) self.failUnless(resfrom == '[EMAIL PROTECTED]' ) + def testSendMessageOnly(self): + msg = """\ +To: "Name, Nick" <[EMAIL PROTECTED]>, "Foo Bar" <[EMAIL PROTECTED]> +From: [EMAIL PROTECTED] +Subject: This is the subject +Date: Sun, 27 Aug 2006 17:00:00 +0200 +This is the message body.""" + + mailhost = self._makeOne('MailHost') + mailhost.send(msg) + self.assertEqual(mailhost.sent, msg) + + def testSendWithArguments(self): + inmsg = """\ +Date: Sun, 27 Aug 2006 17:00:00 +0200 + +This is the message body.""" + + outmsg = """\ +Date: Sun, 27 Aug 2006 17:00:00 +0200 +Subject: This is the subject +To: "Name, Nick" <[EMAIL PROTECTED]>,"Foo Bar" <[EMAIL PROTECTED]> +From: [EMAIL PROTECTED] + +This is the message body.""" + + mailhost = self._makeOne('MailHost') + mailhost.send(messageText=inmsg, + mto='"Name, Nick" <[EMAIL PROTECTED]>, "Foo Bar" <[EMAIL PROTECTED]>', + mfrom='[EMAIL PROTECTED]', subject='This is the subject') + self.assertEqual(mailhost.sent, outmsg) + + def testSendWithMtoList(self): + inmsg = """\ +Date: Sun, 27 Aug 2006 17:00:00 +0200 + +This is the message body.""" + + outmsg = """\ +Date: Sun, 27 Aug 2006 17:00:00 +0200 +Subject: This is the subject +To: "Name, Nick" <[EMAIL PROTECTED]>,"Foo Bar" <[EMAIL PROTECTED]> +From: [EMAIL PROTECTED] + +This is the message body.""" + + mailhost = self._makeOne('MailHost') + mailhost.send(messageText=inmsg, + mto=['"Name, Nick" <[EMAIL PROTECTED]>', '"Foo Bar" <[EMAIL PROTECTED]>'], + mfrom='[EMAIL PROTECTED]', subject='This is the subject') + self.assertEqual(mailhost.sent, outmsg) + + def testSimpleSend(self): + outmsg = """\ +From: [EMAIL PROTECTED] +To: "Name, Nick" <[EMAIL PROTECTED]>, "Foo Bar" <[EMAIL PROTECTED]> +Subject: This is the subject + +This is the message body.""" + + mailhost = self._makeOne('MailHost') + mailhost.simple_send(mto='"Name, Nick" <[EMAIL PROTECTED]>, "Foo Bar" <[EMAIL PROTECTED]>', + mfrom='[EMAIL PROTECTED]', subject='This is the subject', + body='This is the message body.') + self.assertEqual(mailhost.sent, outmsg) + + def test_suite(): suite = unittest.TestSuite() suite.addTest( unittest.makeSuite( TestMailHost ) ) Modified: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt 2006-09-13 13:03:50 UTC (rev 70149) @@ -1,5 +1,5 @@ -Zope 2.10 edition -- transaction.commit(1) is deprecated in favor of transaction.savepoint(). +0.9.9 (Zope 2.10 edition) +- transaction.commit(1) is deprecated in favor of transaction.savepoint(1). - Don't break if Python distros ship without profile support (Debian, Ubuntu). - Functional.publish() would hang if it got a request_method argument other than GET or HEAD while omitting the stdin argument. @@ -7,9 +7,13 @@ patches. - Made functional doctests set cookie related headers. - Made functional doctests set the Www-Authenticate header. -- Made sure logging is configured. Read $INSTANCE_HOME/log.ini if it exists. +- Made sure logging is configured. - Made base.TestCase a new-style class. - Added placeless.py for Z3-style setup. Thanks to Whit Morriss. +- Fixed functional.http() to only pass the request body (no headers) to + publish_module(). Thanks to Andreas Zeidler. +- Fixed doctestsuite factory to copy layers from test_class to the suite. + Thanks to Whit Morris. 0.9.8 (Zope 2.8 edition) - Renamed 'doctest' package to 'zopedoctest' because of name-shadowing Modified: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/doc/VERSION.txt =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/doc/VERSION.txt 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/doc/VERSION.txt 2006-09-13 13:03:50 UTC (rev 70149) @@ -1 +1 @@ -ZopeTestCase 0.9.8 +ZopeTestCase 0.9.9 Modified: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/runalltests.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/runalltests.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/runalltests.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -27,12 +27,16 @@ import unittest TestRunner = unittest.TextTestRunner suite = unittest.TestSuite() +cwd = os.getcwd() def test_finder(recurse, dir, names): if dir == os.curdir or '__init__.py' in names: parts = [x for x in dir[len(os.curdir):].split(os.sep) if x] tests = [x for x in names if x.startswith('test') and x.endswith('.py')] for test in tests: + if test == 'tests.py' and 'ZopeTestCase' in cwd: + # Skip tests.py when running ZTC tests + continue modpath = parts + [test[:-3]] m = __import__('.'.join(modpath)) for part in modpath[1:]: Copied: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/tests.py (from rev 70147, Zope/branches/2.10/lib/python/Testing/ZopeTestCase/tests.py) Modified: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -132,7 +132,7 @@ # Discard leading white space to make call layout simpler request_string = request_string.lstrip() - # split off and parse the command line + # Split off and parse the command line l = request_string.find('\n') command_line = request_string[:l].rstrip() request_string = request_string[l+1:] @@ -162,6 +162,10 @@ headers = [split_header(header) for header in rfc822.Message(instream).headers] + + # Store request body without headers + instream = StringIO(instream.read()) + for name, value in headers: name = ('_'.join(name.upper().split('-'))) if name not in ('CONTENT_TYPE', 'CONTENT_LENGTH'): @@ -200,15 +204,22 @@ def __init__(self, *args, **kw): self._args = args self._kw = kw + self._layer = None self.setup_globs() self.setup_test_class() self.setup_optionflags() def doctestsuite(self): - return doctest.DocTestSuite(*self._args, **self._kw) + suite = doctest.DocTestSuite(*self._args, **self._kw) + if self._layer is not None: + suite.layer = self._layer + return suite def docfilesuite(self): - return doctest.DocFileSuite(*self._args, **self._kw) + suite = doctest.DocFileSuite(*self._args, **self._kw) + if self._layer is not None: + suite.layer = self._layer + return suite def setup_globs(self): globs = self._kw.setdefault('globs', {}) @@ -224,6 +235,10 @@ if 'test_class' in self._kw: del self._kw['test_class'] + # Fix for http://zope.org/Collectors/Zope/2178 + if hasattr(test_class, 'layer'): + self._layer = test_class.layer + # If the test_class does not have a runTest method, we add # a dummy attribute so that TestCase construction works. if not hasattr(test_class, 'runTest'): @@ -298,6 +313,7 @@ | doctest.REPORT_NDIFF | doctest.NORMALIZE_WHITESPACE) + from Testing.ZopeTestCase.layer import Zope2Layer def setlayer(layer): @@ -309,26 +325,27 @@ return wrapper return wrapfactory + @setlayer(Zope2Layer) def ZopeDocTestSuite(module=None, **kw): - module = doctest._normalize_module(module) + module = doctest._normalize_module(module, depth=3) return ZopeSuiteFactory(module, **kw).doctestsuite() @setlayer(Zope2Layer) def ZopeDocFileSuite(*paths, **kw): if kw.get('module_relative', True): - kw['package'] = doctest._normalize_module(kw.get('package')) + kw['package'] = doctest._normalize_module(kw.get('package'), depth=3) return ZopeSuiteFactory(*paths, **kw).docfilesuite() @setlayer(Zope2Layer) def FunctionalDocTestSuite(module=None, **kw): - module = doctest._normalize_module(module) + module = doctest._normalize_module(module, depth=3) return FunctionalSuiteFactory(module, **kw).doctestsuite() @setlayer(Zope2Layer) def FunctionalDocFileSuite(*paths, **kw): if kw.get('module_relative', True): - kw['package'] = doctest._normalize_module(kw.get('package')) + kw['package'] = doctest._normalize_module(kw.get('package'), depth=3) return FunctionalSuiteFactory(*paths, **kw).docfilesuite() Copied: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/layerextraction.txt (from rev 70147, Zope/branches/2.10/lib/python/Testing/ZopeTestCase/zopedoctest/layerextraction.txt) Modified: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/runalltests.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/runalltests.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/runalltests.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -27,12 +27,16 @@ import unittest TestRunner = unittest.TextTestRunner suite = unittest.TestSuite() +cwd = os.getcwd() def test_finder(recurse, dir, names): if dir == os.curdir or '__init__.py' in names: parts = [x for x in dir[len(os.curdir):].split(os.sep) if x] tests = [x for x in names if x.startswith('test') and x.endswith('.py')] for test in tests: + if test == 'tests.py' and 'ZopeTestCase' in cwd: + # Skip tests.py when running ZTC tests + continue modpath = parts + [test[:-3]] m = __import__('.'.join(modpath)) for part in modpath[1:]: Copied: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/testLayerExtraction.py (from rev 70147, Zope/branches/2.10/lib/python/Testing/ZopeTestCase/zopedoctest/testLayerExtraction.py) Modified: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/tests.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/tests.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/tests.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -1,15 +1,36 @@ -import os, sys +############################################################################## +# +# Copyright (c) 2006 Zope Corporation and Contributors. All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## +"""Test runner that works with zope.testing.testrunner + +$Id$ +""" + import unittest +import os +import Testing.ZopeTestCase.zopedoctest + suite = unittest.TestSuite() +names = os.listdir(os.path.dirname(__file__)) +tests = [x[:-3] for x in names + if x.startswith('test') and x.endswith('.py') + and x != 'tests.py'] + +for test in tests: + m = __import__('Testing.ZopeTestCase.zopedoctest.%s' % test) + m = getattr(Testing.ZopeTestCase.zopedoctest, test) + if hasattr(m, 'test_suite'): + suite.addTest(m.test_suite()) + def test_suite(): - names = os.listdir(os.path.dirname(__file__)) - tests = [x for x in names \ - if x.startswith('test') and x.endswith('.py') and not x == 'tests.py'] - - for test in tests: - Testing = __import__("Testing.ZopeTestCase.zopedoctest." + test[:-3]) - testmodule = getattr(Testing.ZopeTestCase.zopedoctest, test[:-3]) - if hasattr(testmodule, 'test_suite'): - suite.addTest(testmodule.test_suite()) return suite Property changes on: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/zopedoctest/tests.py ___________________________________________________________________ Name: svn:keywords + Id Name: svn:eol-style + native Modified: Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/ztc_common.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/ztc_common.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/Testing/ZopeTestCase/ztc_common.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -62,13 +62,11 @@ return if self.zeo_instance_home: self.setup_zeo_instance_home() - self.setup_logging() else: if self.instance_home: self.setup_instance_home() else: self.detect_and_setup_instance_home() - self.setup_logging() self.setup_custom_zodb() def setup_zeo_instance_home(self): @@ -130,13 +128,6 @@ os.environ['INSTANCE_HOME'] = INSTANCE_HOME = self.cwd self.setconfig(instancehome=self.cwd) - def setup_logging(self): - '''If $INSTANCE_HOME/log.ini exists, load it.''' - logini = os.path.join(self.getconfig('instancehome'), 'log.ini') - if os.path.exists(logini): - import logging.config - logging.config.fileConfig(logini) - def add_instance(self, p): '''Adds an INSTANCE_HOME directory to Products.__path__ and sys.path.''' import Products Modified: Zope/branches/whitmo-2.10-layers/lib/python/ZServer/FCGIServer.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/ZServer/FCGIServer.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/ZServer/FCGIServer.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -47,6 +47,7 @@ import socket, string, os, sys, time import thread from types import StringTypes +import base64 tz_for_log = compute_timezone_for_log() @@ -455,11 +456,24 @@ method=self.env['REQUEST_METHOD'] else: method="GET" + if self.env.has_key('HTTP_AUTHORIZATION'): + http_authorization=self.env['HTTP_AUTHORIZATION'] + if string.lower(http_authorization[:6]) == 'basic ': + try: decoded=base64.decodestring(http_authorization[6:]) + except base64.binascii.Error: decoded='' + t = string.split(decoded, ':', 1) + if len(t) < 2: + user_name = '-' + else: + user_name = t[0] + else: + user_name='-' if self.addr: self.server.logger.log ( self.addr[0], - '%s - - [%s] "%s %s" %d %d "%s" "%s"' % ( + '%s - %s [%s] "%s %s" %d %d "%s" "%s"' % ( self.addr[1], + user_name, time.strftime ( '%d/%b/%Y:%H:%M:%S ', time.localtime(time.time()) @@ -471,7 +485,8 @@ else: self.server.logger.log ( '127.0.0.1 ', - '- - [%s] "%s %s" %d %d "%s" "%s"' % ( + '- %s [%s] "%s %s" %d %d "%s" "%s"' % ( + user_name, time.strftime ( '%d/%b/%Y:%H:%M:%S ', time.localtime(time.time()) Modified: Zope/branches/whitmo-2.10-layers/lib/python/ZTUtils/Zope.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/ZTUtils/Zope.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/ZTUtils/Zope.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -200,7 +200,7 @@ d.update(arg) d.update(kwargs) - hq = cgi.escape + hq = lambda x:cgi.escape(x, quote=True) qlist = complex_marshal(d.items()) for i in range(len(qlist)): k, m, v = qlist[i] Modified: Zope/branches/whitmo-2.10-layers/lib/python/ZTUtils/tests/testZope.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/ZTUtils/tests/testZope.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/ZTUtils/tests/testZope.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -5,6 +5,7 @@ import string import urllib from ZTUtils.Zope import make_query, complex_marshal +from ZTUtils.Zope import make_hidden_input from DateTime import DateTime class QueryTests(TestCase): @@ -50,6 +51,18 @@ record=record, string=str_) assert query == 'date:date=%s&integer:int=1&listing:int:list=1&listing:date:list=%s&listing:list=str&string=str&record.arg1:int:list:record=1&record.arg1:date:list:record=%s&record.arg1:list:record=str&record.arg2:int:record=1'%(quote_date,quote_date,quote_date) + def testMakeHiddenInput(self): + tag = make_hidden_input(foo='bar') + self.assertEqual(tag, '<input type="hidden" name="foo" value="bar">') + tag = make_hidden_input(foo=1) + self.assertEqual(tag, '<input type="hidden" name="foo:int" value="1">') + # Escaping + tag = make_hidden_input(foo='bar & baz') + self.assertEqual(tag, '<input type="hidden" name="foo" value="bar & baz">') + tag = make_hidden_input(foo='<bar>') + self.assertEqual(tag, '<input type="hidden" name="foo" value="<bar>">') + tag = make_hidden_input(foo='"bar"') + self.assertEqual(tag, '<input type="hidden" name="foo" value=""bar"">') def test_suite(): return makeSuite(QueryTests) Modified: Zope/branches/whitmo-2.10-layers/lib/python/webdav/Resource.py =================================================================== --- Zope/branches/whitmo-2.10-layers/lib/python/webdav/Resource.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/lib/python/webdav/Resource.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -45,7 +45,11 @@ from interfaces import IWriteLock from WriteLockInterface import WriteLockInterface +from zope.event import notify +from OFS.event import ObjectClonedEvent +import OFS.subscribers + class Resource(ExtensionClass.Base, Lockable.LockableItem): """The Resource mixin class provides basic WebDAV support for @@ -399,7 +403,11 @@ parent._setObject(name, ob) ob = parent._getOb(name) ob._postCopy(parent, op=0) - ob.manage_afterClone(ob) + + OFS.subscribers.compatibilityCall('manage_afterClone', ob, ob) + + notify(ObjectClonedEvent(ob)) + # We remove any locks from the copied object because webdav clients # don't track the lock status and the lock token for copied resources ob.wl_clearLocks() Copied: Zope/branches/whitmo-2.10-layers/lib/python/webdav/tests/testPUT_factory.py (from rev 70147, Zope/branches/2.10/lib/python/webdav/tests/testPUT_factory.py) Modified: Zope/branches/whitmo-2.10-layers/setup.py =================================================================== --- Zope/branches/whitmo-2.10-layers/setup.py 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/setup.py 2006-09-13 13:03:50 UTC (rev 70149) @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.3 +#!/usr/bin/env python2.4 ############################################################################## # @@ -49,7 +49,8 @@ from distutils.command.install_data import install_data from distutils.util import convert_path -sys.path.insert(0, 'inst') +where = os.path.split(__file__)[0] +sys.path.insert(0, os.path.join(where, 'inst')) import versions del sys.path[0] Modified: Zope/branches/whitmo-2.10-layers/skel/etc/site.zcml =================================================================== --- Zope/branches/whitmo-2.10-layers/skel/etc/site.zcml 2006-09-13 13:02:06 UTC (rev 70148) +++ Zope/branches/whitmo-2.10-layers/skel/etc/site.zcml 2006-09-13 13:03:50 UTC (rev 70149) @@ -20,6 +20,7 @@ <!-- Load the configuration overrides--> + <includeOverrides files="package-includes/*-overrides.zcml" /> <five:loadProductsOverrides /> </configure> _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins