[Checkins] SVN: bluebream/trunk/ Merge from branch ccomb-merge-templates:
Christophe Combelles
ccomb at free.fr
Tue Mar 30 20:44:03 EDT 2010
Log message for revision 110351:
Merge from branch ccomb-merge-templates:
Removed the bluebream_simple template and add namespace detection to the base
template. Added more tests
Changed:
U bluebream/trunk/CHANGES.txt
U bluebream/trunk/README.txt
U bluebream/trunk/setup.py
U bluebream/trunk/src/bluebream/bluebream_base/project_template/etc/site.zcml_tmpl
U bluebream/trunk/src/bluebream/bluebream_base/project_template/setup.py_tmpl
A bluebream/trunk/src/bluebream/bluebream_base/project_template/src/+main_package+/
D bluebream/trunk/src/bluebream/bluebream_base/project_template/src/+namespace_package+/
U bluebream/trunk/src/bluebream/bluebream_base/template.py
U bluebream/trunk/src/bluebream/bluebream_base/tests/bluebream.txt
U bluebream/trunk/src/bluebream/bluebream_base/tests/test_bluebream.py
D bluebream/trunk/src/bluebream/bluebream_simple/
-=-
Modified: bluebream/trunk/CHANGES.txt
===================================================================
--- bluebream/trunk/CHANGES.txt 2010-03-31 00:40:51 UTC (rev 110350)
+++ bluebream/trunk/CHANGES.txt 2010-03-31 00:44:03 UTC (rev 110351)
@@ -8,6 +8,9 @@
- Use project name as i18n_domain in base template
+- Merge the two templates into a single one by allowing to create a
+ flat or nested namespace structure, depending on the project name.
+
1.0a5 (2010-03-28)
------------------
Modified: bluebream/trunk/README.txt
===================================================================
--- bluebream/trunk/README.txt 2010-03-31 00:40:51 UTC (rev 110350)
+++ bluebream/trunk/README.txt 2010-03-31 00:44:03 UTC (rev 110351)
@@ -18,16 +18,15 @@
Features
--------
-A few features distinguish BlueBream from other Python web
-frameworks:
+Here are the features distinguishing BlueBream from other Python web frameworks:
-- BlueBream is built on top of the `Zope Tool Kit
+- BlueBream is built on top of the `Zope Toolkit
<http://docs.zope.org/zopetoolkit>`_ (ZTK), which has many years of
experience proving it meets the demanding requirements for stable,
scalable software.
-- BlueBream uses the powerful and familiar Buildout_ system written
- in Python.
+- BlueBream uses the powerful and familiar Buildout_ building system written in
+ Python.
- BlueBream employs the Zope Object Database ZODB_, a transactional
object database, providing extremely powerful and easy to use
@@ -42,14 +41,12 @@
*Separation of concerns* to create highly cohesive reusable
components (zope.component_).
-- BlueBream implements Python Web Server Gateway Interface (`WSGI
- <http://www.wsgi.org/wsgi>`_) using `Paste
- <http://pythonpaste.org>`_, `PasteScript
- <http://pythonpaste.org/script>`_, and `PasteDeploy
+- BlueBream implements the `WSGI` specification (`Web Server Gateway Interface
+ <http://www.wsgi.org/wsgi>`_) with the help of `PasteDeploy
<http://pythonpaste.org/deploy>`_.
- BlueBream includes a number of well tested components to implement
- common activities. A few are of these are:
+ common activities. A few of these are:
- zope.publisher_ publishes Python objects on the web, emphasizing
`WSGI <http://www.wsgi.org/wsgi>`_ compatibility
@@ -60,12 +57,12 @@
- zope.testing_ and zope.testbrowser_ offer unit and functional testing
frameworks
- - zope.pagetemplate_ is an XHTML-compliant language for devloping
+ - zope.pagetemplate_ is an XHTML-compliant language for developing
templates
- - zope.schema_ is a schema engine
+ - zope.schema_ is a schema engine to describe your data models
- - zope.formlib_ is a tool for automatically generating forms
+ - zope.formlib_ is a tool for automatically generating forms from your schemas
.. _Buildout: http://www.buildout.org
.. _ZODB: http://www.zodb.org
@@ -92,8 +89,8 @@
Internet access to `PyPI <http://pypi.python.org/pypi>`_ is required
to perform installation of BlueBream.
-The ``bluebream`` distribution provides a template based project
-creation based on PasteScript template. Once BlueBream is installed,
+The ``bluebream`` distribution provides a quick project
+creation tool based on PasteScript templates. Once BlueBream is installed,
run ``paster`` command to create the project directory structure.
The ``create`` sub-command provided by paster will show a wizard to
create the project directory structure.
@@ -102,31 +99,31 @@
$ paster create -t bluebream
-This will bring a wizard asking details about your new project. If
-you provide package name, namespace package name and version number,
-you will get a working application which can be modified further.
-The project name will be used as the name of egg. You can also
-change the values provided later.
+This will bring a wizard asking details about your new project. If you provide
+a package name and version number, you will get a working application which can
+be modified further. The project name will be used as the egg name. You can
+also change the values provided later.
-The project name can be give given as a command line argument::
+The project name can be given as a command line argument::
$ paster create -t bluebream sampleproject
-The name of namespace package also can be given from the command line::
+You can provide a dotted name so that the package be created in a namespace,
+with any number of levels, such as "sample.main" or "sample.app.main". It will
+result in a nested structure allowing you to split large projects into several
+packages.
- $ paster create -t bluebream sampleproject namespace_package=mycompany
-
If you provide an option from the command line, it will not be
-prompted by the wizard. The other variables are give below, you may
-be give the values from command line, if required:
+prompted by the wizard. The other variables are given below, you can
+give the values from the command line, if required:
-- ``interpreter`` -- Name of custom Python interpreter
+- ``interpreter`` -- Name of the custom Python interpreter
- ``version`` -- Version (like 0.1)
- ``description`` -- One-line description of the package
-- ``long_description`` -- Multi-line description (in reST)
+- ``long_description`` -- Multi-line description (in reStructuredText)
- ``keywords`` -- Space-separated keywords/tags
@@ -134,12 +131,12 @@
- ``author_email`` -- Author email
-- ``url`` -- URL of homepage
+- ``url`` -- URL of the homepage
- ``license_name`` -- License name
- ``zip_safe`` -- ``True``, if the package can be distributed as a .zip
- file othewise ``False``.
+ file otherwise ``False``.
If you are in a hurry, you can simply press *Enter/Return* key and
change the values later. But it would be a good idea, if you provide
@@ -153,20 +150,19 @@
bootstrap the buildout itself::
$ cd sampleproject
- $ python2.6 bootstrap.py
+ $ python bootstrap.py
-The bootstrap script will install ``zc.buildout`` and ``setuptools``
-package. Also, it will create the basic directory structure. Next
-step is building the application. To build the application, run the
-buildout::
+The bootstrap script will install the ``zc.buildout`` and ``setuptools``
+packages. Also, it will create the basic directory structure. Next step is
+building the application. To build the application, run the buildout::
$ ./bin/buidout
The buildout script will download all dependencies and setup the
environment to run your application.
-The most common thing you need while developing application is
-running the server. BlueBream use ``paster`` command provided by
+The most common thing you need while developing an application is
+running the server. BlueBream use the ``paster`` command provided by
PasteScript to run the WSGI server. To run the server, you can pass
the PasteDeploy configuration file as the argument to ``serve``
sub-command as given here::
@@ -178,9 +174,9 @@
from the PasteDeploy configuration file (``debug.ini``).
The second most common thing must be running the test cases.
-BlueBream by create a testrunner using the ``zc.recipe.testrunner``
+BlueBream creates a testrunner using the ``zc.recipe.testrunner``
Buildout recipe. You can see a ``test`` command inside the ``bin``
-directory. To run test cases, you can run this command::
+directory. To run test cases, just run this command::
$ ./bin/test
@@ -190,7 +186,7 @@
$ ./bin/paster shell debug.ini
-More about the test runner and debug shell will be exaplained in the
+More about the test runner and debug shell will be explained in the
BlueBream Manual. You can continue reading about BlueBream from the
`documentation site <http://bluebream.zope.org>`_.
@@ -214,7 +210,7 @@
- IRC Channel: `#bluebream at irc.freenode.net <http://webchat.freenode.net/?randomnick=1&channels=bluebream>`_
-- `Buildbot <http://zope3.afpy.org/buildbot>`_
+- `Buildbot <http://buildbot.afpy.org/bluebream>`_
- The source code is managed at `Zope reposistory
<http://svn.zope.org/bluebream>`_. You can perform a read-only
Modified: bluebream/trunk/setup.py
===================================================================
--- bluebream/trunk/setup.py 2010-03-31 00:40:51 UTC (rev 110350)
+++ bluebream/trunk/setup.py 2010-03-31 00:44:03 UTC (rev 110351)
@@ -52,6 +52,5 @@
entry_points={
"paste.paster_create_template":
["bluebream = bluebream.bluebream_base.template:BlueBream",
- "bluebream_simple = bluebream.bluebream_simple.template:BlueBream"
]})
Modified: bluebream/trunk/src/bluebream/bluebream_base/project_template/etc/site.zcml_tmpl
===================================================================
--- bluebream/trunk/src/bluebream/bluebream_base/project_template/etc/site.zcml_tmpl 2010-03-31 00:40:51 UTC (rev 110350)
+++ bluebream/trunk/src/bluebream/bluebream_base/project_template/etc/site.zcml_tmpl 2010-03-31 00:44:03 UTC (rev 110351)
@@ -44,6 +44,6 @@
<include package="zope.traversing.browser" />
<include package="zope.app.pagetemplate" />
- <include package="${namespace_package}.${main_package}" />
+ <include package="${ns_prefix}${main_package}" />
</configure>
Modified: bluebream/trunk/src/bluebream/bluebream_base/project_template/setup.py_tmpl
===================================================================
--- bluebream/trunk/src/bluebream/bluebream_base/project_template/setup.py_tmpl 2010-03-31 00:40:51 UTC (rev 110350)
+++ bluebream/trunk/src/bluebream/bluebream_base/project_template/setup.py_tmpl 2010-03-31 00:44:03 UTC (rev 110351)
@@ -7,7 +7,7 @@
long_description="""\
${long_description|nothing}""",
# Get strings from http://www.python.org/pypi?%3Aaction=list_classifiers
- classifiers=[],
+ classifiers=[],
keywords=${repr(keywords)|empty},
author=${repr(author)|empty},
author_email=${repr(author_email)|empty},
@@ -15,7 +15,7 @@
license=${repr(license_name)|empty},
package_dir={'': 'src'},
packages=find_packages('src'),
- namespace_packages=[${repr(namespace_package)},],
+ ${len(namespace_packages) and 'namespace_packages=%s,' % repr(namespace_packages) or ''}
include_package_data=True,
zip_safe=${repr(bool(zip_safe))|False},
install_requires=['setuptools',
@@ -57,9 +57,9 @@
],
entry_points = """
[paste.app_factory]
- main = ${namespace_package}.${main_package}.startup:application_factory
+ main = ${ns_prefix}${main_package}.startup:application_factory
[paste.global_paster_command]
- shell = ${namespace_package}.${main_package}.debug:Shell
+ shell = ${ns_prefix}${main_package}.debug:Shell
""",
)
Modified: bluebream/trunk/src/bluebream/bluebream_base/template.py
===================================================================
--- bluebream/trunk/src/bluebream/bluebream_base/template.py 2010-03-31 00:40:51 UTC (rev 110350)
+++ bluebream/trunk/src/bluebream/bluebream_base/template.py 2010-03-31 00:44:03 UTC (rev 110351)
@@ -11,7 +11,8 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
-import sys
+import re, os, sys, shutil
+import pkg_resources
from paste.script import templates
from paste.script.templates import var
@@ -22,10 +23,6 @@
summary = "A BlueBream project, base template"
vars = [
- var('namespace_package', 'Namespace package name'),
- var('main_package',
- 'Main package name (under the namespace)',
- default='main'),
var('interpreter',
'Name of custom Python interpreter',
default='breampy'),
@@ -43,7 +40,6 @@
]
def check_vars(self, vars, cmd):
-
if vars['package'] in ('bluebream', 'bream', 'zope'):
print
print "Error: The chosen project name results in an invalid " \
@@ -51,10 +47,42 @@
print "Please choose a different project name."
sys.exit(1)
- for var in self.vars:
- if var.name == 'namespace_package':
- var.default = vars['package']
+ # detect namespaces in the project name
+ vars['package'] = re.sub('[^A-Za-z0-9.]+', '_', vars['project']).lower()
+ vars['main_package'] = vars['package'].split('.')[-1]
+ self.ns_split = vars['project'].split('.')
+ vars['namespace_packages'] = list(reversed([
+ vars['package'].rsplit('.', i)[0]
+ for i in range(1,len(self.ns_split))]))
+ vars['ns_prefix'] = '.'.join(self.ns_split[:-1]) + '.'
+ if len(self.ns_split) == 1:
+ vars['ns_prefix'] = ''
- vars = templates.Template.check_vars(self, vars, cmd)
+ return templates.Template.check_vars(self, vars, cmd)
- return vars
+ def write_files(self, command, output_dir, vars):
+ """Add namespace packages and move the main package to the last level
+ """
+ if not command.options.verbose:
+ command.verbose = 0
+ templates.Template.write_files(self, command, output_dir, vars)
+
+ if len(self.ns_split) > 1:
+ target_dir = os.path.join(output_dir, 'src',
+ os.path.join(*self.ns_split[:-1]))
+
+ os.makedirs(target_dir)
+
+ ns_decl = "__import__('pkg_resources').declare_namespace(__name__)"
+ for i, namespace_package in enumerate(self.ns_split[:-1]):
+ init_file = os.path.join(output_dir, 'src',
+ os.path.join(*self.ns_split[:i+1]),
+ '__init__.py')
+ open(init_file, 'w').write(ns_decl)
+ main_package_dir = os.path.join(output_dir,
+ 'src',
+ vars['main_package'])
+ shutil.move(main_package_dir, target_dir)
+
+
+
Modified: bluebream/trunk/src/bluebream/bluebream_base/tests/bluebream.txt
===================================================================
--- bluebream/trunk/src/bluebream/bluebream_base/tests/bluebream.txt 2010-03-31 00:40:51 UTC (rev 110350)
+++ bluebream/trunk/src/bluebream/bluebream_base/tests/bluebream.txt 2010-03-31 00:44:03 UTC (rev 110351)
@@ -1,6 +1,20 @@
BlueBream
=========
+The template supports any number namespace levels, depending on the
+provided project name.
+
+First try with a single flat package:
+-------------------------------------
+
+>>> import os
+>>> def print_dir(d):
+... for dirpath, dirnames, filenames in sorted(os.walk(d)):
+... for filename in sorted(filenames):
+... # Hack for http://trac.pythonpaste.org/pythonpaste/ticket/414
+... if not filename.endswith('.pyo'):
+... print os.path.join(dirpath,filename)
+
>>> from paste.script import command
>>> project = 'sample'
>>> commands = command.get_commands()
@@ -8,8 +22,6 @@
>>> runner = cmd('create')
>>> option_args = []
>>> extra_args = [
-... "namespace_package=test_name",
-... "main_package=test_main",
... "interpreter=testpy",
... "version=0.1",
... "description=test_description",
@@ -26,74 +38,208 @@
bluebream#bluebream A BlueBream project, base template
<BLANKLINE>
Variables:
- author: test_author
- author_email: test_author_email
- description: test_description
- egg: sample
- interpreter: testpy
- keywords: test_keyword
- license_name: Test Public License
- long_description: test_long_description
- main_package: test_main
- namespace_package: test_name
- package: sample
- project: sample
- url: http://example.com
- version: 0.1
- zip_safe: False
+ author: test_author
+ author_email: test_author_email
+ description: test_description
+ egg: sample
+ interpreter: testpy
+ keywords: test_keyword
+ license_name: Test Public License
+ long_description: test_long_description
+ package: sample
+ project: sample
+ url: http://example.com
+ version: 0.1
+ zip_safe: False
Creating template bluebream
Creating directory ./sample
- Copying bootstrap.py to ./sample/bootstrap.py
- Copying buildout.cfg_tmpl to ./sample/buildout.cfg
- Copying debug.ini_tmpl to ./sample/debug.ini
- Copying deploy.ini_tmpl to ./sample/deploy.ini
- Recursing into etc
- Creating ./sample/etc/
- Copying site.zcml_tmpl to ./sample/etc/site.zcml
- Copying setup.py_tmpl to ./sample/setup.py
- Recursing into src
- Creating ./sample/src/
- Recursing into +namespace_package+
- Creating ./sample/src/test_name/
- Recursing into +main_package+
- Creating ./sample/src/test_name/test_main/
- Copying __init__.py to ./sample/src/test_name/test_main/__init__.py
- Copying configure.zcml_tmpl to ./sample/src/test_name/test_main/configure.zcml
- Copying debug.py to ./sample/src/test_name/test_main/debug.py
- Copying securitypolicy.zcml_tmpl to ./sample/src/test_name/test_main/securitypolicy.zcml
- Copying startup.py to ./sample/src/test_name/test_main/startup.py
- Recursing into tests
- Creating ./sample/src/test_name/test_main/tests/
- Copying __init__.py to ./sample/src/test_name/test_main/tests/__init__.py
- Copying ftesting.zcml_tmpl to ./sample/src/test_name/test_main/tests/ftesting.zcml
- Copying tests.py_tmpl to ./sample/src/test_name/test_main/tests/tests.py
- Recursing into welcome
- Creating ./sample/src/test_name/test_main/welcome/
- Copying __init__.py to ./sample/src/test_name/test_main/welcome/__init__.py
- Copying app.py to ./sample/src/test_name/test_main/welcome/app.py
- Copying configure.zcml_tmpl to ./sample/src/test_name/test_main/welcome/configure.zcml
- Copying ftests.txt_tmpl to ./sample/src/test_name/test_main/welcome/ftests.txt
- Copying index.pt_tmpl to ./sample/src/test_name/test_main/welcome/index.pt
- Copying interfaces.py to ./sample/src/test_name/test_main/welcome/interfaces.py
- Recursing into static
- Creating ./sample/src/test_name/test_main/welcome/static/
- Copying logo.png to ./sample/src/test_name/test_main/welcome/static/logo.png
- Copying style.css to ./sample/src/test_name/test_main/welcome/static/style.css
- Copying views.py to ./sample/src/test_name/test_main/welcome/views.py
- Copying __init__.py to ./sample/src/test_name/__init__.py
- Recursing into +package+.egg-info
- Creating ./sample/src/sample.egg-info/
- Copying PKG-INFO to ./sample/src/sample.egg-info/PKG-INFO
- Recursing into templates
- Creating ./sample/templates/
- Copying zope_conf.in to ./sample/templates/zope_conf.in
- Recursing into var
- Creating ./sample/var/
- Recursing into filestorage
- Creating ./sample/var/filestorage/
- Copying README.txt to ./sample/var/filestorage/README.txt
- Recursing into log
- Creating ./sample/var/log/
- Copying README.txt to ./sample/var/log/README.txt
- Copying versions.cfg to ./sample/versions.cfg
-Running python setup.py egg_info
+
+>>> print_dir('sample')
+sample/bootstrap.py
+sample/buildout.cfg
+sample/debug.ini
+sample/deploy.ini
+sample/setup.py
+sample/versions.cfg
+sample/etc/site.zcml
+sample/src/sample/__init__.py
+sample/src/sample/configure.zcml
+sample/src/sample/debug.py
+sample/src/sample/securitypolicy.zcml
+sample/src/sample/startup.py
+sample/src/sample.egg-info/PKG-INFO
+sample/src/sample.egg-info/SOURCES.txt
+sample/src/sample.egg-info/dependency_links.txt
+sample/src/sample.egg-info/entry_points.txt
+sample/src/sample.egg-info/requires.txt
+sample/src/sample.egg-info/top_level.txt
+sample/src/sample.egg-info/zip-safe
+sample/src/sample/tests/__init__.py
+sample/src/sample/tests/ftesting.zcml
+sample/src/sample/tests/tests.py
+sample/src/sample/welcome/__init__.py
+sample/src/sample/welcome/app.py
+sample/src/sample/welcome/configure.zcml
+sample/src/sample/welcome/ftests.txt
+sample/src/sample/welcome/index.pt
+sample/src/sample/welcome/interfaces.py
+sample/src/sample/welcome/views.py
+sample/src/sample/welcome/static/logo.png
+sample/src/sample/welcome/static/style.css
+sample/templates/zope_conf.in
+sample/var/filestorage/README.txt
+sample/var/log/README.txt
+
+>>> print open(os.path.join('sample', 'setup.py')).read()
+from setuptools import setup, find_packages
+...
+ shell = sample.debug:Shell
+...
+
+We can also create a project with a namespace:
+----------------------------------------------
+
+>>> project = 'sample.main'
+>>> exit_code = runner.run(option_args + ['-t', 'bluebream', project] + extra_args)
+Selected and implied templates:
+ bluebream#bluebream A BlueBream project, base template
+<BLANKLINE>
+Variables:
+ author: test_author
+ author_email: test_author_email
+ description: test_description
+ egg: sample.main
+ interpreter: testpy
+ keywords: test_keyword
+ license_name: Test Public License
+ long_description: test_long_description
+ package: samplemain
+ project: sample.main
+ url: http://example.com
+ version: 0.1
+ zip_safe: False
+Creating template bluebream
+Creating directory ./sample.main
+
+>>> print_dir('sample.main')
+sample.main/bootstrap.py
+sample.main/buildout.cfg
+sample.main/debug.ini
+sample.main/deploy.ini
+sample.main/setup.py
+sample.main/versions.cfg
+sample.main/etc/site.zcml
+sample.main/src/sample/__init__.py
+sample.main/src/sample.main.egg-info/PKG-INFO
+sample.main/src/sample.main.egg-info/SOURCES.txt
+sample.main/src/sample.main.egg-info/dependency_links.txt
+sample.main/src/sample.main.egg-info/entry_points.txt
+sample.main/src/sample.main.egg-info/namespace_packages.txt
+sample.main/src/sample.main.egg-info/requires.txt
+sample.main/src/sample.main.egg-info/top_level.txt
+sample.main/src/sample.main.egg-info/zip-safe
+sample.main/src/sample/main/__init__.py
+sample.main/src/sample/main/configure.zcml
+sample.main/src/sample/main/debug.py
+sample.main/src/sample/main/securitypolicy.zcml
+sample.main/src/sample/main/startup.py
+sample.main/src/sample/main/tests/__init__.py
+sample.main/src/sample/main/tests/ftesting.zcml
+sample.main/src/sample/main/tests/tests.py
+sample.main/src/sample/main/welcome/__init__.py
+sample.main/src/sample/main/welcome/app.py
+sample.main/src/sample/main/welcome/configure.zcml
+sample.main/src/sample/main/welcome/ftests.txt
+sample.main/src/sample/main/welcome/index.pt
+sample.main/src/sample/main/welcome/interfaces.py
+sample.main/src/sample/main/welcome/views.py
+sample.main/src/sample/main/welcome/static/logo.png
+sample.main/src/sample/main/welcome/static/style.css
+sample.main/templates/zope_conf.in
+sample.main/var/filestorage/README.txt
+sample.main/var/log/README.txt
+
+We check the namespace is ok:
+
+>>> print open(os.path.join('sample.main', 'setup.py')).read()
+from setuptools import setup, find_packages
+...
+ namespace_packages=['sample'],
+...
+shell = sample.main.debug:Shell
+...
+
+
+Another project with two levels of namespace:
+---------------------------------------------
+
+>>> project = 'sample.app.main'
+>>> exit_code = runner.run(option_args + ['-t', 'bluebream', project] + extra_args)
+Selected and implied templates:
+ bluebream#bluebream A BlueBream project, base template
+<BLANKLINE>
+Variables:
+ author: test_author
+ author_email: test_author_email
+ description: test_description
+ egg: sample.app.main
+ interpreter: testpy
+ keywords: test_keyword
+ license_name: Test Public License
+ long_description: test_long_description
+ package: sampleappmain
+ project: sample.app.main
+ url: http://example.com
+ version: 0.1
+ zip_safe: False
+Creating template bluebream
+Creating directory ./sample.app.main
+
+>>> print_dir('sample.app.main')
+sample.app.main/bootstrap.py
+sample.app.main/buildout.cfg
+sample.app.main/debug.ini
+sample.app.main/deploy.ini
+sample.app.main/setup.py
+sample.app.main/versions.cfg
+sample.app.main/etc/site.zcml
+sample.app.main/src/sample/__init__.py
+sample.app.main/src/sample.app.main.egg-info/PKG-INFO
+sample.app.main/src/sample.app.main.egg-info/SOURCES.txt
+sample.app.main/src/sample.app.main.egg-info/dependency_links.txt
+sample.app.main/src/sample.app.main.egg-info/entry_points.txt
+sample.app.main/src/sample.app.main.egg-info/namespace_packages.txt
+sample.app.main/src/sample.app.main.egg-info/requires.txt
+sample.app.main/src/sample.app.main.egg-info/top_level.txt
+sample.app.main/src/sample.app.main.egg-info/zip-safe
+sample.app.main/src/sample/app/__init__.py
+sample.app.main/src/sample/app/main/__init__.py
+sample.app.main/src/sample/app/main/configure.zcml
+sample.app.main/src/sample/app/main/debug.py
+sample.app.main/src/sample/app/main/securitypolicy.zcml
+sample.app.main/src/sample/app/main/startup.py
+sample.app.main/src/sample/app/main/tests/__init__.py
+sample.app.main/src/sample/app/main/tests/ftesting.zcml
+sample.app.main/src/sample/app/main/tests/tests.py
+sample.app.main/src/sample/app/main/welcome/__init__.py
+sample.app.main/src/sample/app/main/welcome/app.py
+sample.app.main/src/sample/app/main/welcome/configure.zcml
+sample.app.main/src/sample/app/main/welcome/ftests.txt
+sample.app.main/src/sample/app/main/welcome/index.pt
+sample.app.main/src/sample/app/main/welcome/interfaces.py
+sample.app.main/src/sample/app/main/welcome/views.py
+sample.app.main/src/sample/app/main/welcome/static/logo.png
+sample.app.main/src/sample/app/main/welcome/static/style.css
+sample.app.main/templates/zope_conf.in
+sample.app.main/var/filestorage/README.txt
+sample.app.main/var/log/README.txt
+
+We check the namespace is ok:
+
+>>> print open(os.path.join('sample.app.main', 'setup.py')).read()
+from setuptools import setup, find_packages
+...
+ namespace_packages=['sample', 'sample.app'],
+...
+shell = sample.app.main.debug:Shell
+...
Modified: bluebream/trunk/src/bluebream/bluebream_base/tests/test_bluebream.py
===================================================================
--- bluebream/trunk/src/bluebream/bluebream_base/tests/test_bluebream.py 2010-03-31 00:40:51 UTC (rev 110350)
+++ bluebream/trunk/src/bluebream/bluebream_base/tests/test_bluebream.py 2010-03-31 00:44:03 UTC (rev 110351)
@@ -27,6 +27,7 @@
'bluebream.txt',
setUp=easy_install_SetUp,
tearDown=zc.buildout.testing.buildoutTearDown,
+ optionflags=doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE,
checker=renormalizing.RENormalizing([
zc.buildout.testing.normalize_path,
zc.buildout.testing.normalize_endings,
More information about the checkins
mailing list