van.testing-3.0.0/0000755000076600000240000000000011272046330012771 5ustar jintystaffvan.testing-3.0.0/CHANGES.txt0000644000076600000240000000177711272046321014616 0ustar jintystaffChanges ======= 3.0.0 (2009-10-28) ------------------ - Add an option to have a zcml_features attribute on a zcml layer indicating the features to load when loading the zcml. 2.0.1 (2009-04-07) ------------------ - Allow users to specify the domain and port of the wsgi_intercept_layer by adding those attributes to the class. - Fix testbrowser support a bit so that it performs more like zope.testbrowser.testing.Browser. - Remove support for local component registrys (zope.site). This brings in the whole ZODB as zope.site's tests currently depend on it. 2.0.0 (2009-04-01) ------------------ - Remove dependencies by using zope.configuration.xmlconfig to setup zcml rather than zope.app.appsetup. This leaves out some security configuration but the win from less dependencies is massive. In my tests, no tests had any issues with this. - Add a wsgi_intercept layer and a functional_layer that combines both zcml and wsgi_intercept layer. 1.0.0 (2008-11-21) ------------------ - Initial Release van.testing-3.0.0/PKG-INFO0000644000076600000240000001120211272046330014062 0ustar jintystaffMetadata-Version: 1.0 Name: van.testing Version: 3.0.0 Summary: Layers for zope.testing to simplify test setups Home-page: http://pypi.python.org/pypi/van.testing Author: Vanguardistas LLC Author-email: zope-dev@zope.org License: ZPL 2.1 Description: .. contents:: van.testing provides tools for testing zope3/WSGI based applications that do not use the ZODB or local utilities. Testing Utilities ----------------- The most common use of this testing module is functional testing zope applications. It provides tools to setup layers which load the configuration ZCML as well as setting up wsgi_intercept in a layer. This test is part of such a layer (setup in van.testing.tests.FunctionalLayer): >>> from wsgi_intercept import WSGI_HTTPConnection as HTTPConnection >>> conn = HTTPConnection('localhost', 80) >>> conn.request('GET', '/') >>> r = conn.getresponse() >>> print r.read() # doctest: +ELLIPSIS {'HTTP_ACCEPT_ENCODING': 'identity', 'HTTP_HOST': 'localhost', 'PATH_INFO': '/', 'QUERY_STRING': '', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': '', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.1\r\n', 'wsgi.errors': , 'wsgi.input': , 'wsgi.multiprocess': 0, 'wsgi.multithread': 0, 'wsgi.run_once': 0, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)} Marker: MARKER Layers ------ Some basic layers useful for making test setups. >>> import os.path >>> from van.testing.layer import zcml_layer, null_layer A zcml layer which sets up and tears down a zcml test harness (but is much simpler than that provided with zope.app.functional): >>> class ZCMLLayer: ... zcml = os.path.join(os.path.dirname(__file__), 'ftesting.zcml') >>> zcml_layer(ZCMLLayer) Some default layers are provided for use with zope.testing, a "null" layer that specifically does nothing. This is useful for layers which inherit from other layers but where you don't want setup/teardown functions run twice (is this a zope.testing bug?): >>> class ExampleNullLayer(ZCMLLayer): ... pass >>> null_layer(ExampleNullLayer) This test runs in the layer van.testing.tests.ZCMLLayer, so we can get the "test" utility but not the test_extra utility (see zcml_features.txt for an example of a zcml layer with features): >>> from zope.interface import Interface >>> from zope.component import queryUtility >>> queryUtility(Interface, name="test", default='None') 'MARKER' >>> queryUtility(Interface, name="test_extra", default='None') 'None' Changes ======= 3.0.0 (2009-10-28) ------------------ - Add an option to have a zcml_features attribute on a zcml layer indicating the features to load when loading the zcml. 2.0.1 (2009-04-07) ------------------ - Allow users to specify the domain and port of the wsgi_intercept_layer by adding those attributes to the class. - Fix testbrowser support a bit so that it performs more like zope.testbrowser.testing.Browser. - Remove support for local component registrys (zope.site). This brings in the whole ZODB as zope.site's tests currently depend on it. 2.0.0 (2009-04-01) ------------------ - Remove dependencies by using zope.configuration.xmlconfig to setup zcml rather than zope.app.appsetup. This leaves out some security configuration but the win from less dependencies is massive. In my tests, no tests had any issues with this. - Add a wsgi_intercept layer and a functional_layer that combines both zcml and wsgi_intercept layer. 1.0.0 (2008-11-21) ------------------ - Initial Release Platform: UNKNOWN Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Zope Public License Classifier: Programming Language :: Python Classifier: Topic :: Software Development :: Testing Classifier: Development Status :: 5 - Production/Stable van.testing-3.0.0/ZopePublicLicense.txt0000644000076600000240000000420311272046321017110 0ustar jintystaffZope Public License (ZPL) Version 2.1 ------------------------------------- A copyright notice accompanies this license document that identifies the copyright holders. This license has been certified as open source. It has also been designated as GPL compatible by the Free Software Foundation (FSF). Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions in source code must retain the accompanying copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the accompanying copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Names of the copyright holders must not be used to endorse or promote products derived from this software without prior written permission from the copyright holders. 4. The right to distribute this software or to use it for any purpose does not give you the right to use Servicemarks (sm) or Trademarks (tm) of the copyright holders. Use of them is covered by separate agreement with the copyright holders. 5. If any files are modified, you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. Disclaimer THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. van.testing-3.0.0/buildout.cfg0000644000076600000240000000043511272046321015303 0ustar jintystaff[buildout] parts= test deps develop=. interpreter = python extensions= zc.buildoutsftp [deps] recipe = zc.recipe.egg eggs = van.testing tl.eggdeps [test] recipe = zc.recipe.testrunner eggs = van.testing zope.testbrowser defaults = ['-m', 'van.testing'] van.testing-3.0.0/setup.cfg0000644000076600000240000000007311272046330014612 0ustar jintystaff[egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 van.testing-3.0.0/setup.py0000644000076600000240000000340211272046321014502 0ustar jintystaff############################################################################## # # Copyright (c) 2008 Vanguardistas LLC. # 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. # ############################################################################## import os from setuptools import setup, find_packages long_description = ( '.. contents::\n\n' + open(os.path.join('van', 'testing', 'README.txt')).read() + '\n\n' + open(os.path.join('CHANGES.txt')).read() ) setup(name="van.testing", version='3.0.0', license='ZPL 2.1', url='http://pypi.python.org/pypi/van.testing', author_email='zope-dev@zope.org', author="Vanguardistas LLC", description="Layers for zope.testing to simplify test setups", packages=find_packages(), namespace_packages=["van"], install_requires=[ 'setuptools', 'wsgi_intercept', 'zope.component', 'zope.configuration', 'zope.testing', ], classifiers=[ 'Environment :: Web Environment', 'Intended Audience :: Developers', 'License :: OSI Approved :: Zope Public License', 'Programming Language :: Python', 'Topic :: Software Development :: Testing', 'Development Status :: 5 - Production/Stable', ], long_description=long_description, include_package_data = True, zip_safe = False, ) van.testing-3.0.0/van/0000755000076600000240000000000011272046330013555 5ustar jintystaffvan.testing-3.0.0/van/__init__.py0000644000076600000240000000013511272046321015665 0ustar jintystaff# this is a namespace package import pkg_resources pkg_resources.declare_namespace(__name__) van.testing-3.0.0/van/testing/0000755000076600000240000000000011272046330015232 5ustar jintystaffvan.testing-3.0.0/van/testing/README.txt0000644000076600000240000000462611272046321016740 0ustar jintystaffvan.testing provides tools for testing zope3/WSGI based applications that do not use the ZODB or local utilities. Testing Utilities ----------------- The most common use of this testing module is functional testing zope applications. It provides tools to setup layers which load the configuration ZCML as well as setting up wsgi_intercept in a layer. This test is part of such a layer (setup in van.testing.tests.FunctionalLayer): >>> from wsgi_intercept import WSGI_HTTPConnection as HTTPConnection >>> conn = HTTPConnection('localhost', 80) >>> conn.request('GET', '/') >>> r = conn.getresponse() >>> print r.read() # doctest: +ELLIPSIS {'HTTP_ACCEPT_ENCODING': 'identity', 'HTTP_HOST': 'localhost', 'PATH_INFO': '/', 'QUERY_STRING': '', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': '', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.1\r\n', 'wsgi.errors': , 'wsgi.input': , 'wsgi.multiprocess': 0, 'wsgi.multithread': 0, 'wsgi.run_once': 0, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)} Marker: MARKER Layers ------ Some basic layers useful for making test setups. >>> import os.path >>> from van.testing.layer import zcml_layer, null_layer A zcml layer which sets up and tears down a zcml test harness (but is much simpler than that provided with zope.app.functional): >>> class ZCMLLayer: ... zcml = os.path.join(os.path.dirname(__file__), 'ftesting.zcml') >>> zcml_layer(ZCMLLayer) Some default layers are provided for use with zope.testing, a "null" layer that specifically does nothing. This is useful for layers which inherit from other layers but where you don't want setup/teardown functions run twice (is this a zope.testing bug?): >>> class ExampleNullLayer(ZCMLLayer): ... pass >>> null_layer(ExampleNullLayer) This test runs in the layer van.testing.tests.ZCMLLayer, so we can get the "test" utility but not the test_extra utility (see zcml_features.txt for an example of a zcml layer with features): >>> from zope.interface import Interface >>> from zope.component import queryUtility >>> queryUtility(Interface, name="test", default='None') 'MARKER' >>> queryUtility(Interface, name="test_extra", default='None') 'None' van.testing-3.0.0/van/testing/__init__.py0000644000076600000240000000115511272046321017345 0ustar jintystaff############################################################################## # # Copyright (c) 2008 Vanguardistas LLC. # 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. # ############################################################################## van.testing-3.0.0/van/testing/ftesting.zcml0000644000076600000240000000102111272046321017736 0ustar jintystaff van.testing-3.0.0/van/testing/layer.py0000644000076600000240000001076511272046321016731 0ustar jintystaff############################################################################## # # Copyright (c) 2008 Vanguardistas LLC. # 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. # ############################################################################## from zope.configuration import config, xmlconfig from zope.testing.cleanup import cleanUp import wsgi_intercept def null_layer(layer): """Sets up a class as a layer that does nothing. Useful if you want a layer to inherit from other layers but not inherit their methods. Inheriting the method can cause it to be triggered twice as the zope testrunner (zope.testing) walks the super-classes of the layer firing the setup methods. >>> class LayerA: ... @classmethod ... def setUp(cls): ... print 'fired' ... @classmethod ... def tearDown(cls): ... print 'fired' ... @classmethod ... def testTearDown(cls): ... print 'fired' ... @classmethod ... def testSetUp(cls): ... print 'fired' If we just subclass the method, then our subclass will inherit the methods: >>> class LayerB(LayerA): ... pass >>> LayerB.setUp() fired >>> LayerB.tearDown() fired >>> LayerB.testSetUp() fired >>> LayerB.testTearDown() fired So, we override >>> null_layer(LayerB) >>> LayerB.setUp() >>> LayerB.tearDown() >>> LayerB.testSetUp() >>> LayerB.testTearDown() """ def null(cls): pass layer.setUp = classmethod(null) layer.tearDown = layer.setUp layer.testSetUp = layer.setUp layer.testTearDown = layer.setUp def zcml_layer(layer): """Sets up a class as a ZCMLLayer. The class can have 3 attributes: zcml: The site zcml file to load. zcml_features: A tuple of strings indicating the features to load. allow_teardown: Whether to allow teardown of this layer. Default: True """ def setUp(cls): features = getattr(cls, 'zcml_features', ()) context = config.ConfigurationMachine() xmlconfig.registerCommonDirectives(context) for feature in features: context.provideFeature(feature) context = xmlconfig.file(cls.zcml, context=context) layer.setUp = classmethod(setUp) def tearDown(cls): cleanUp() if not getattr(cls, 'allow_teardown', True): raise NotImplementedError layer.tearDown = classmethod(tearDown) def null(cls): pass layer.testSetUp = classmethod(null) layer.testTearDown = classmethod(null) class ErrorHandler: """This middleware sets up the environ so that handleErrors actually works. zope.testbrowser.Browser.handleErrors that is. """ def __init__(self, application): self.application = application def __call__(self, environ, start_response): if environ.get('HTTP_X_ZOPE_HANDLE_ERRORS') == 'False': environ['wsgi.handleErrors'] = False if 'HTTP_X_ZOPE_HANDLE_ERRORS' in environ: del environ['HTTP_X_ZOPE_HANDLE_ERRORS'] def my_start_response(status, headers, exc_info=None): # Behave like zope.testbrowser.testing: # sort response headers and insert status code in first place. headers = sorted(headers) headers.insert(0, ('Status', status)) return start_response(status, headers, exc_info=exc_info) return self.application(environ, my_start_response) def wsgi_intercept_layer(layer): domain = getattr(layer, 'domain', 'localhost') port = getattr(layer, 'port', 80) def make_debug_application(): return ErrorHandler(layer.make_application()) def setUp(cls): wsgi_intercept.add_wsgi_intercept(domain, port, make_debug_application) layer.setUp = classmethod(setUp) def tearDown(cls): wsgi_intercept.remove_wsgi_intercept(domain, port) def null(cls): pass layer.testSetUp = classmethod(null) layer.testTearDown = classmethod(null) van.testing-3.0.0/van/testing/testbrowser.txt0000644000076600000240000000154411272046321020362 0ustar jintystaffUsing zope.testbrowser ====================== We can use the zope.testbrowser from wsgi_intercept: >>> from wsgi_intercept.zope_testbrowser import WSGI_Browser as Browser >>> browser = Browser() >>> browser.open("http://localhost/") As we expect with the normal testbrowser, headers are sorted with the status first: >>> print browser.headers Status: 200 OK Content-length: 586 Content-type: text/plain X-Powered-By: WSGI XXX: the above is a deviation from what happens with the testing testbrowser, how to fix? Regression: Handle Errors header does not appear in wsgi environ ---------------------------------------------------------------- >>> browser.handleErrors = False >>> browser.open("http://localhost/") >>> 'HTTP_X_ZOPE_HANDLE_ERRORS' in browser.contents.upper() False van.testing-3.0.0/van/testing/tests.py0000644000076600000240000000432611272046321016753 0ustar jintystaff############################################################################## # # Copyright (c) 2008 Vanguardistas LLC. # 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. # ############################################################################## import os import unittest import doctest from pprint import pformat from van.testing.layer import zcml_layer, wsgi_intercept_layer from zope.component import getUtility from zope.interface import Interface try: import zope.testbrowser have_testbrowser = True except: have_testbrowser = False MARKER = 'MARKER' _HERE = os.path.dirname(__file__) def simple_app(environ, start_response): """Simplest possible application object""" marker = getUtility(Interface, name=u"test") response = pformat(environ) + "\nMarker: %s" % marker start_response('200 OK', [('Content-type', 'text/plain'), ('X-Powered-By', 'WSGI'), ('Content-length', len(response)), ]) return [response] class ZCMLLayer: zcml = os.path.join(_HERE, 'ftesting.zcml') zcml_layer(ZCMLLayer) class ZCMLExtraLayer: zcml_features = ('extra',) zcml = os.path.join(_HERE, 'ftesting.zcml') zcml_layer(ZCMLExtraLayer) class FunctionalLayer(ZCMLLayer): @classmethod def make_application(cls): return simple_app wsgi_intercept_layer(FunctionalLayer) def test_suite(): ftests = unittest.TestSuite([doctest.DocFileSuite('README.txt')]) ftests.layer = FunctionalLayer extra_tests = unittest.TestSuite([doctest.DocFileSuite('zcml_features.txt')]) extra_tests.layer = ZCMLExtraLayer if have_testbrowser: ftests.addTest(doctest.DocFileSuite('testbrowser.txt')) return unittest.TestSuite([ ftests, extra_tests, doctest.DocTestSuite('van.testing.layer'), ]) van.testing-3.0.0/van/testing/zcml_features.txt0000644000076600000240000000106311272046321020636 0ustar jintystaffThe zcml_layer can understand a "zcml_features" attribute, this attribute is set on the Layer that this test is in: >>> from van.testing.tests import ZCMLExtraLayer >>> ZCMLExtraLayer.zcml_features ('extra',) Ths means our zcml was loaded with the "extra" extra and we can get the test_extra utility: >>> from zope.interface import Interface >>> from zope.component import queryUtility >>> queryUtility(Interface, name="test", default='None') 'MARKER' >>> queryUtility(Interface, name="test_extra", default='None') 'MARKER' van.testing-3.0.0/van.testing.egg-info/0000755000076600000240000000000011272046330016723 5ustar jintystaffvan.testing-3.0.0/van.testing.egg-info/PKG-INFO0000644000076600000240000001120211272046326020021 0ustar jintystaffMetadata-Version: 1.0 Name: van.testing Version: 3.0.0 Summary: Layers for zope.testing to simplify test setups Home-page: http://pypi.python.org/pypi/van.testing Author: Vanguardistas LLC Author-email: zope-dev@zope.org License: ZPL 2.1 Description: .. contents:: van.testing provides tools for testing zope3/WSGI based applications that do not use the ZODB or local utilities. Testing Utilities ----------------- The most common use of this testing module is functional testing zope applications. It provides tools to setup layers which load the configuration ZCML as well as setting up wsgi_intercept in a layer. This test is part of such a layer (setup in van.testing.tests.FunctionalLayer): >>> from wsgi_intercept import WSGI_HTTPConnection as HTTPConnection >>> conn = HTTPConnection('localhost', 80) >>> conn.request('GET', '/') >>> r = conn.getresponse() >>> print r.read() # doctest: +ELLIPSIS {'HTTP_ACCEPT_ENCODING': 'identity', 'HTTP_HOST': 'localhost', 'PATH_INFO': '/', 'QUERY_STRING': '', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': '', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.1\r\n', 'wsgi.errors': , 'wsgi.input': , 'wsgi.multiprocess': 0, 'wsgi.multithread': 0, 'wsgi.run_once': 0, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)} Marker: MARKER Layers ------ Some basic layers useful for making test setups. >>> import os.path >>> from van.testing.layer import zcml_layer, null_layer A zcml layer which sets up and tears down a zcml test harness (but is much simpler than that provided with zope.app.functional): >>> class ZCMLLayer: ... zcml = os.path.join(os.path.dirname(__file__), 'ftesting.zcml') >>> zcml_layer(ZCMLLayer) Some default layers are provided for use with zope.testing, a "null" layer that specifically does nothing. This is useful for layers which inherit from other layers but where you don't want setup/teardown functions run twice (is this a zope.testing bug?): >>> class ExampleNullLayer(ZCMLLayer): ... pass >>> null_layer(ExampleNullLayer) This test runs in the layer van.testing.tests.ZCMLLayer, so we can get the "test" utility but not the test_extra utility (see zcml_features.txt for an example of a zcml layer with features): >>> from zope.interface import Interface >>> from zope.component import queryUtility >>> queryUtility(Interface, name="test", default='None') 'MARKER' >>> queryUtility(Interface, name="test_extra", default='None') 'None' Changes ======= 3.0.0 (2009-10-28) ------------------ - Add an option to have a zcml_features attribute on a zcml layer indicating the features to load when loading the zcml. 2.0.1 (2009-04-07) ------------------ - Allow users to specify the domain and port of the wsgi_intercept_layer by adding those attributes to the class. - Fix testbrowser support a bit so that it performs more like zope.testbrowser.testing.Browser. - Remove support for local component registrys (zope.site). This brings in the whole ZODB as zope.site's tests currently depend on it. 2.0.0 (2009-04-01) ------------------ - Remove dependencies by using zope.configuration.xmlconfig to setup zcml rather than zope.app.appsetup. This leaves out some security configuration but the win from less dependencies is massive. In my tests, no tests had any issues with this. - Add a wsgi_intercept layer and a functional_layer that combines both zcml and wsgi_intercept layer. 1.0.0 (2008-11-21) ------------------ - Initial Release Platform: UNKNOWN Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Zope Public License Classifier: Programming Language :: Python Classifier: Topic :: Software Development :: Testing Classifier: Development Status :: 5 - Production/Stable van.testing-3.0.0/van.testing.egg-info/SOURCES.txt0000644000076600000240000000076011272046326020617 0ustar jintystaffCHANGES.txt ZopePublicLicense.txt buildout.cfg setup.py van/__init__.py van.testing.egg-info/PKG-INFO van.testing.egg-info/SOURCES.txt van.testing.egg-info/dependency_links.txt van.testing.egg-info/namespace_packages.txt van.testing.egg-info/not-zip-safe van.testing.egg-info/requires.txt van.testing.egg-info/top_level.txt van/testing/README.txt van/testing/__init__.py van/testing/ftesting.zcml van/testing/layer.py van/testing/testbrowser.txt van/testing/tests.py van/testing/zcml_features.txtvan.testing-3.0.0/van.testing.egg-info/dependency_links.txt0000644000076600000240000000000111272046326022776 0ustar jintystaff van.testing-3.0.0/van.testing.egg-info/namespace_packages.txt0000644000076600000240000000000411272046326023255 0ustar jintystaffvan van.testing-3.0.0/van.testing.egg-info/not-zip-safe0000644000076600000240000000000111272046326021156 0ustar jintystaff van.testing-3.0.0/van.testing.egg-info/requires.txt0000644000076600000240000000011011272046326021320 0ustar jintystaffsetuptools wsgi_intercept zope.component zope.configuration zope.testingvan.testing-3.0.0/van.testing.egg-info/top_level.txt0000644000076600000240000000000411272046326021454 0ustar jintystaffvan