
Hi All, I've just finished making one of my python libraries into something that setuptools is happy with: https://secure.simplistix.co.uk/svn/Simplistix/twiddler/trunk/ I'm trying to add a short buildout.cfg next to the setup.py so I can check this project out, run bootstrap.py, run buildout and then do: C:\LocalSVN\twiddler> bin\test ...to run the tests. Here's the buildout.cfg I currently have: [buildout] develop = . parts = test [test] recipe = zc.recipe.testrunner eggs = twiddler Now, if I do: C:\LocalSVN\twiddler> bin\test -m twiddler ...I get the results I'd expect. However, if I do: C:\LocalSVN\twiddler> bin\test I get the following unexpected output: Test-module import failures: Module: eggs.setuptools-0.6c5-py2.4.egg.setuptools.tests.test_resources ImportError: No module named eggs.setuptools-0.6c5-py2.4.egg.setuptools.tests.te st_resources Module: eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_packageindex ImportError: No module named eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.te st_packageindex Module: eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_resources ImportError: No module named eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.te st_resources Module: eggs.zc.buildout-1.0.7_dev-py2.4.egg.zc.buildout.tests ImportError: No module named eggs.zc.buildout-1.0.7_dev-py2.4.egg.zc.buildout.te sts Module: eggs.zc.buildout-1.1.0-py2.4.egg.zc.buildout.tests ImportError: No module named eggs.zc.buildout-1.1.0-py2.4.egg.zc.buildout.tests Module: eggs.zc.recipe.egg-1.1.0-py2.4.egg.zc.recipe.egg.tests ImportError: No module named eggs.zc.recipe.egg-1.1.0-py2.4.egg.zc.recipe.egg.te sts Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.common.tests.te st_idatetime ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.common.tests.test_idatetime Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.common.tests.te st_import_interfaces ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.common.tests.test_import_interfaces Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_adap ter ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.tests.test_adapter Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_advi ce ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.tests.test_advice Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_decl arations ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.tests.test_declarations Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_docu ment ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.tests.test_document Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_elem ent ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.tests.test_element Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_inte rface ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.tests.test_interface Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_odd_ declarations ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.tests.test_odd_declarations Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_sort ing ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.tests.test_sorting Module: eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_veri fy ImportError: No module named eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.inte rface.tests.test_verify Module: eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.tests ImportError: No module named eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.test s Module: eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.testrunner.tests ImportError: No module named eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.test runner.tests Running zope.testing.testrunner.layer.UnitTests tests: Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds. <snip expected output> Test-modules with import problems: eggs.setuptools-0.6c5-py2.4.egg.setuptools.tests.test_resources eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_packageindex eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_resources eggs.zc.buildout-1.0.7_dev-py2.4.egg.zc.buildout.tests eggs.zc.buildout-1.1.0-py2.4.egg.zc.buildout.tests eggs.zc.recipe.egg-1.1.0-py2.4.egg.zc.recipe.egg.tests eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.common.tests.test_ida tetime eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.common.tests.test_imp ort_interfaces eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_adapter eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_advice eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_declaratio ns eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_document eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_element eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_interface eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_odd_declar ations eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_sorting eggs.zope.interface-3.4.1-py2.4-win32.egg.zope.interface.tests.test_verify eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.tests eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.testrunner.tests How come? cheers, Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk

My guess is that you forgot to list lots of your dependencies in your setup.py file. Look at the generated test script. You should see all required eggs listed in the Python path. You might find it useful to also add an "interpreter" part: [buildout] parts = test py ... [py] recipe = zc.recipe.egg eggs = twidddler interpreter = py Then, after running the buildout, you'll be able to: bin/py and get a Python prompt with twiddler and it's dependencies in the Python path. This makes it easy play with your code. Jim On Jul 22, 2008, at 10:24 AM, Chris Withers wrote:
Hi All,
I've just finished making one of my python libraries into something that setuptools is happy with:
https://secure.simplistix.co.uk/svn/Simplistix/twiddler/trunk/
I'm trying to add a short buildout.cfg next to the setup.py so I can check this project out, run bootstrap.py, run buildout and then do:
C:\LocalSVN\twiddler> bin\test
...to run the tests.
Here's the buildout.cfg I currently have:
[buildout] develop = . parts = test
[test] recipe = zc.recipe.testrunner eggs = twiddler
Now, if I do:
C:\LocalSVN\twiddler> bin\test -m twiddler
...I get the results I'd expect.
However, if I do:
C:\LocalSVN\twiddler> bin\test
I get the following unexpected output:
Test-module import failures: Module: eggs.setuptools-0.6c5- py2.4.egg.setuptools.tests.test_resources ImportError: No module named eggs.setuptools-0.6c5- py2.4.egg.setuptools.tests.te st_resources Module: eggs.setuptools-0.6c8- py2.4.egg.setuptools.tests.test_packageindex ImportError: No module named eggs.setuptools-0.6c8- py2.4.egg.setuptools.tests.te st_packageindex Module: eggs.setuptools-0.6c8- py2.4.egg.setuptools.tests.test_resources ImportError: No module named eggs.setuptools-0.6c8- py2.4.egg.setuptools.tests.te st_resources Module: eggs.zc.buildout-1.0.7_dev-py2.4.egg.zc.buildout.tests ImportError: No module named eggs.zc.buildout-1.0.7_dev- py2.4.egg.zc.buildout.te sts Module: eggs.zc.buildout-1.1.0-py2.4.egg.zc.buildout.tests ImportError: No module named eggs.zc.buildout-1.1.0- py2.4.egg.zc.buildout.tests Module: eggs.zc.recipe.egg-1.1.0-py2.4.egg.zc.recipe.egg.tests ImportError: No module named eggs.zc.recipe.egg-1.1.0- py2.4.egg.zc.recipe.egg.te sts Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.common.tests.te st_idatetime ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.common.tests.test_idatetime Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.common.tests.te st_import_interfaces ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.common.tests.test_import_interfaces Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_adap ter ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.tests.test_adapter Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_advi ce ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.tests.test_advice Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_decl arations ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.tests.test_declarations Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_docu ment ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.tests.test_document Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_elem ent ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.tests.test_element Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_inte rface ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.tests.test_interface Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_odd_ declarations ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.tests.test_odd_declarations Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_sort ing ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.tests.test_sorting Module: eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_veri fy ImportError: No module named eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.inte rface.tests.test_verify Module: eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.tests ImportError: No module named eggs.zope.testing-3.6.0- py2.4.egg.zope.testing.test s Module: eggs.zope.testing-3.6.0- py2.4.egg.zope.testing.testrunner.tests ImportError: No module named eggs.zope.testing-3.6.0- py2.4.egg.zope.testing.test runner.tests Running zope.testing.testrunner.layer.UnitTests tests: Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds. <snip expected output> Test-modules with import problems: eggs.setuptools-0.6c5-py2.4.egg.setuptools.tests.test_resources eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_packageindex eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_resources eggs.zc.buildout-1.0.7_dev-py2.4.egg.zc.buildout.tests eggs.zc.buildout-1.1.0-py2.4.egg.zc.buildout.tests eggs.zc.recipe.egg-1.1.0-py2.4.egg.zc.recipe.egg.tests eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.common.tests.test_ida tetime eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.common.tests.test_imp ort_interfaces eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_adapter eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_advice eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_declaratio ns eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_document eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_element eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_interface eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_odd_declar ations eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_sorting eggs.zope.interface-3.4.1-py2.4- win32.egg.zope.interface.tests.test_verify eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.tests eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.testrunner.tests
How come?
cheers,
Chris
-- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org http://mail.python.org/mailman/listinfo/distutils-sig
-- Jim Fulton Zope Corporation

Jim Fulton wrote:
My guess is that you forgot to list lots of your dependencies in your setup.py file.
I don't think so, twiddler only has dependencies on elementtree and zope.interface and these are both listed.
Look at the generated test script. You should see all required eggs listed in the Python path.
Yep, I do.
Test-module import failures: Module: eggs.setuptools-0.6c5-py2.4.egg.setuptools.tests.test_resources ImportError: No module named eggs.setuptools-0.6c5-py2.4.egg.setuptools.tests.te st_resources
Okay, taking just this first one: - why is the script trying to run setuptools' tests? - why is it failing? Both of these questions could also be applied just as equally to zc.buildout, zc.egg.recipe, zope.interface and zope.testing.
Test-modules with import problems: eggs.setuptools-0.6c5-py2.4.egg.setuptools.tests.test_resources eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_packageindex eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_resources eggs.zc.buildout-1.0.7_dev-py2.4.egg.zc.buildout.tests eggs.zc.buildout-1.1.0-py2.4.egg.zc.buildout.tests eggs.zc.recipe.egg-1.1.0-py2.4.egg.zc.recipe.egg.tests <snip>
It looks like the testrunner might be trying to find tests in the egg cache? Why would it do that? cheers, Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk

On Jul 22, 2008, at 11:10 AM, Chris Withers wrote: ...
Test-module import failures: Module: eggs.setuptools-0.6c5- py2.4.egg.setuptools.tests.test_resources ImportError: No module named eggs.setuptools-0.6c5- py2.4.egg.setuptools.tests.te st_resources
Okay, taking just this first one:
- why is the script trying to run setuptools' tests?
Ah, I totally miss-read your error messages. Sorry. I have no idea.
- why is it failing?
well, eggs.setuptools-0.6c5-py2.4.egg.setuptools.tests.test_resources is not a valid module name. I have no idea were it is getting this module name.
Both of these questions could also be applied just as equally to zc.buildout, zc.egg.recipe, zope.interface and zope.testing.
Yup
Test-modules with import problems: eggs.setuptools-0.6c5-py2.4.egg.setuptools.tests.test_resources eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_packageindex eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_resources eggs.zc.buildout-1.0.7_dev-py2.4.egg.zc.buildout.tests eggs.zc.buildout-1.1.0-py2.4.egg.zc.buildout.tests eggs.zc.recipe.egg-1.1.0-py2.4.egg.zc.recipe.egg.tests <snip>
Note, again, that these are not valid module names. I have no idea where the test runner is getting these.
It looks like the testrunner might be trying to find tests in the egg cache?
<shrug> Those aren't valid module names, so I have no idea what it's doing.
Why would it do that?
Don't know. Must be a windows thing. ;) I tried your buildout -- even on windows :) -- at it worked fine for me. The test ran find (with a test failure). I suggest making sure your Python is clean. Jim -- Jim Fulton Zope Corporation

Jim Fulton wrote:
Don't know. Must be a windows thing. ;)
I tried your buildout -- even on windows :) -- at it worked fine for me. The test ran find (with a test failure). I suggest making sure your Python is clean.
Well, I just tried this on linux on both python2.4 and python2.5, source built pythons and got very similar results to those on windows. (with the testrunner tripping up on stuff in the egg cache) In all cases, the egg versions picked were as follows: zc.buildout 1.1.0 setuptools 0.6c8 zc.recipe.testrunner 1.0.0 zc.recipe.egg 1.1.0 zope.testing 3.6.0 zope.interface 3.4.1 elementtree 1.2.7-20070827-preview Do these match the versions you're using? I've attached the full output from when I'd just completed the svn checkout on trunk through running tests with both versions of python in case you can spot anything "different". I've also attached the bin/test script. It'd be interesting to know if this differs from yours. The only other thing I can think of: do you maybe have "default user config files" living in ~ that are influencing zope.testing or zc.recipe.testrunner in some way? cheers, Chris PS: The buildout.cfg I'm now using is also checked in and the svn path is https://secure.simplistix.co.uk/svn/Simplistix/twiddler/trunk -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk Checked out revision 3414. chris@server2:~$ cd twiddler/ chris@server2:~/twiddler$ python2.5 bootstrap.py Creating directory '/home/chris/twiddler/bin'. Creating directory '/home/chris/twiddler/parts'. Creating directory '/home/chris/twiddler/eggs'. Creating directory '/home/chris/twiddler/develop-eggs'. Generated script '/home/chris/twiddler/bin/buildout'. chris@server2:~/twiddler$ bin/buildout Getting distribution for 'setuptools'. Got setuptools 0.6c8. Upgraded: setuptools version 0.6c8; restarting. Generated script '/home/chris/twiddler/bin/buildout'. Develop: '/home/chris/twiddler/.' Getting distribution for 'zc.recipe.testrunner'. zip_safe flag not set; analyzing archive contents... Got zc.recipe.testrunner 1.0.0. Getting distribution for 'zc.recipe.egg>=1.0.0a3'. Got zc.recipe.egg 1.1.0. Getting distribution for 'zope.testing'. Got zope.testing 3.6.0. Getting distribution for 'zope.interface'. Got zope.interface 3.4.1. Installing test. Getting distribution for 'elementtree'. zip_safe flag not set; analyzing archive contents... Got elementtree 1.2.7-20070827-preview. Generated script '/home/chris/twiddler/bin/test'. Installing py. Generated interpreter '/home/chris/twiddler/bin/py'. chris@server2:~/twiddler$ bin/test Test-module import failures: Module: eggs.zc.buildout-1.1.0-py2.5.egg.zc.buildout.tests ImportError: No module named eggs.zc.buildout-1.1.0-py2.5.egg.zc.buildout.tests Module: eggs.zc.recipe.egg-1.1.0-py2.5.egg.zc.recipe.egg.tests ImportError: No module named eggs.zc.recipe.egg-1.1.0-py2.5.egg.zc.recipe.egg.tests Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_idatetime ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_idatetime Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_import_interfaces ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_import_interfaces Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_adapter ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_adapter Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_advice ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_advice Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_declarations ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_declarations Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_document ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_document Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_element ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_element Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_interface ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_interface Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_odd_declarations ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_odd_declarations Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_sorting ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_sorting Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_verify ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_verify Module: eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.tests ImportError: No module named eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.tests Module: eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.testrunner.tests ImportError: No module named eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.testrunner.tests Running zope.testing.testrunner.layer.UnitTests tests: Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds. Failure in test /home/chris/twiddler/twiddler/tests/../docs/templating.txt Failed doctest test for templating.txt File "/home/chris/twiddler/twiddler/tests/../docs/templating.txt", line 0 ---------------------------------------------------------------------- File "/home/chris/twiddler/twiddler/tests/../docs/templating.txt", line 130, in templating.txt Failed example: print page_template.render(site_template,page) Differences (ndiff with -expected +actual): <html> <body> <h1 id="title">The Test Page</h1> <div id="content"> <div id="author">Monty Burns</div> + <div id="body"> Testing bodies are fine bodies. </div> - <div id="body"> - Testing bodies are fine bodies. - </div> </div> </body> </html> Ran 219 tests with 1 failures and 0 errors in 0.442 seconds. Tearing down left over layers: Tear down zope.testing.testrunner.layer.UnitTests in 0.000 seconds. Test-modules with import problems: eggs.zc.buildout-1.1.0-py2.5.egg.zc.buildout.tests eggs.zc.recipe.egg-1.1.0-py2.5.egg.zc.recipe.egg.tests eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_idatetime eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_import_interfaces eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_adapter eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_advice eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_declarations eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_document eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_element eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_interface eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_odd_declarations eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_sorting eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_verify eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.tests eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.testrunner.tests chris@server2:~/twiddler$ python2.4 bootstrap.py Generated script '/home/chris/twiddler/bin/buildout'. chris@server2:~/twiddler$ bin/buildout Getting distribution for 'zc.buildout'. Getting distribution for 'setuptools'. Got setuptools 0.6c8. Got zc.buildout 1.1.0. Upgraded: zc.buildout version 1.1.0, setuptools version 0.6c8; restarting. Generated script '/home/chris/twiddler/bin/buildout'. Develop: '/home/chris/twiddler/.' Getting distribution for 'zc.recipe.testrunner'. zip_safe flag not set; analyzing archive contents... Got zc.recipe.testrunner 1.0.0. Getting distribution for 'zc.recipe.egg>=1.0.0a3'. Got zc.recipe.egg 1.1.0. Getting distribution for 'zope.testing'. Got zope.testing 3.6.0. Getting distribution for 'zope.interface'. Got zope.interface 3.4.1. Uninstalling py. Uninstalling test. Installing test. Getting distribution for 'elementtree'. zip_safe flag not set; analyzing archive contents... Got elementtree 1.2.7-20070827-preview. Generated script '/home/chris/twiddler/bin/test'. Installing py. Generated interpreter '/home/chris/twiddler/bin/py'. chris@server2:~/twiddler$ bin/test Test-module import failures: Module: eggs.setuptools-0.6c6-py2.4.egg.setuptools.tests.test_packageindex ImportError: No module named eggs.setuptools-0.6c6-py2.4.egg.setuptools.tests.test_packageindex Module: eggs.setuptools-0.6c6-py2.4.egg.setuptools.tests.test_resources ImportError: No module named eggs.setuptools-0.6c6-py2.4.egg.setuptools.tests.test_resources Module: eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_packageindex ImportError: No module named eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_packageindex Module: eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_resources ImportError: No module named eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_resources Module: eggs.zc.buildout-1.0.6-py2.4.egg.zc.buildout.tests ImportError: No module named eggs.zc.buildout-1.0.6-py2.4.egg.zc.buildout.tests Module: eggs.zc.buildout-1.1.0-py2.4.egg.zc.buildout.tests ImportError: No module named eggs.zc.buildout-1.1.0-py2.4.egg.zc.buildout.tests Module: eggs.zc.buildout-1.1.0-py2.5.egg.zc.buildout.tests ImportError: No module named eggs.zc.buildout-1.1.0-py2.5.egg.zc.buildout.tests Module: eggs.zc.recipe.egg-1.1.0-py2.4.egg.zc.recipe.egg.tests ImportError: No module named eggs.zc.recipe.egg-1.1.0-py2.4.egg.zc.recipe.egg.tests Module: eggs.zc.recipe.egg-1.1.0-py2.5.egg.zc.recipe.egg.tests ImportError: No module named eggs.zc.recipe.egg-1.1.0-py2.5.egg.zc.recipe.egg.tests Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.common.tests.test_idatetime ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.common.tests.test_idatetime Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.common.tests.test_import_interfaces ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.common.tests.test_import_interfaces Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_adapter ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_adapter Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_advice ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_advice Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_declarations ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_declarations Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_document ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_document Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_element ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_element Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_interface ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_interface Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_odd_declarations ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_odd_declarations Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_sorting ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_sorting Module: eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_verify ImportError: No module named eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_verify Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_idatetime ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_idatetime Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_import_interfaces ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_import_interfaces Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_adapter ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_adapter Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_advice ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_advice Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_declarations ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_declarations Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_document ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_document Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_element ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_element Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_interface ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_interface Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_odd_declarations ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_odd_declarations Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_sorting ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_sorting Module: eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_verify ImportError: No module named eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_verify Module: eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.tests ImportError: No module named eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.tests Module: eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.testrunner.tests ImportError: No module named eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.testrunner.tests Module: eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.tests ImportError: No module named eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.tests Module: eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.testrunner.tests ImportError: No module named eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.testrunner.tests Running zope.testing.testrunner.layer.UnitTests tests: Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds. Failure in test /home/chris/twiddler/twiddler/tests/../docs/templating.txt Failed doctest test for templating.txt File "/home/chris/twiddler/twiddler/tests/../docs/templating.txt", line 0 ---------------------------------------------------------------------- File "/home/chris/twiddler/twiddler/tests/../docs/templating.txt", line 130, in templating.txt Failed example: print page_template.render(site_template,page) Differences (ndiff with -expected +actual): <html> <body> <h1 id="title">The Test Page</h1> <div id="content"> <div id="author">Monty Burns</div> + <div id="body"> Testing bodies are fine bodies. </div> - <div id="body"> - Testing bodies are fine bodies. - </div> </div> </body> </html> Ran 219 tests with 1 failures and 0 errors in 0.404 seconds. Tearing down left over layers: Tear down zope.testing.testrunner.layer.UnitTests in 0.000 seconds. Test-modules with import problems: eggs.setuptools-0.6c6-py2.4.egg.setuptools.tests.test_packageindex eggs.setuptools-0.6c6-py2.4.egg.setuptools.tests.test_resources eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_packageindex eggs.setuptools-0.6c8-py2.4.egg.setuptools.tests.test_resources eggs.zc.buildout-1.0.6-py2.4.egg.zc.buildout.tests eggs.zc.buildout-1.1.0-py2.4.egg.zc.buildout.tests eggs.zc.buildout-1.1.0-py2.5.egg.zc.buildout.tests eggs.zc.recipe.egg-1.1.0-py2.4.egg.zc.recipe.egg.tests eggs.zc.recipe.egg-1.1.0-py2.5.egg.zc.recipe.egg.tests eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.common.tests.test_idatetime eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.common.tests.test_import_interfaces eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_adapter eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_advice eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_declarations eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_document eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_element eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_interface eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_odd_declarations eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_sorting eggs.zope.interface-3.4.1-py2.4-linux-i686.egg.zope.interface.tests.test_verify eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_idatetime eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.common.tests.test_import_interfaces eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_adapter eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_advice eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_declarations eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_document eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_element eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_interface eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_odd_declarations eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_sorting eggs.zope.interface-3.4.1-py2.5-linux-i686.egg.zope.interface.tests.test_verify eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.tests eggs.zope.testing-3.6.0-py2.4.egg.zope.testing.testrunner.tests eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.tests eggs.zope.testing-3.6.0-py2.5.egg.zope.testing.testrunner.tests #!/usr/local/bin/python2.4 import sys sys.path[0:0] = [ '/home/chris/twiddler', '/home/chris/twiddler/eggs/zope.testing-3.6.0-py2.4.egg', '/home/chris/twiddler/eggs/zope.interface-3.4.1-py2.4-linux-i686.egg', '/home/chris/twiddler/eggs/setuptools-0.6c8-py2.4.egg', '/home/chris/twiddler/eggs/elementtree-1.2.7_20070827_preview-py2.4.egg', ] import os sys.argv[0] = os.path.abspath(sys.argv[0]) os.chdir('/home/chris/twiddler/parts/test') import zope.testing.testrunner if __name__ == '__main__': zope.testing.testrunner.run([ '--test-path', '/home/chris/twiddler', ])

On Thu, Jul 24, 2008 at 07:58:30PM +0100, Chris Withers wrote:
Jim Fulton wrote:
Don't know. Must be a windows thing. ;)
I tried your buildout -- even on windows :) -- at it worked fine for me. The test ran find (with a test failure). I suggest making sure your Python is clean.
Well, I just tried this on linux on both python2.4 and python2.5, source built pythons and got very similar results to those on windows. (with the testrunner tripping up on stuff in the egg cache)
What does your buildout.cfg look like?
PS: The buildout.cfg I'm now using is also checked in and the svn path is https://secure.simplistix.co.uk/svn/Simplistix/twiddler/trunk
Ah, I see you anticipated my question.
I've also attached the bin/test script. It'd be interesting to know if this differs from yours.
And here it is:
#!/usr/local/bin/python2.4
import sys sys.path[0:0] = [ '/home/chris/twiddler', '/home/chris/twiddler/eggs/zope.testing-3.6.0-py2.4.egg', '/home/chris/twiddler/eggs/zope.interface-3.4.1-py2.4-linux-i686.egg', '/home/chris/twiddler/eggs/setuptools-0.6c8-py2.4.egg', '/home/chris/twiddler/eggs/elementtree-1.2.7_20070827_preview-py2.4.egg', ]
import os sys.argv[0] = os.path.abspath(sys.argv[0]) os.chdir('/home/chris/twiddler/parts/test')
import zope.testing.testrunner
if __name__ == '__main__': zope.testing.testrunner.run([ '--test-path', '/home/chris/twiddler',
This is Not Good. You don't want the test runner to look for tests under /home/chris/twiddler/, which contains the egg cache directly under it, as well as your Python packages. People who use an intermediate 'src/' subdir do not get the problem you stumbled upon. I think an intermediate directory is a Very Good Idea, because: * you want to be able to import 'twiddler', which means /home/chris/twiddler/ must be in you sys.path * you don't want setup.py or bootstrap.py to be in your sys.path, which contradicts the above requirement OTOH if you want to keep your current package layout, you need to convince zc.recipe.testrunner to use a different --test-path (specifically, '/home/chris/twiddler/twiddler'). I've no idea how to achieve this. I'd choose the other solution (insert a src/ subdir into my tree, above the twiddler subdir).
])
The only other thing I can think of: do you maybe have "default user config files" living in ~ that are influencing zope.testing or zc.recipe.testrunner in some way?
You can override the egg cache location in a dotfile in your home. Power users do that to avoid downloading the same eggs over and over again for each project they're working on. HTH, Marius Gedminas -- Most security experts REALLY believe in firewalls. The expect that, when they die, arrive at the great firewall in the sky where Saint Peter is running a default policy of REJECT. --- Sander Plomp

Marius Gedminas wrote:
if __name__ == '__main__': zope.testing.testrunner.run([ '--test-path', '/home/chris/twiddler',
This is Not Good.
Right, although Jim said he tried this with the same buildout.cfg and didn't experience the problem. I'd love to know what caused that different behaviour...
You don't want the test runner to look for tests under /home/chris/twiddler/, which contains the egg cache directly under it, as well as your Python packages.
But these module names don't match any test pattern so why would they be found?
People who use an intermediate 'src/' subdir do not get the problem you stumbled upon. I think an intermediate directory is a Very Good Idea, because:
I don't. I hate intermediate directories. I actually hate not being able to just put setup.py and buildout.py in the twiddler package and distributing one zipped up folder, however I gave up trying to bash distutils to do this...
* you want to be able to import 'twiddler', which means /home/chris/twiddler/ must be in you sys.path
Right.
* you don't want setup.py or bootstrap.py to be in your sys.path, which contradicts the above requirement
Why don't I want them in my sys.path?
OTOH if you want to keep your current package layout, you need to convince zc.recipe.testrunner to use a different --test-path (specifically, '/home/chris/twiddler/twiddler'). I've no idea how to achieve this. I'd choose the other solution (insert a src/ subdir into my tree, above the twiddler subdir).
I'm not sure I quite by this, I don't understand why zope.testing is trying to import something like: eggs.zc.buildout-1.1.0-py2.5.egg.zc.buildout.tests
The only other thing I can think of: do you maybe have "default user config files" living in ~ that are influencing zope.testing or zc.recipe.testrunner in some way?
You can override the egg cache location in a dotfile in your home. Power users do that to avoid downloading the same eggs over and over again for each project they're working on.
That sounds like a good idea, but I'd prefer to solve this problem for anyone who might want to develop packages of mine. cheers, Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk

Context: Test runner gets confused by the egg cache that lives under its --test-path. On Thu, Jul 24, 2008 at 05:14:33PM -0400, Jim Fulton wrote:
Arguably, the test runner recipe should be able to deal with this case. I view this as a bug. It would be great if someone reported it. :)
I'll report it. On Thu, Jul 24, 2008 at 10:33:31PM +0100, Chris Withers wrote:
Marius Gedminas wrote:
if __name__ == '__main__': zope.testing.testrunner.run([ '--test-path', '/home/chris/twiddler',
You don't want the test runner to look for tests under /home/chris/twiddler/, which contains the egg cache directly under it, as well as your Python packages.
But these module names don't match any test pattern so why would they be found?
Because they contain submodules that do match the test pattern, IIUC.
* you want to be able to import 'twiddler', which means /home/chris/twiddler/ must be in you sys.path
Right.
* you don't want setup.py or bootstrap.py to be in your sys.path, which contradicts the above requirement
Why don't I want them in my sys.path?
Uh, because otherwise my argument breaks down completely. ;-) I suppose it's a matter of purity. I feel about extra files lying on my sys.path about the same as I feel about ending statements with semicolons in Python.
I'm not sure I quite by this, I don't understand why zope.testing is trying to import something like:
eggs.zc.buildout-1.1.0-py2.5.egg.zc.buildout.tests
It found a directory named 'tests' under eggs/zc.buildout-1.1.0-py2.5.egg/zc/buildout/tests and naively converted the slashes to periods, assuming that the root of the search three (i.e. the path passed with --test-path) is on your $PYTHONPATH. I agree that this is a bug. It can be fixed by: - not recursing into subdirectories with names that are invalid Python module names - not recursing into subdirectories that don't have a __init__ (and eggs/ certainly doesn't, I hope)
That sounds like a good idea, but I'd prefer to solve this problem for anyone who might want to develop packages of mine.
Agreed. Bug filed as https://bugs.launchpad.net/zope.testing/+bug/251759 Marius Gedminas -- The memory management on the PowerPC can be used to frighten small children. -- Linus Torvalds
participants (3)
-
Chris Withers
-
Jim Fulton
-
Marius Gedminas