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

📄 steps.py

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 PY
字号:
from webkit.basesteps import ShellCommand, SVN, Test, Compile, UploadCommandfrom buildbot.status.builder import SUCCESS, FAILURE, WARNINGSclass CheckOutSource(SVN):    baseURL = "http://svn.webkit.org/repository/webkit/"    mode = "update"    def __init__(self, *args, **kwargs):        SVN.__init__(self, baseURL=self.baseURL, defaultBranch="trunk", mode=self.mode, *args, **kwargs)class SetConfiguration(ShellCommand):    command = ["perl", "./WebKitTools/Scripts/set-webkit-configuration"]        def __init__(self, *args, **kwargs):        configuration = kwargs.pop('configuration')        self.command = self.command + ['--' + configuration]        self.name = "set-configuration-%s" % (configuration,  )        self.description = ["set configuration %s" % (configuration, )]        self.descriptionDone = ["set configuration %s" % (configuration, )]        ShellCommand.__init__(self, *args, **kwargs)class LayoutTest(Test):    name = "layout-test"    description = ["layout-tests running"]    descriptionDone = ["layout-tests"]    command = ["perl", "./WebKitTools/Scripts/run-webkit-tests", "--no-launch-safari", "--no-new-test-results", "--no-sample-on-timeout", "--results-directory", "layout-test-results"]    def commandComplete(self, cmd):        Test.commandComplete(self, cmd)                logText = cmd.logs['stdio'].getText()        incorrectLayoutLines = [line for line in logText.splitlines() if line.find('had incorrect layout') >= 0 or (line.find('test case') >= 0 and (line.find(' crashed') >= 0 or line.find(' timed out') >= 0))]        self.incorrectLayoutLines = incorrectLayoutLines    def evaluateCommand(self, cmd):        if self.incorrectLayoutLines or cmd.rc != 0:            return FAILURE        return SUCCESS    def getText(self, cmd, results):        return self.getText2(cmd, results)    def getText2(self, cmd, results):        if results != SUCCESS and self.incorrectLayoutLines:            return self.incorrectLayoutLines        return [self.name]class JavaScriptCoreTest(Test):    name = "jscore-test"    description = ["jscore-tests running"]    descriptionDone = ["jscore-tests"]    command = ["perl", "./WebKitTools/Scripts/run-javascriptcore-tests"]    logfiles = {'results': 'JavaScriptCore/tests/mozilla/actual.html'}    def commandComplete(self, cmd):        Test.commandComplete(self, cmd)        logText = cmd.logs['stdio'].getText()        statusLines = [line for line in logText.splitlines() if line.find('regression') >= 0 and line.find(' found.') >= 0]        if statusLines and statusLines[0].split()[0] != '0':            self.regressionLine = statusLines[0]        else:            self.regressionLine = None    def evaluateCommand(self, cmd):        if self.regressionLine:            return FAILURE        if cmd.rc != 0:            return FAILURE        return SUCCESS    def getText(self, cmd, results):        return self.getText2(cmd, results)    def getText2(self, cmd, results):        if results != SUCCESS and self.regressionLine:            return [self.name, self.regressionLine]        return [self.name]class PixelLayoutTest(LayoutTest):    name = "pixel-layout-test"    description = ["pixel-layout-tests running"]    descriptionDone = ["pixel-layout-tests"]    command = LayoutTest.command + ["--pixel", "--tolerance", "0.1"]    class LeakTest(LayoutTest):    command = ["perl", "./WebKitTools/Scripts/run-webkit-tests", "--no-launch-safari", "--no-sample-on-timeout", "--leaks", "--results-directory", "layout-test-results"]    def commandComplete(self, cmd):        LayoutTest.commandComplete(self, cmd)        logText = cmd.logs['stdio'].getText()        lines = logText.splitlines()        leakLines = [line for line in lines if line.find('total leaks found!') >= 0]        leakLines += [line for line in lines if line.find('LEAK: ') >= 0]        leakLines = [' '.join(x.split()[1:]) for x in leakLines]        leakSummary = {}        for line in leakLines:            count, key = line.split(' ', 1)            if key.find('total leaks found!') >= 0:                key = 'allocations found by "leaks" tool'            leakSummary[key] = leakSummary.get(key, 0) + int(count)        leakSummaryLines = []        for key in sorted(leakSummary.keys()):            leakSummaryLines.append('%s %s' % (leakSummary[key], key))        self.incorrectLayoutLines += leakSummaryLinesclass UploadLayoutResults(UploadCommand, ShellCommand):    name = "upload-results"    description = ["uploading results"]    descriptionDone = ["uploaded-results"]    command = "echo Disabled for now"    def __init__(self, *args, **kwargs):        ShellCommand.__init__(self, *args, **kwargs)    def setBuild(self, build):        ShellCommand.setBuild(self, build)        self.initializeForUpload()        self.command = '''        if [[ -d layout-test-results ]]; then \            find layout-test-results -type d -print0 | xargs -0 chmod ug+rx; \            find layout-test-results -type f -print0 | xargs -0 chmod ug+r; \            rsync -rlvzP --rsync-path=/home/buildresults/bin/rsync layout-test-results/ %s && rm -rf layout-test-results; \        fi; \        CRASH_LOG=~/Library/Logs/CrashReporter/DumpRenderTree*.crash*; \        if [[ -f $(ls -1 $CRASH_LOG | head -n 1 ) ]]; then \            chmod ug+r $CRASH_LOG; \            rsync -rlvzP --rsync-path=/home/buildresults/bin/rsync $CRASH_LOG %s && rm -rf $CRASH_LOG; \        fi; ''' % (self.getRemotePath(), self.getRemotePath())        self.addFactoryArguments(command=self.command)class CompileWebKit(Compile):    command = ["perl", "./WebKitTools/Scripts/build-webkit"]    env = {'WEBKITSUPPORTLIBRARIESZIPDIR': 'C:\\cygwin\\home\\buildbot', 'MFLAGS':''}    def __init__(self, *args, **kwargs):        configuration = kwargs.pop('configuration')                self.name = "compile-" + configuration        self.description = ["compiling " + configuration]        self.descriptionDone = ["compiled " + configuration]        Compile.__init__(self, env=self.env, *args, **kwargs)class CleanWebKit(CompileWebKit):    command = CompileWebKit.command + ['--clean']    description = ['cleaning']    descriptionDone = ['cleaned']class CompileWebKitNoSVG(CompileWebKit):    command = 'rm -rf WebKitBuild && perl ./WebKitTools/Scripts/build-webkit --no-svg'class CompileWebKitGtk(CompileWebKit):    command = ['perl', './WebKitTools/Scripts/build-webkit', '--gtk', '--qmake=qmake-qt4']class CleanWebKitGtk(CompileWebKitGtk):    command = CompileWebKitGtk.command + ['--clean']    description = ['cleaning']    descriptionDone = ['cleaned']class CompileWebKitWx(CompileWebKit):    command = ['perl', './WebKitTools/Scripts/build-webkit', '--wx']class CleanWebKitWx(CompileWebKitWx):    command = CompileWebKitWx.command + ['--clean']    description = ['cleaning']    descriptionDone = ['cleaned']class CompileWebKitWindows(UploadCommand, CompileWebKit):    def setBuild(self, build):        CompileWebKit.setBuild(self, build)        self.initializeForUpload()        self.command = '''\        ./WebKitTools/Scripts/build-webkit; \        RESULT=$?        for log in $(find WebKitBuild/*/*/*/*.htm); do \            chmod ug+r $log; \            REMOTE_NAME=$(echo $log | sed -e 's|WebKitBuild/obj/||' -e 's|/Release/|-|' -e 's|/Debug/|-|'); \            rsync -rlvzP --rsync-path="/home/buildresults/bin/rsync" $log %s/$REMOTE_NAME && rm $log; \        done; \        exit $RESULT;''' % (self.getRemotePath(), )        self.addFactoryArguments(command=self.command)class LayoutTestWindows(LayoutTest):    env = {'WEBKIT_TESTFONTS': 'C:\\cygwin\\home\\buildbot\\WebKitTestFonts'}    def __init__(self, *args, **kwargs):        return LayoutTest.__init__(self, env=self.env, *args, **kwargs)class JavaScriptCoreTestGtk(JavaScriptCoreTest):    command = JavaScriptCoreTest.command + ['--gtk']class JavaScriptCoreTestWx(JavaScriptCoreTest):    command = JavaScriptCoreTest.command + ['--wx']class LayoutTestQt(LayoutTest):    command  = LayoutTest.command + ['--qt']class InstallWin32Dependencies(ShellCommand):    description = ["installing Windows dependencies"]    descriptionDone = ["installed Windows dependencies"]    command = ["perl", "./WebKitTools/Scripts/update-webkit-auxiliary-libs"]# class UploadDiskImage(UploadCommand, ShellCommand):#     description = ["uploading disk image"]#     descriptionDone = ["uploaded disk image"]#     name = "upload-disk-image"#     def __init__(self, *args, **kwargs):#         UploadCommand.__init__(self, *args, **kwargs)#         self.command = 'umask 002 && ./WebKitTools/BuildSlaveSupport/build-launcher-app && ./WebKitTools/BuildSlaveSupport/build-launcher-dmg --upload-to-host %s' % (self.getRemotePath(), )#         ShellCommand.__init__(self, *args, **kwargs)class GenerateCoverageData(Compile):    command = ["perl", "./WebKitTools/Scripts/generate-coverage-data"]    description = ["generating coverage data"]    descriptionDone = ["generated coverage data"]class UploadCoverageData(UploadCommand, ShellCommand):    name = "upload-coverage-data"    description = ["uploading coverage data"]    descriptionDone = ["uploaded-coverage-data"]    command = "echo Disabled for now"    def __init__(self, *args, **kwargs):        ShellCommand.__init__(self, *args, **kwargs)    def setBuild(self, build):        ShellCommand.setBuild(self, build)        self.initializeForUpload()                self.command = '''\        if [[ -d WebKitBuild/Coverage/html ]]; then \            find WebKitBuild/Coverage/html -type d -print0 | xargs -0 chmod ug+rx; \            find WebKitBuild/Coverage/html -type f -print0 | xargs -0 chmod ug+r; \            rsync -rlvzP --rsync-path="/home/buildresults/bin/rsync" WebKitBuild/Coverage/html/ %s && rm -rf WebKitBuild/Coverage/html; \        fi;''' % (self.getRemotePath(), )        self.addFactoryArguments(command=self.command)    def getURLPath(self):        return "/results/code-coverage/"

⌨️ 快捷键说明

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