[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