[Checkins] SVN: zc.buildout/branches/aaron-testing-changes/src/zc/buildout/ Made some changes so that the testing functions can share exception handling
Aaron Lehmann
aaron at zope.com
Sat Nov 15 01:41:13 EST 2008
Log message for revision 92955:
Made some changes so that the testing functions can share exception handling
with the main buildout.
Changed:
U zc.buildout/branches/aaron-testing-changes/src/zc/buildout/buildout.py
U zc.buildout/branches/aaron-testing-changes/src/zc/buildout/buildout.txt
U zc.buildout/branches/aaron-testing-changes/src/zc/buildout/testing.py
U zc.buildout/branches/aaron-testing-changes/src/zc/buildout/tests.py
-=-
Modified: zc.buildout/branches/aaron-testing-changes/src/zc/buildout/buildout.py
===================================================================
--- zc.buildout/branches/aaron-testing-changes/src/zc/buildout/buildout.py 2008-11-15 00:31:32 UTC (rev 92954)
+++ zc.buildout/branches/aaron-testing-changes/src/zc/buildout/buildout.py 2008-11-15 06:41:13 UTC (rev 92955)
@@ -1477,40 +1477,50 @@
else:
command = 'install'
- return (config_file, options, user_defaults, windows_restart, command, debug)
+ return (debug, config_file, options, user_defaults, windows_restart, command)
-def main(args=None):
- config_file, options, user_defaults, windows_restart, command, debug = parse(args)
+def handle_internal_error(exc_info):
+ import traceback
+ sys.stderr.write(_internal_error_template)
+ traceback.print_exception(*exc_info)
+ sys.exit(1)
+def except_(func, debug=False, *args):
+ ret = None
try:
- try:
- buildout = Buildout(config_file, options,
- user_defaults, windows_restart, command)
- getattr(buildout, command)(args)
- except SystemExit:
- pass
- except Exception, v:
+ ret = func(*args)
+ except SystemExit:
+ pass
+ except Exception, v:
+ exc_info = sys.exc_info()
+ import pdb, traceback
+ if debug:
_doing()
- exc_info = sys.exc_info()
- import pdb, traceback
- if debug:
- traceback.print_exception(*exc_info)
- sys.stderr.write('\nStarting pdb:\n')
- pdb.post_mortem(exc_info[2])
+ traceback.print_exception(*exc_info)
+ sys.stderr.write('\nStarting pdb:\n')
+ pdb.post_mortem(exc_info[2])
+ else:
+ if isinstance(v, (zc.buildout.UserError,
+ distutils.errors.DistutilsError,
+ )
+ ):
+ _doing()
+ _error(str(v))
else:
- if isinstance(v, (zc.buildout.UserError,
- distutils.errors.DistutilsError,
- )
- ):
- _error(str(v))
- else:
- sys.stderr.write(_internal_error_template)
- traceback.print_exception(*exc_info)
- sys.exit(1)
-
-
+ handle_internal_error(exc_info)
+ return ret
+
+def main(args=None):
+ def do_stuff(
+ config_file, options, user_defaults, windows_restart, command):
+ buildout = Buildout(config_file, options,
+ user_defaults, windows_restart, command)
+ getattr(buildout, command)(args)
+
+ try:
+ except_(do_stuff, *(parse(args)))
finally:
- logging.shutdown()
+ logging.shutdown()
if sys.version_info[:2] < (2, 4):
def reversed(iterable):
Modified: zc.buildout/branches/aaron-testing-changes/src/zc/buildout/buildout.txt
===================================================================
--- zc.buildout/branches/aaron-testing-changes/src/zc/buildout/buildout.txt 2008-11-15 00:31:32 UTC (rev 92954)
+++ zc.buildout/branches/aaron-testing-changes/src/zc/buildout/buildout.txt 2008-11-15 06:41:13 UTC (rev 92955)
@@ -456,7 +456,6 @@
>>> bootstrapBuildout(bo)
>>> installBuildout(bo)
Develop: '/sample-buildout/recipes'
- Uninstalling data-dir.
Installing data-dir.
data-dir: Creating directory foo
data-dir: Creating directory bin
Modified: zc.buildout/branches/aaron-testing-changes/src/zc/buildout/testing.py
===================================================================
--- zc.buildout/branches/aaron-testing-changes/src/zc/buildout/testing.py 2008-11-15 00:31:32 UTC (rev 92954)
+++ zc.buildout/branches/aaron-testing-changes/src/zc/buildout/testing.py 2008-11-15 06:41:13 UTC (rev 92955)
@@ -19,6 +19,7 @@
import BaseHTTPServer, os, random, re, shutil, socket, sys
import tempfile, threading, time, urllib2, errno
import pkg_resources
+import traceback
import zc.buildout.buildout
import zc.buildout.easy_install
@@ -294,7 +295,6 @@
zc.buildout.buildout.Buildout.root_handler = None
zc.buildout.buildout.Buildout.zc_buildout_handler = None
-
setup_template = ("from setuptools import setup\n"
"setup(\n"
" name = \"%s\",\n"
@@ -322,7 +322,8 @@
write(sample_buildout, recipe_dir, 'setup.py',
setup_template % (recipe_dir, entries))
write(sample_buildout, 'buildout.cfg', cfg)
- return zc.buildout.buildout.Buildout(*(zc.buildout.buildout.parse([])[:5]))
+ return zc.buildout.buildout.Buildout(
+ *(zc.buildout.buildout.parse([])[1:6]))
test.globs.update(dict(
sample_buildout = sample,
@@ -341,26 +342,63 @@
bdist_egg = bdist_egg,
start_server = start_server,
buildout = os.path.join(sample, 'bin', 'buildout'),
- bootstrapBuildout = lambda buildout:bootstrapBuildout(test, buildout),
+ bootstrapBuildout = (
+ lambda buildout:zc.buildout.buildout.except_(
+ bootstrapBuildout, False, test, buildout)),
installBuildout = (
lambda buildout,
install_args=None,
- uninstall_args=None:installBuildout(
- test, buildout, install_args, uninstall_args)),
+ uninstall_args=None:zc.buildout.buildout.except_(
+ installBuildout, False,
+ test, buildout, install_args, uninstall_args)),
setupConfig = (
lambda cfg,
sample_buildout=None,
recipe_name='',
recipe_dir='',
- recipes=None:setupConfig(test,
+ recipes=None:zc.buildout.buildout.except_(setupConfig, False,
+ test,
cfg,
sample_buildout,
recipe_name,
recipe_dir,
recipes)),
cleanBuildout = (
- lambda sample_buildout=None:cleanBuildout(test, sample_buildout)),
+ lambda sample_buildout=None:zc.buildout.buildout.except_(
+ cleanBuildout, False, test, sample_buildout)),
))
+
+ def get_logger(name):
+ logger = logging.getLogger(name)
+ if logger.handlers:
+ error = logger.error
+ else:
+ error = sys.err.write
+ return error
+
+ def _doing(_, v, tb):
+ error = get_logger('zc.buildout')
+ message = str(v)
+ doing = []
+ while tb is not None:
+ d = tb.tb_frame.f_locals.get('__doing__')
+ if d:
+ doing.append(d)
+ tb = tb.tb_next
+
+ if doing:
+ error('While:')
+ for d in doing:
+ if not isinstance(d, str):
+ d = d[0] % d[1:]
+ error(' %s' % d)
+
+ def test_handle_internal_error(exc_info):
+ error = get_logger('zc.buildout')
+ _doing(*exc_info)
+ error((zc.buildout.buildout._internal_error_template +
+ ''.join(traceback.format_exception(*exc_info)).strip()))
+ zc.buildout.buildout.handle_internal_error = test_handle_internal_error
zc.buildout.easy_install.prefer_final(prefer_final)
def buildoutTearDown(test):
Modified: zc.buildout/branches/aaron-testing-changes/src/zc/buildout/tests.py
===================================================================
--- zc.buildout/branches/aaron-testing-changes/src/zc/buildout/tests.py 2008-11-15 00:31:32 UTC (rev 92954)
+++ zc.buildout/branches/aaron-testing-changes/src/zc/buildout/tests.py 2008-11-15 06:41:13 UTC (rev 92955)
@@ -2676,7 +2676,7 @@
r'when that file already exists: '),
'[Errno 17] File exists: '
),
- ])
+ ]),
),
doctest.DocFileSuite(
'debugging.txt',
More information about the Checkins
mailing list