-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Andreas Jung wrote: | | | --On 18. Mai 2008 20:54:29 -0700 ericx <[EMAIL PROTECTED]> wrote: | |>> Test-module import failures: |> |> Module: hhsa.policy.tests |> |> AttributeError: 'module' object has no attribute 'test_suite' | | This say it all. Aside from that there is little we can do because | your posting does not contain much useable in order for giving further | help. So first trible check your code (look at your error message, you | need a test_suite() method). Yah. That's what I thot too. However, the definition of test_suite() actually appears twice: ~ ** [EMAIL PROTECTED] ** /usr/local/www/hhsa ** Mon May 19 08:26:15 # find ./src/ -type f | xargs grep test_suite | grep -v .svn | grep -v pyc ./src/hhsa.policy/hhsa/policy/tests.py:def test_suite(): ./src/hhsa.policy/hhsa/policy/tests.py: unittest.main(defaultTest='test_suite') ./src/hhsa.policy/hhsa/policy/tests/test_setup.py:def test_suite(): It appears first in ./src/hhsa.policy/hhsa/policy/tests.py (a file created by buildout) and later in ./src/hhsa.policy/hhsa/policy/tests.py (a file I created as an exercise in the book). By removing the file created by buildout, I do get rid of the AttributeError; however, the "NOT FOUND" error remains. - -- Sorry I didn't supply more initially. I assumed this must be some sort of obvious newbie mistake. What would be helpful to see? The source? To the best of my ability I believe it is a duplicate of examples given in the book with only a few name changes. Included below are: buildout.cfg, configure.zcml, base.py, setup_tests.py, and properties.xml buildout.cfg # File: buildout.cfg # Author: Charlie Root, [EMAIL PROTECTED] # Date: Wed May 14 21:02:08 2008 # Time-stamp: <2008-05-16 18:40:03 ericx> # Description: The mysterious plone buildout file. Must learn more... # # $Id: buildout.cfg 9 2008-05-16 22:52:18Z root $ [buildout] parts = ~ plone ~ productdistros ~ instance ~ zopepy # Add additional egg download sources here. dist.plone.org contains archives # of Plone packages. find-links = ~ http://dist.plone.org ~ http://download.zope.org/ppix/ ~ http://download.zope.org/distribution/ ~ http://effbot.org/downloads # Add additional eggs here # elementtree is required by Plone eggs = ~ elementtree ~ hhsa.policy # Reference any eggs you are developing here, one per line # e.g.: develop = src/my.package develop = ~ src/hhsa.policy [plone] #recipe = plone.recipe.plone>=3.0,<3.1dev recipe = plone.recipe.plone==3.0.6 #recipe = plone.recipe.plone>=3.0.6,<3.1dev # By overriding the download URLs and making them an empty list, we # Make sure our own products directory takes precedence urls = # Use this section to download additional old-style products. # List any number of URLs for product tarballs under URLs (separate # with whitespace, or break over several lines, with subsequent lines # indented). If any archives contain several products inside a top-level # directory, list the archive file name (i.e. the last part of the URL, # normally with a .tar.gz suffix or similar) under 'nested-packages'. # If any archives extract to a product directory with a version suffix, list # the archive name under 'version-suffix-packages'. [productdistros] recipe = plone.recipe.distros urls = http://www.zope.org/Members/shh/DocFinderTab/1.0.2/DocFinderTab-1.0.2.tar.gz ~ http://plone.org/products/clouseau/releases/0.8.1/clouseau-0-8-1.zip nested-packages = version-suffix-packages = [instance] recipe = plone.recipe.zope2instance zope2-location = /usr/local/www/Zope210 user = zope_admin:zope-pass http-address = 8080 debug-mode = on #verbose-security = on # If you want Zope to know about any additional eggs, list them here. # This should include any development eggs you listed in develop-eggs above, # e.g. eggs = ${buildout:eggs} ${plone:eggs} my.package eggs = ~ ${buildout:eggs} ~ ${plone:eggs} # If you want to register ZCML slugs for any packages, list them here. # e.g. zcml = my.package my.other.package zcml = ~ hhsa.policy products = ~ ${buildout:directory}/products ~ ${productdistros:location} ~ /usr/local/www/Zope210/Products zope-conf-additional = ~ effective-user zope [zopepy] recipe = zc.recipe.egg eggs = ${instance:eggs} interpreter = zopepy extra-paths = /usr/local/www/Zope210/lib/python scripts = zopepy ./src/hhsa.policy/hhsa/policy/configure.zcml <configure ~ xmlns="http://namespaces.zope.org/zope" ~ xmlns:five="http://namespaces.zope.org/five" ~ xmlns:genericsetup="http://namespaces.zope.org/genericsetup" ~ i18n_domain="hhsa.policy"> ~ <genericsetup:registerProfile ~ name="default" ~ title="HHSA Site Policy" ~ directory="profiles/default" ~ description="Turn a Plone site into the HHSA site." ~ provides="Products.GenericSetup.interfaces.EXTENSION" ~ /> </configure> ./src/hhsa.policy/hhsa/policy/tests/base.py # File: base.py # Author: Charlie Root, [EMAIL PROTECTED] # Date: Fri May 16 20:08:00 2008 # Time-stamp: <2008-05-16 21:19:15 ericx> # Description: tests, wonderful tests... # # $Id: base.py 14 2008-05-19 01:07:41Z root $ from Products.Five import zcml from Products.Five import fiveconfigure from Testing import ZopeTestCase as ztc from Products.PloneTestCase import PloneTestCase as ptc from Products.PloneTestCase.layer import onsetup @onsetup def setup_hhsa_policy(): ~ """Set up the additional products required for the HHSA site ~ policy. ~ The @onsetup decorator causes the execution of this body to be ~ deferred until the setup of the Plone site testing layer. ~ """ ~ # Load the ZCML configuration for the hhsa.policy package. ~ fiveconfigure.debug_mode = True ~ import hhsa.policy ~ zcml.load_config('configure.zcml', hhsa.policy) ~ fiveconfigure.debug_mode = False ~ # We need to tell the testing framework that these products should ~ # be available. This can't happen until after we have loaded the ~ # ZCML. ~ ztc.installPackage('hhsa.policy') # The order here is important: We firs call the (deferred) function # which installs teh products we need for the HHSA package. Then we # let PloneTestCase set up this product on installation. setup_hhsa_policy() ptc.setupPloneSite(products=['hhsa.policy']) class HHSAPolicyTestCase(ptc.PloneTestCase): ~ """We use this base class for all the tests in this package. If ~ necessary, we can put common utility or setup code in here. ~ """ ./src/hhsa.policy/hhsa/policy/tests/test_setup.py # File: test_setup.py # Author: Charlie Root, [EMAIL PROTECTED] # Date: Fri May 16 20:46:35 2008 # Time-stamp: <2008-05-18 21:17:58 ericx> # Description: testy testy testy # # $Id: test_setup.py 15 2008-05-19 01:08:18Z root $ import unittest from hhsa.policy.tests.base import HHSAPolicyTestCase class TestSetup(HHSAPolicyTestCase): ~ def test_portal_title(self): ~ self.assertEquals("Holmes Hole Sailing Association", ~ self.portal.getProperty('title')) ~ def test_portal_description(self): ~ self.assertEquals("Welcome to the HHSA web site.", ~ self.portal.getProperty('description')) def test_suite(): ~ suite = unittest.TestSuite() ~ suite.addTest(unittest.makeSuite(TestSetup)) ~ return suite ./src/hhsa.policy/hhsa/policy/profiles/default/properties.xml <?xml version="1.0"?> <!-- $Id: properties.xml 17 2008-05-19 01:24:15Z root $ --> <site> ~ <property name="title">Holmes Hole Sailing Association</property> ~ <property name="description">Welcome to the HHSA web site.</property> </site> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIMXjrD1roJTQ4LlERAuTKAJ96QpDqN/92t6eNkDbKUTLHuPx8awCgilMz NDLhSeqsfhDGjvR/XWXQVoI= =vlEo -----END PGP SIGNATURE----- _______________________________________________ Product-Developers mailing list [email protected] http://lists.plone.org/mailman/listinfo/product-developers
