⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 step.py

📁 The BuildBot is a system to automate the compile/test cycle required by most software projects. CVS
💻 PY
字号:
from twisted.web import htmlimport urllibfrom buildbot.status.web.base import HtmlResource, path_to_builder, \     path_to_buildfrom buildbot.status.web.logs import LogsResourcefrom buildbot import utilfrom time import ctime# /builders/$builder/builds/$buildnum/steps/$stepnameclass StatusResourceBuildStep(HtmlResource):    title = "Build Step"    addSlash = True    def __init__(self, build_status, step_status):        HtmlResource.__init__(self)        self.status = build_status        self.step_status = step_status    def body(self, req):        s = self.step_status        b = s.getBuild()        builder_name = b.getBuilder().getName()        build_num = b.getNumber()        data = ""        data += ('<h1>BuildStep <a href="%s">%s</a>:' %                 (path_to_builder(req, b.getBuilder()), builder_name))        data += '<a href="%s">#%d</a>' % (path_to_build(req, b), build_num)        data += ":%s</h1>\n" % s.getName()        if s.isFinished():            data += ("<h2>Finished</h2>\n"                     "<p>%s</p>\n" % html.escape("%s" % s.getText()))        else:            data += ("<h2>Not Finished</h2>\n"                     "<p>ETA %s seconds</p>\n" % s.getETA())        exp = s.getExpectations()        if exp:            data += ("<h2>Expectations</h2>\n"                     "<ul>\n")            for e in exp:                data += "<li>%s: current=%s, target=%s</li>\n" % \                        (html.escape(e[0]), e[1], e[2])            data += "</ul>\n"        (start, end) = s.getTimes()        data += "<h2>Timing</h2>\n"        data += "<table>\n"        data += "<tr><td>Start</td><td>%s</td></tr>\n" % ctime(start)        if end:            data += "<tr><td>End</td><td>%s</td></tr>\n" % ctime(end)            data += "<tr><td>Elapsed</td><td>%s</td></tr>\n" % util.formatInterval(end - start)        data += "</table>\n"        logs = s.getLogs()        if logs:            data += ("<h2>Logs</h2>\n"                     "<ul>\n")            for logfile in logs:                if logfile.hasContents():                    # FIXME: If the step name has a / in it, this is broken                    # either way.  If we quote it but say '/'s are safe,                    # it chops up the step name.  If we quote it and '/'s                    # are not safe, it escapes the / that separates the                    # step name from the log number.                    logname = logfile.getName()                    logurl = req.childLink("logs/%s" % urllib.quote(logname))                    data += ('<li><a href="%s">%s</a></li>\n' %                              (logurl, html.escape(logname)))                else:                    data += '<li>%s</li>\n' % html.escape(logname)            data += "</ul>\n"        return data    def getChild(self, path, req):        if path == "logs":            return LogsResource(self.step_status)        return HtmlResource.getChild(self, path, req)# /builders/$builder/builds/$buildnum/stepsclass StepsResource(HtmlResource):    addSlash = True    def __init__(self, build_status):        HtmlResource.__init__(self)        self.build_status = build_status    def getChild(self, path, req):        for s in self.build_status.getSteps():            if s.getName() == path:                return StatusResourceBuildStep(self.build_status, s)        return HtmlResource.getChild(self, path, req)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -