[Checkins] SVN: megrok.feeds/trunk/ Gave megrok.feeds its skeleton of directories and prepared to write

Brandon Rhodes brandon at rhodesmill.org
Fri Jul 18 07:29:44 EDT 2008


Log message for revision 88493:
  Gave megrok.feeds its skeleton of directories and prepared to write
  tests (the one test present is copied from an obsolete Grok branch of
  mine, and does not work yet here).
  

Changed:
  _U  megrok.feeds/trunk/
  U   megrok.feeds/trunk/buildout.cfg
  U   megrok.feeds/trunk/setup.py
  A   megrok.feeds/trunk/src/megrok/feeds/
  A   megrok.feeds/trunk/src/megrok/feeds/__init__.py
  A   megrok.feeds/trunk/src/megrok/feeds/ftesting.zcml
  A   megrok.feeds/trunk/src/megrok/feeds/ftests/
  A   megrok.feeds/trunk/src/megrok/feeds/ftests/__init__.py
  A   megrok.feeds/trunk/src/megrok/feeds/ftests/atom/
  A   megrok.feeds/trunk/src/megrok/feeds/ftests/atom/__init__.py/
  A   megrok.feeds/trunk/src/megrok/feeds/ftests/atom/atom.py
  A   megrok.feeds/trunk/src/megrok/feeds/ftests/test_functional.py

-=-

Property changes on: megrok.feeds/trunk
___________________________________________________________________
Name: svn:externals
   + bootstrap svn://svn.zope.org/repos/main/zc.buildout/trunk/bootstrap/
vice.outbound.core https://svn.plone.org/svn/collective/vice.outbound/branches/brandon-splits-packages/src/vice.outbound.core


Modified: megrok.feeds/trunk/buildout.cfg
===================================================================
--- megrok.feeds/trunk/buildout.cfg	2008-07-18 11:13:09 UTC (rev 88492)
+++ megrok.feeds/trunk/buildout.cfg	2008-07-18 11:29:44 UTC (rev 88493)
@@ -1,47 +1,11 @@
 [buildout]
-develop = .
-parts = app data test
+develop = . vice.outbound.core
+parts = test
 find-links = http://download.zope.org/distribution/
-newest = false
+extends = http://grok.zope.org/releaseinfo/grok-0.13.cfg
+versions = versions
 
-[app]
-recipe = zc.zope3recipes>=0.5.3:application
-eggs = megrok.PROJECT_NAME
-site.zcml = <include package="megrok.genshi" />
-            <include package="zope.app.twisted" />
-
-            <unauthenticatedPrincipal id="zope.anybody"
-                                      title="Unauthenticated User" />
-            <unauthenticatedGroup id="zope.Anybody"
-                                  title="Unauthenticated Users" />
-            <authenticatedGroup id="zope.Authenticated"
-                                title="Authenticated Users" />
-            <everybodyGroup id="zope.Everybody"
-                            title="All Users" />
-            <principal id="zope.manager"
-                       title="Manager"
-                       login="grok"
-                       password_manager="Plain Text"
-                       password="grok"
-                       />
-
-            <!-- Replace the following directive if you do not want
-                 public access -->
-            <grant permission="zope.View"
-                   principal="zope.Anybody" />
-            <grant permission="zope.app.dublincore.view"
-                   principal="zope.Anybody" />
-
-            <role id="zope.Manager" title="Site Manager" />
-            <role id="zope.Member" title="Site Member" />
-            <grantAll role="zope.Manager" />
-            <grant role="zope.Manager"
-                   principal="zope.manager" />
-
-[data]
-recipe = zc.recipe.filestorage
-
 [test]
 recipe = zc.recipe.testrunner
-eggs = megrok.PROJECT_NAME
+eggs = megrok.feeds
 defaults = ['--tests-pattern', '^f?tests$', '-v']

Modified: megrok.feeds/trunk/setup.py
===================================================================
--- megrok.feeds/trunk/setup.py	2008-07-18 11:13:09 UTC (rev 88492)
+++ megrok.feeds/trunk/setup.py	2008-07-18 11:29:44 UTC (rev 88493)
@@ -1,8 +1,8 @@
 from setuptools import setup, find_packages
 
-version = '0.0'
+version = '1.0dev'
 
-setup(name='megrok.PROJECT_NAME',
+setup(name='megrok.feeds',
       version=version,
       description="",
       long_description="""\
@@ -22,6 +22,7 @@
       install_requires=['setuptools',
                         'grok',
                         # Add extra requirements here
+                        'vice.outbound.core',
                         ],
       entry_points="""
       # Add entry points here

Added: megrok.feeds/trunk/src/megrok/feeds/__init__.py
===================================================================
--- megrok.feeds/trunk/src/megrok/feeds/__init__.py	                        (rev 0)
+++ megrok.feeds/trunk/src/megrok/feeds/__init__.py	2008-07-18 11:29:44 UTC (rev 88493)
@@ -0,0 +1,2 @@
+"""Atom and RSS syndication feeds for Grok applications.
+"""

Added: megrok.feeds/trunk/src/megrok/feeds/ftesting.zcml
===================================================================
--- megrok.feeds/trunk/src/megrok/feeds/ftesting.zcml	                        (rev 0)
+++ megrok.feeds/trunk/src/megrok/feeds/ftesting.zcml	2008-07-18 11:29:44 UTC (rev 88493)
@@ -0,0 +1,35 @@
+<configure
+   xmlns="http://namespaces.zope.org/zope"
+   xmlns:grok="http://namespaces.zope.org/grok"
+   i18n_domain="grok"
+   package="megrok.feeds"
+   >
+
+  <include package="grok" />
+  <grok:grok package="megrok.feeds.ftests" />
+
+  <securityPolicy
+      component="zope.app.securitypolicy.zopepolicy.ZopeSecurityPolicy"
+      />
+
+  <unauthenticatedPrincipal
+      id="zope.anybody"
+      title="Unauthenticated User"
+      />
+  <grant
+      permission="zope.View"
+      principal="zope.anybody"
+      />
+
+  <principal
+      id="zope.mgr"
+      title="Manager"
+      login="mgr"
+      password="mgrpw"
+      />
+
+  <role id="zope.Manager" title="Site Manager" />
+  <grantAll role="zope.Manager" />
+  <grant role="zope.Manager" principal="zope.mgr" />
+
+</configure>

Added: megrok.feeds/trunk/src/megrok/feeds/ftests/__init__.py
===================================================================

Added: megrok.feeds/trunk/src/megrok/feeds/ftests/atom/atom.py
===================================================================
--- megrok.feeds/trunk/src/megrok/feeds/ftests/atom/atom.py	                        (rev 0)
+++ megrok.feeds/trunk/src/megrok/feeds/ftests/atom/atom.py	2008-07-18 11:29:44 UTC (rev 88493)
@@ -0,0 +1,37 @@
+"""
+A grok.AtomFeed syndicates sub-objects into an Atom feed.
+
+  >>> c = grok.MammothBox()
+  >>> getRootFolder()["c"] = c
+
+  >>> from zope.testbrowser.testing import Browser
+  >>> browser = Browser()
+  >>> browser.handleErrors = False
+  >>> browser.open("http://localhost/c/@@atom")
+  >>> print browser.contents
+  <html>...
+  ...Manfred the Mammoth...
+  ...Really big...
+  ...
+
+"""
+import grok
+from zope import schema
+from zope.interface import Interface, implements
+from zope.schema.fieldproperty import FieldProperty
+
+class IMammoth(Interface):
+    name = schema.TextLine(title=u"Name")
+    size = schema.TextLine(title=u"Size", default=u"Quite normal")
+
+class MammothBox(grok.OrderedContainer):
+    pass
+
+class Mammoth(grok.Model):
+    implements(IMammoth)
+    
+    name = FieldProperty(IMammoth['name'])    
+    size = FieldProperty(IMammoth['size'])    
+
+class Atom(grok.AtomFeed):
+    grok.context(MammothBox)

Added: megrok.feeds/trunk/src/megrok/feeds/ftests/test_functional.py
===================================================================
--- megrok.feeds/trunk/src/megrok/feeds/ftests/test_functional.py	                        (rev 0)
+++ megrok.feeds/trunk/src/megrok/feeds/ftests/test_functional.py	2008-07-18 11:29:44 UTC (rev 88493)
@@ -0,0 +1,58 @@
+import re
+import unittest
+import megrok.feeds
+import os.path
+
+from pkg_resources import resource_listdir
+from zope.testing import doctest, renormalizing
+from zope.app.testing.functional import (HTTPCaller, getRootFolder,
+                                         FunctionalTestSetup, sync, ZCMLLayer)
+
+ftesting_zcml = os.path.join(os.path.dirname(megrok.feeds.__file__),
+                             'ftesting.zcml')
+FunctionalLayer = ZCMLLayer(ftesting_zcml, __name__, 'FunctionalLayer')
+
+def setUp(test):
+    FunctionalTestSetup().setUp()
+
+def tearDown(test):
+    FunctionalTestSetup().tearDown()
+
+checker = renormalizing.RENormalizing([
+    # Accommodate to exception wrapping in newer versions of mechanize
+    (re.compile(r'httperror_seek_wrapper:', re.M), 'HTTPError:'),
+    ])
+
+def suiteFromPackage(name):
+    files = resource_listdir(__name__, name)
+    suite = unittest.TestSuite()
+    for filename in files:
+        if not filename.endswith('.py'):
+            continue
+        if filename == '__init__.py':
+            continue
+
+        dottedname = 'megrok.feeds.ftests.%s.%s' % (name, filename[:-3])
+        test = doctest.DocTestSuite(
+            dottedname, setUp=setUp, tearDown=tearDown,
+            checker=checker,
+            extraglobs=dict(http=HTTPCaller(),
+                            getRootFolder=getRootFolder,
+                            sync=sync),
+            optionflags=(doctest.ELLIPSIS+
+                         doctest.NORMALIZE_WHITESPACE+
+                         doctest.REPORT_NDIFF)
+            )
+        test.layer = FunctionalLayer
+
+        suite.addTest(test)
+    return suite
+
+def test_suite():
+    suite = unittest.TestSuite()
+    for name in ['atom']:
+        suite.addTest(suiteFromPackage(name))
+    return suite
+
+if __name__ == '__main__':
+    unittest.main(defaultTest='test_suite')



More information about the Checkins mailing list