[Buildbot] #3437: format configuration file syntax errors in more friendly way
Buildbot trac
trac at buildbot.net
Tue Feb 2 09:07:05 UTC 2016
#3437: format configuration file syntax errors in more friendly way
----------------------+-----------------------
Reporter: rutsky | Owner:
Type: undecided | Status: new
Priority: major | Milestone: undecided
Version: 0.9.0b6 | Keywords:
----------------------+-----------------------
Right now if I make Python's syntax error in master.cfg, like this one:
{{{
c = BuildmasterConfig = {}}
}}}
I get following error in the log:
{{{
2016-02-02 11:54:34+0300 [-] Loading configuration from
'/home/bob/stuff/buildbot/master/master.cfg'
2016-02-02 11:54:34+0300 [-] error while parsing config file:
Traceback (most recent call last):
File "/home/bob/stuff/buildbot/env/local/lib/python2.7/site-
packages/twisted/python/threadpool.py", line 246, in inContext
result = inContext.theWork()
File "/home/bob/stuff/buildbot/env/local/lib/python2.7/site-
packages/twisted/python/threadpool.py", line 262, in <lambda>
inContext.theWork = lambda: context.call(ctx, func, *args,
**kw)
File "/home/bob/stuff/buildbot/env/local/lib/python2.7/site-
packages/twisted/python/context.py", line 118, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args,
**kw)
File "/home/bob/stuff/buildbot/env/local/lib/python2.7/site-
packages/twisted/python/context.py", line 81, in callWithContext
return func(*args,**kw)
--- <exception caught here> ---
File
"/home/bob/stuff/buildbot/buildbot/master/buildbot/config.py", line 203,
in loadConfig
exec(f, localDict)
exceptions.SyntaxError: invalid syntax (master.cfg, line 4)
2016-02-02 11:54:34+0300 [-] Configuration Errors:
2016-02-02 11:54:34+0300 [-] error while parsing config file: invalid
syntax (master.cfg, line 4) (traceback in logfile)
}}}
Which tells about error only type, file and line number.
Default Python traceback formatter outputs more user friendly message.
With following change:
{{{
#!diff
diff --git a/master/buildbot/config.py b/master/buildbot/config.py
index 73fc9b1..b7e43b8 100644
--- a/master/buildbot/config.py
+++ b/master/buildbot/config.py
@@ -18,6 +18,7 @@ from future.utils import itervalues
import os
import re
import sys
+import traceback
import warnings
from buildbot import interfaces
@@ -207,8 +208,9 @@ class MasterConfig(util.ComparableMixin,
WorkerAPICompatMixin):
raise errors
except Exception:
log.err(failure.Failure(), 'error while parsing config
file:')
- error("error while parsing config file: %s (traceback in
logfile)" %
- (sys.exc_info()[1],),
+ error("error while parsing config file "
+ "(full traceback in logfile):\n%s" %
+ (traceback.format_exc(),),
)
raise errors
finally:
}}}
output in logs is more user friendly:
{{{
2016-02-02 12:02:54+0300 [-] Loading configuration from
'/home/bob/stuff/buildbot/master/master.cfg'
2016-02-02 12:02:54+0300 [-] error while parsing config file:
Traceback (most recent call last):
File "/home/bob/stuff/buildbot/env/local/lib/python2.7/site-
packages/twisted/python/threadpool.py", line 246, in inContext
result = inContext.theWork()
File "/home/bob/stuff/buildbot/env/local/lib/python2.7/site-
packages/twisted/python/threadpool.py", line 262, in <lambda>
inContext.theWork = lambda: context.call(ctx, func, *args,
**kw)
File "/home/bob/stuff/buildbot/env/local/lib/python2.7/site-
packages/twisted/python/context.py", line 118, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args,
**kw)
File "/home/bob/stuff/buildbot/env/local/lib/python2.7/site-
packages/twisted/python/context.py", line 81, in callWithContext
return func(*args,**kw)
--- <exception caught here> ---
File
"/home/bob/stuff/buildbot/buildbot/master/buildbot/config.py", line 204,
in loadConfig
exec(f, localDict)
exceptions.SyntaxError: invalid syntax (master.cfg, line 4)
2016-02-02 12:02:54+0300 [-] Configuration Errors:
2016-02-02 12:02:54+0300 [-] error while parsing config file (full
traceback in logfile):
Traceback (most recent call last):
File
"/home/bob/stuff/buildbot/buildbot/master/buildbot/config.py", line 204,
in loadConfig
exec(f, localDict)
File "/home/bob/stuff/buildbot/master/master.cfg", line 4
c = BuildmasterConfig = {}}
^
SyntaxError: invalid syntax
}}}
--
Ticket URL: <http://trac.buildbot.net/ticket/3437>
Buildbot <http://buildbot.net/>
Buildbot: build/test automation
More information about the bugs
mailing list