[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