[Checkins] SVN: Sandbox/nadako/zope.browserresource/ Clean up code and tests a little, improve test coverage. Add a TODO.

Dan Korostelev nadako at gmail.com
Sat Aug 22 18:00:30 EDT 2009


Log message for revision 103094:
  Clean up code and tests a little, improve test coverage. Add a TODO.

Changed:
  U   Sandbox/nadako/zope.browserresource/CHANGES.txt
  A   Sandbox/nadako/zope.browserresource/TODO.txt
  U   Sandbox/nadako/zope.browserresource/src/zope/__init__.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/__init__.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/configure.zcml
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/directoryresource.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/fileresource.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/i18nfileresource.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/icon.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/metaconfigure.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/metadirectives.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/resources.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_directives.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_directoryresource.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_fileresource.py
  A   Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_i18nfileresource.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_icondirective.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_pagetemplateresource.py
  U   Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_resources.py
  D   Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/testi18nfileresource.py

-=-
Modified: Sandbox/nadako/zope.browserresource/CHANGES.txt
===================================================================
--- Sandbox/nadako/zope.browserresource/CHANGES.txt	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/CHANGES.txt	2009-08-22 22:00:30 UTC (rev 103094)
@@ -16,3 +16,5 @@
 
  * When publishing a resource via Resources view, set resource parent
    to an ISite object, not to current site manager.
+
+ * Clean up code and improve test coverage a little.

Added: Sandbox/nadako/zope.browserresource/TODO.txt
===================================================================
--- Sandbox/nadako/zope.browserresource/TODO.txt	                        (rev 0)
+++ Sandbox/nadako/zope.browserresource/TODO.txt	2009-08-22 22:00:30 UTC (rev 103094)
@@ -0,0 +1,6 @@
+ * Clean up tests, possibly move them to doctests.
+ * Simplify the overall mechanism, remove extra entities.
+ * Implement pluggable resource factories for resource
+   directory (see https://bugs.launchpad.net/zope3/+bug/98459).
+ * Move PageTemplateResource to a separate package, so this
+   one could be independent on any templating system.

Modified: Sandbox/nadako/zope.browserresource/src/zope/__init__.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/__init__.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/__init__.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -1,7 +1 @@
-# this is a namespace package
-try:
-    import pkg_resources
-    pkg_resources.declare_namespace(__name__)
-except ImportError:
-    import pkgutil
-    __path__ = pkgutil.extend_path(__path__, __name__)
+__import__('pkg_resources').declare_namespace(__name__)

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/__init__.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/__init__.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/__init__.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -1,2 +0,0 @@
-#
-# This file is necessary to make this directory a package.

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/configure.zcml
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/configure.zcml	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/configure.zcml	2009-08-22 22:00:30 UTC (rev 103094)
@@ -1,5 +1,16 @@
 <configure xmlns="http://namespaces.zope.org/zope">
 
+  <adapter factory=".resource.AbsoluteURL" />
+  
+  <view
+      for="zope.location.interfaces.ISite"
+      type="zope.publisher.interfaces.browser.IDefaultBrowserLayer"
+      name=""
+      factory=".resources.Resources"
+      permission="zope.Public"
+      allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher"
+      />
+
   <class class=".fileresource.FileResource">
     <allow interface="zope.publisher.interfaces.browser.IBrowserPublisher" />
     <allow attributes="GET HEAD __call__" />
@@ -19,16 +30,5 @@
     <allow interface="zope.publisher.interfaces.browser.IBrowserPublisher" />
     <allow attributes="get __getitem__" />
   </class>
-  
-  <adapter factory=".resource.AbsoluteURL" />
-  
-  <view
-      for="zope.location.interfaces.ISite"
-      type="zope.publisher.interfaces.browser.IDefaultBrowserLayer"
-      name=""
-      factory=".resources.Resources"
-      permission="zope.Public"
-      allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher"
-      />
 
 </configure>

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/directoryresource.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/directoryresource.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/directoryresource.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -24,18 +24,17 @@
 $Id: directoryresource.py 89359 2008-08-05 07:35:05Z srichter $
 """
 import os
-import posixpath
 
 from zope.interface import implements
-from zope.publisher.interfaces import NotFound
 from zope.publisher.browser import BrowserView
+from zope.publisher.interfaces import NotFound
 from zope.publisher.interfaces.browser import IBrowserPublisher
 
-from zope.browserresource.resource import Resource
-from zope.browserresource.resources import empty
 from zope.browserresource.fileresource import FileResourceFactory
 from zope.browserresource.fileresource import ImageResourceFactory
 from zope.browserresource.pagetemplateresource import PageTemplateResourceFactory
+from zope.browserresource.resource import Resource
+from zope.browserresource.resources import empty
 
 _marker = object()
 
@@ -94,7 +93,7 @@
         else:
             factory = self.directory_factory
 
-        rname = posixpath.join(self.__name__, name)
+        rname = self.__name__ + '/' + name
         resource = factory(filename, self.context.checker, rname)(self.request)
         resource.__parent__ = self
         return resource

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/fileresource.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/fileresource.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/fileresource.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -23,12 +23,12 @@
 except ImportError: # python 2.4
     from email.Utils import formatdate
 
-from zope.interface import implements
 from zope.contenttype import guess_content_type
 from zope.datetime import time as timeFromDateTimeString
+from zope.interface import implements
+from zope.publisher.browser import BrowserView
 from zope.publisher.interfaces import NotFound
 from zope.publisher.interfaces.browser import IBrowserPublisher
-from zope.publisher.browser import BrowserView
 
 from zope.browserresource.resource import Resource
 
@@ -49,6 +49,13 @@
 
 class Image(File):
     """Image objects stored in external files."""
+    
+    # XXX: this class looks nonsense, as it's doesn't seem to be
+    # very smart to construct media type from file extension,
+    # for example, there's no "image/jpg" type.
+    # I'd propose to remove this class completely and do
+    # Image = File for backward compatibility.
+    # nadako, 23 Aug 2009
 
     def __init__(self, path, name):
         super(Image, self).__init__(path, name)

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/i18nfileresource.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/i18nfileresource.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/i18nfileresource.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -15,15 +15,14 @@
 
 $Id: i18nfileresource.py 38178 2005-08-30 21:50:19Z mj $
 """
+from zope.i18n.interfaces import II18nAware
+from zope.i18n.negotiator import negotiator
+from zope.interface import implements
 from zope.publisher.interfaces.browser import IBrowserPublisher
 
 from zope.browserresource.fileresource import FileResource
 
-from zope.i18n.negotiator import negotiator
-from zope.i18n.interfaces import II18nAware
-from zope.interface import implements
 
-
 class I18nFileResource(FileResource):
 
     implements(IBrowserPublisher, II18nAware)

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/icon.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/icon.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/icon.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -18,12 +18,12 @@
 import os
 import re
 
+from zope.component.interface import provideInterface
+from zope.component.zcml import handler
+from zope.configuration.exceptions import ConfigurationError
 from zope.interface import Interface
 from zope.publisher.interfaces.browser import IDefaultBrowserLayer
-from zope.configuration.exceptions import ConfigurationError
 from zope.traversing.namespace import getResource
-from zope.component.interface import provideInterface
-from zope.component.zcml import handler
 
 from zope.browserresource import metaconfigure
 

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/metaconfigure.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/metaconfigure.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/metaconfigure.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -17,20 +17,13 @@
 """
 import os
 
-from zope.configuration.exceptions import ConfigurationError
-from zope.interface import Interface
-from zope.publisher.interfaces.browser import IBrowserRequest
-from zope.publisher.interfaces.browser import IDefaultBrowserLayer
-from zope.security.checker import CheckerPublic, NamesChecker
 from zope.component.zcml import handler
-
 from zope.configuration.exceptions import ConfigurationError
 from zope.interface import Interface
 from zope.publisher.interfaces.browser import IBrowserRequest
 from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+from zope.security.checker import CheckerPublic, NamesChecker, Checker
 from zope.security.proxy import Proxy
-from zope.security.checker import CheckerPublic, Checker
-from zope.component.zcml import handler
 
 from zope.browserresource.directoryresource import DirectoryResourceFactory
 from zope.browserresource.fileresource import File, Image

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/metadirectives.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/metadirectives.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/metadirectives.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -17,9 +17,9 @@
 
 $Id: metadirectives.py 100280 2009-05-23 06:03:27Z shane $
 """
-from zope.interface import Interface
 from zope.configuration.fields import GlobalObject, GlobalInterface
 from zope.configuration.fields import Path, MessageID
+from zope.interface import Interface
 from zope.schema import TextLine, Int
 from zope.security.zcml import Permission
 

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/resources.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/resources.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/resources.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -15,12 +15,12 @@
 
 $Id: resources.py 67630 2006-04-27 00:54:03Z jim $
 """
-import zope.component
+from zope.component import queryAdapter
+from zope.interface import implements
+from zope.location import locate
 from zope.publisher.browser import BrowserView
 from zope.publisher.interfaces import NotFound
 from zope.publisher.interfaces.browser import IBrowserPublisher
-from zope.interface import implements
-from zope.location import locate
 
 class Resources(BrowserView):
     """Provide a URL-accessible resource namespace
@@ -31,7 +31,7 @@
     def publishTraverse(self, request, name):
         '''See interface IBrowserPublisher'''
 
-        resource = zope.component.queryAdapter(request, name=name)
+        resource = queryAdapter(request, name=name)
         if resource is None:
             raise NotFound(self, name)
 

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_directives.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_directives.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_directives.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -270,7 +270,3 @@
                      setUp=cleanup.setUp,
                      tearDown=cleanup.tearDown)
         ))
-
-if __name__=='__main__':
-    unittest.main(defaultTest="test_suite")
-

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_directoryresource.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_directoryresource.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_directoryresource.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -134,6 +134,3 @@
 
 def test_suite():
     return makeSuite(Test)
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_fileresource.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_fileresource.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_fileresource.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -78,6 +78,22 @@
         response = removeSecurityProxy(resource.request).response
         self.assertEqual(response.getHeader('Content-Type'), 'text/plain')
 
+    def testBrowserDefault(self):
+        path = os.path.join(test_directory, 'testfiles', 'test.txt')
+        factory = FileResourceFactory(path, checker, 'test.txt')
+
+        request = TestRequest(REQUEST_METHOD='GET')
+        resource = factory(request)
+        view, next = resource.browserDefault(request)
+        self.assertEqual(view(), open(path, 'rb').read())
+        self.assertEqual(next, ())
+
+        request = TestRequest(REQUEST_METHOD='HEAD')
+        resource = factory(request)
+        view, next = resource.browserDefault(request)
+        self.assertEqual(view(), '')
+        self.assertEqual(next, ())
+
     def testImageGET(self):
 
         path = os.path.join(test_directory, 'testfiles', 'test.gif')
@@ -105,6 +121,3 @@
 
 def test_suite():
     return makeSuite(Test)
-
-if __name__=='__main__':
-    main(defaultTest='test_suite')

Copied: Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_i18nfileresource.py (from rev 103080, Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/testi18nfileresource.py)
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_i18nfileresource.py	                        (rev 0)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_i18nfileresource.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -0,0 +1,147 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 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.
+#
+##############################################################################
+"""I18n File-Resource Tests
+
+$Id: testi18nfileresource.py 29143 2005-02-14 22:43:16Z srichter $
+"""
+from unittest import main, makeSuite
+import os
+
+from zope.publisher.interfaces import NotFound
+
+from zope.component import provideAdapter, provideUtility
+from zope.testing import cleanup
+
+from zope.i18n.interfaces import IUserPreferredCharsets, IUserPreferredLanguages
+
+from zope.publisher.http import IHTTPRequest, HTTPCharsets
+from zope.publisher.browser import BrowserLanguages, TestRequest
+
+from zope.browserresource.i18nfileresource import I18nFileResource
+from zope.browserresource.i18nfileresource import I18nFileResourceFactory
+from zope.browserresource.fileresource import File
+import zope.browserresource.tests as p
+
+from zope.i18n.interfaces import INegotiator
+from zope.i18n.negotiator import negotiator
+
+from zope.i18n.tests.testii18naware import TestII18nAware
+
+test_directory = os.path.dirname(p.__file__)
+
+
+class Test(cleanup.CleanUp, TestII18nAware):
+
+    def setUp(self):
+        super(Test, self).setUp()
+        TestII18nAware.setUp(self)
+        provideAdapter(HTTPCharsets, (IHTTPRequest,), IUserPreferredCharsets)
+        provideAdapter(BrowserLanguages, (IHTTPRequest,), IUserPreferredLanguages)
+        # Setup the negotiator utility
+        provideUtility(negotiator, INegotiator)
+
+
+    def _createObject(self):
+        obj = I18nFileResource({'en':None, 'lt':None, 'fr':None},
+                               TestRequest(), 'fr')
+        return obj
+
+
+    def _createDict(self, filename1='test.pt', filename2='test2.pt'):
+        path1 = os.path.join(test_directory, 'testfiles', filename1)
+        path2 = os.path.join(test_directory, 'testfiles', filename2)
+        return { 'en': File(path1, filename1),
+                 'fr': File(path2, filename2) }
+
+
+    def testNoTraversal(self):
+
+        resource = I18nFileResourceFactory(self._createDict(), 'en')\
+                                          (TestRequest())
+
+        self.assertRaises(NotFound,
+                          resource.publishTraverse,
+                          resource.request,
+                          '_testData')
+
+    def testFileGET(self):
+
+        # case 1: no language preference, should get en
+        path = os.path.join(test_directory, 'testfiles', 'test.txt')
+
+        resource = I18nFileResourceFactory(self._createDict('test.txt'), 'en')\
+                                          (TestRequest())
+
+
+        self.assertEqual(resource.GET(), open(path, 'rb').read())
+
+        response = resource.request.response
+        self.assertEqual(response.getHeader('Content-Type'), 'text/plain')
+
+        # case 2: prefer lt, have only en and fr, should get en
+        resource = I18nFileResourceFactory(
+                        self._createDict('test.txt'), 'en')\
+                        (TestRequest(HTTP_ACCEPT_LANGUAGE='lt'))
+
+        self.assertEqual(resource.GET(), open(path, 'rb').read())
+
+        response = resource.request.response
+        self.assertEqual(response.getHeader('Content-Type'), 'text/plain')
+
+        # case 3: prefer fr, have it, should get fr
+        path = os.path.join(test_directory, 'testfiles', 'test2.pt')
+        resource = I18nFileResourceFactory(
+                        self._createDict('test.pt', 'test2.pt'), 'en')\
+                        (TestRequest(HTTP_ACCEPT_LANGUAGE='fr'))
+
+        self.assertEqual(resource.GET(), open(path, 'rb').read())
+
+        response = resource.request.response
+        self.assertEqual(response.getHeader('Content-Type'), 'text/html')
+
+
+    def testFileHEAD(self):
+
+        # case 1: no language preference, should get en
+        resource = I18nFileResourceFactory(self._createDict('test.txt'), 'en')\
+                                          (TestRequest())
+
+        self.assertEqual(resource.HEAD(), '')
+
+        response = resource.request.response
+        self.assertEqual(response.getHeader('Content-Type'), 'text/plain')
+
+        # case 2: prefer lt, have only en and fr, should get en
+        resource = I18nFileResourceFactory(
+                        self._createDict('test.txt'), 'en')\
+                        (TestRequest(HTTP_ACCEPT_LANGUAGE='lt'))
+
+        self.assertEqual(resource.HEAD(), '')
+
+        response = resource.request.response
+        self.assertEqual(response.getHeader('Content-Type'), 'text/plain')
+
+        # case 3: prefer fr, have it, should get fr
+        resource = I18nFileResourceFactory(
+                        self._createDict('test.pt', 'test2.pt'), 'en')\
+                        (TestRequest(HTTP_ACCEPT_LANGUAGE='fr'))
+
+        self.assertEqual(resource.HEAD(), '')
+
+        response = resource.request.response
+        self.assertEqual(response.getHeader('Content-Type'), 'text/html')
+
+
+def test_suite():
+    return makeSuite(Test)

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_icondirective.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_icondirective.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_icondirective.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -96,6 +96,8 @@
             'width="16" height="16" border="0" />'
             % rname)
 
+        self.assertEqual(view.url(), 'http://127.0.0.1/@@/' + rname)
+
         # Make sure that the title attribute works
         xmlconfig(StringIO(template % (
             '''
@@ -204,6 +206,3 @@
 
 def test_suite():
     return makeSuite(Test)
-
-if __name__=='__main__':
-    main(defaultTest='test_suite')

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_pagetemplateresource.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_pagetemplateresource.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_pagetemplateresource.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -66,7 +66,3 @@
 
 def test_suite():
     return makeSuite(Test)
-
-
-if __name__=='__main__':
-    main(defaultTest='test_suite')

Modified: Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_resources.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_resources.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/test_resources.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -49,6 +49,15 @@
         self.assertEqual(resource.__name__, 'test') 
         self.assertEqual(resource(), 42)
 
+    def test_browserDefault(self):
+        from zope.browserresource.resources import Resources
+        request = TestRequest()
+        site = object()
+        view = Resources(site, request)
+        empty, path = view.browserDefault(request)
+        self.assertEqual(empty(), '')
+        self.assertEqual(path, ())
+
     def test_getitem(self):
         from zope.browserresource.resources import Resources
         request = TestRequest()
@@ -73,9 +82,5 @@
                           )
 
 
-
 def test_suite():
     return makeSuite(Test)
-
-if __name__=='__main__':
-    main(defaultTest='test_suite')

Deleted: Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/testi18nfileresource.py
===================================================================
--- Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/testi18nfileresource.py	2009-08-22 20:49:27 UTC (rev 103093)
+++ Sandbox/nadako/zope.browserresource/src/zope/browserresource/tests/testi18nfileresource.py	2009-08-22 22:00:30 UTC (rev 103094)
@@ -1,150 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2001, 2002 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.
-#
-##############################################################################
-"""I18n File-Resource Tests
-
-$Id: testi18nfileresource.py 29143 2005-02-14 22:43:16Z srichter $
-"""
-from unittest import main, makeSuite
-import os
-
-from zope.publisher.interfaces import NotFound
-
-from zope.component import provideAdapter, provideUtility
-from zope.testing import cleanup
-
-from zope.i18n.interfaces import IUserPreferredCharsets, IUserPreferredLanguages
-
-from zope.publisher.http import IHTTPRequest, HTTPCharsets
-from zope.publisher.browser import BrowserLanguages, TestRequest
-
-from zope.browserresource.i18nfileresource import I18nFileResource
-from zope.browserresource.i18nfileresource import I18nFileResourceFactory
-from zope.browserresource.fileresource import File
-import zope.browserresource.tests as p
-
-from zope.i18n.interfaces import INegotiator
-from zope.i18n.negotiator import negotiator
-
-from zope.i18n.tests.testii18naware import TestII18nAware
-
-test_directory = os.path.dirname(p.__file__)
-
-
-class Test(cleanup.CleanUp, TestII18nAware):
-
-    def setUp(self):
-        super(Test, self).setUp()
-        TestII18nAware.setUp(self)
-        provideAdapter(HTTPCharsets, (IHTTPRequest,), IUserPreferredCharsets)
-        provideAdapter(BrowserLanguages, (IHTTPRequest,), IUserPreferredLanguages)
-        # Setup the negotiator utility
-        provideUtility(negotiator, INegotiator)
-
-
-    def _createObject(self):
-        obj = I18nFileResource({'en':None, 'lt':None, 'fr':None},
-                               TestRequest(), 'fr')
-        return obj
-
-
-    def _createDict(self, filename1='test.pt', filename2='test2.pt'):
-        path1 = os.path.join(test_directory, 'testfiles', filename1)
-        path2 = os.path.join(test_directory, 'testfiles', filename2)
-        return { 'en': File(path1, filename1),
-                 'fr': File(path2, filename2) }
-
-
-    def testNoTraversal(self):
-
-        resource = I18nFileResourceFactory(self._createDict(), 'en')\
-                                          (TestRequest())
-
-        self.assertRaises(NotFound,
-                          resource.publishTraverse,
-                          resource.request,
-                          '_testData')
-
-    def testFileGET(self):
-
-        # case 1: no language preference, should get en
-        path = os.path.join(test_directory, 'testfiles', 'test.txt')
-
-        resource = I18nFileResourceFactory(self._createDict('test.txt'), 'en')\
-                                          (TestRequest())
-
-
-        self.assertEqual(resource.GET(), open(path, 'rb').read())
-
-        response = resource.request.response
-        self.assertEqual(response.getHeader('Content-Type'), 'text/plain')
-
-        # case 2: prefer lt, have only en and fr, should get en
-        resource = I18nFileResourceFactory(
-                        self._createDict('test.txt'), 'en')\
-                        (TestRequest(HTTP_ACCEPT_LANGUAGE='lt'))
-
-        self.assertEqual(resource.GET(), open(path, 'rb').read())
-
-        response = resource.request.response
-        self.assertEqual(response.getHeader('Content-Type'), 'text/plain')
-
-        # case 3: prefer fr, have it, should get fr
-        path = os.path.join(test_directory, 'testfiles', 'test2.pt')
-        resource = I18nFileResourceFactory(
-                        self._createDict('test.pt', 'test2.pt'), 'en')\
-                        (TestRequest(HTTP_ACCEPT_LANGUAGE='fr'))
-
-        self.assertEqual(resource.GET(), open(path, 'rb').read())
-
-        response = resource.request.response
-        self.assertEqual(response.getHeader('Content-Type'), 'text/html')
-
-
-    def testFileHEAD(self):
-
-        # case 1: no language preference, should get en
-        resource = I18nFileResourceFactory(self._createDict('test.txt'), 'en')\
-                                          (TestRequest())
-
-        self.assertEqual(resource.HEAD(), '')
-
-        response = resource.request.response
-        self.assertEqual(response.getHeader('Content-Type'), 'text/plain')
-
-        # case 2: prefer lt, have only en and fr, should get en
-        resource = I18nFileResourceFactory(
-                        self._createDict('test.txt'), 'en')\
-                        (TestRequest(HTTP_ACCEPT_LANGUAGE='lt'))
-
-        self.assertEqual(resource.HEAD(), '')
-
-        response = resource.request.response
-        self.assertEqual(response.getHeader('Content-Type'), 'text/plain')
-
-        # case 3: prefer fr, have it, should get fr
-        resource = I18nFileResourceFactory(
-                        self._createDict('test.pt', 'test2.pt'), 'en')\
-                        (TestRequest(HTTP_ACCEPT_LANGUAGE='fr'))
-
-        self.assertEqual(resource.HEAD(), '')
-
-        response = resource.request.response
-        self.assertEqual(response.getHeader('Content-Type'), 'text/html')
-
-
-def test_suite():
-    return makeSuite(Test)
-
-if __name__=='__main__':
-    main(defaultTest='test_suite')



More information about the Checkins mailing list