def generateJenkinsChanges(self, pageDir): cacheDir = os.path.join(os.path.dirname(pageDir), "jenkins_changes") bgColour = self.colourFinder.find("changes_header_bg") row = [HTMLgen.TD("Changes", bgcolor=bgColour)] hasData = False prevTag = None for tag in self.tags: allChanges = self.findJenkinsChanges(prevTag, tag, cacheDir) cont = HTMLgen.Container() aborted = False for i, (authorOrMessage, target, bugs) in enumerate(allChanges): if i: cont.append(HTMLgen.BR()) if target: cont.append(HTMLgen.Href(target, authorOrMessage)) else: cont.append(HTMLgen.Font(authorOrMessage, color="red")) aborted = "Aborted" in authorOrMessage for bugText, bugTarget in bugs: cont.append(HTMLgen.Href(bugTarget, bugText)) hasData = True row.append(HTMLgen.TD(cont, bgcolor=bgColour)) if not aborted: prevTag = tag if hasData: return HTMLgen.TR(*row)
def generateTableHead(self, repositoryDirs): head = [HTMLgen.TH("Test")] ciUrl = os.getenv("JENKINS_URL") or os.getenv( "SYSTEM_TEAMFOUNDATIONSERVERURI") runNameDirs = self.getRunNameDirs(repositoryDirs) if ciUrl else [] for tag in self.tags: tagColour = self.findTagColour(tag) linkTarget = getDetailPageName(self.pageVersion, tag) linkText = HTMLgen.Font(getDisplayText(tag), color=tagColour) buildNumber = self.getCiBuildNumber(tag) if ciUrl and buildNumber.isdigit(): runEnv = getEnvironmentFromRunFiles(runNameDirs, tag) container = HTMLgen.Container() tooltip = jenkinschanges.getTimestamp(buildNumber) container.append( HTMLgen.Href(linkTarget, linkText, title=tooltip)) container.append(HTMLgen.BR()) ciTitle, ciTarget = self.getCiLinkData(runEnv, buildNumber) ciText = HTMLgen.Emphasis( HTMLgen.Font("(" + ciTitle + ")", size=1)) container.append(HTMLgen.Href(ciTarget, ciText, title=tooltip)) head.append(HTMLgen.TH(container)) else: head.append(HTMLgen.TH(HTMLgen.Href(linkTarget, linkText))) heading = HTMLgen.TR() heading = heading + head return heading
def generateTableHead(self, repositoryDirs): head = [HTMLgen.TH("Test")] jenkinsUrl = os.getenv("JENKINS_URL") runNameDirs = self.getRunNameDirs(repositoryDirs) if jenkinsUrl else [] for tag in self.tags: tagColour = self.findTagColour(tag) linkTarget = getDetailPageName(self.pageVersion, tag) linkText = HTMLgen.Font(getDisplayText(tag), color=tagColour) buildNumber = self.getJenkinsBuildNumber(tag) if jenkinsUrl and buildNumber.isdigit(): runEnv = getEnvironmentFromRunFiles(runNameDirs, tag) container = HTMLgen.Container() tooltip = jenkinschanges.getTimestamp(buildNumber) container.append( HTMLgen.Href(linkTarget, linkText, title=tooltip)) container.append(HTMLgen.BR()) jobTarget = os.path.join(self.getRunEnv(runEnv, "JENKINS_URL"), "job", self.getRunEnv(runEnv, "JOB_NAME"), buildNumber) jobText = HTMLgen.Emphasis( HTMLgen.Font("(Jenkins " + buildNumber + ")", size=1)) container.append( HTMLgen.Href(jobTarget, jobText, title=tooltip)) head.append(HTMLgen.TH(container)) else: head.append(HTMLgen.TH(HTMLgen.Href(linkTarget, linkText))) heading = HTMLgen.TR() heading = heading + head return heading
def generateTestRows(self, testName, extraVersion, results): bgColour = self.colourFinder.find("row_header_bg") testId = makeTestId(self.version, extraVersion, testName) description = self.descriptionInfo.get(testName, "") container = HTMLgen.Container(HTMLgen.Name(testId), testName) rows = [] testRow = [ HTMLgen.TD(container, bgcolor=bgColour, title=self.escapeForHtml(description)) ] # Don't add empty rows to the table foundData = False bgcol = None for tag in self.tags: cellContent, bgcol, hasData = self.generateTestCell( tag, testName, testId, results) testRow.append(HTMLgen.TD(cellContent, bgcolor=bgcol)) foundData |= hasData if foundData: # We only filter based on the final column self.usedColours.add(bgcol) rows.append(HTMLgen.TR(*testRow)) else: return rows for resourceName in self.resourceNames: foundData = False resourceRow = [ HTMLgen.TD(HTMLgen.Emphasis("(" + resourceName + ")"), align="right") ] for tag in self.tags: cellContent, bgcol, hasData = self.generateTestCell( tag, testName, testId, results, resourceName) resourceRow.append( HTMLgen.TD(HTMLgen.Emphasis(cellContent), bgcolor=bgcol, align="right")) foundData |= hasData if foundData: rows.append(HTMLgen.TR(*resourceRow)) return rows
def generateExtraVersionHeader(self, extraVersion): bgColour = self.colourFinder.find("column_header_bg") extraVersionElement = HTMLgen.Container(HTMLgen.Name(extraVersion), extraVersion) columnHeader = HTMLgen.TH(extraVersionElement, colspan=len(self.tags) + 1, bgcolor=bgColour) return HTMLgen.TR(columnHeader)
def generateSummaries(self, extraVersion=None): bgColour = self.colourFinder.find("column_header_bg") row = [HTMLgen.TD("Summary", bgcolor=bgColour)] for tag in self.tags: categoryHandler = self.categoryHandlers[tag] detailPageName = getDetailPageName(self.pageVersion, tag) summary = categoryHandler.generateHTMLSummary( detailPageName + "#" + self.version, extraVersion) row.append(HTMLgen.TD(summary, bgcolor=bgColour)) return HTMLgen.TR(*row)
def addTable(self, page, resourceNames, categoryHandlers, version, loggedTests, selector, tableHeader, filePath, graphHeading, repositoryDirs): graphDirname, graphFileRef = self.getGraphFileParts(filePath, version) testTable = self.getTestTable(self.getConfigValue, resourceNames, self.descriptionInfo, selector.selectedTags, categoryHandlers, self.pageVersion, version, os.path.join(graphDirname, graphFileRef)) table = testTable.generate(loggedTests, self.pageDir, repositoryDirs) if table: cells = [] if tableHeader: page.append(HTMLgen.HR()) cells.append(self.makeTableHeaderCell(tableHeader)) graphLink = None fullPath = os.path.abspath(os.path.join(graphDirname, graphFileRef)) if testTable.generateGraph(fullPath, graphHeading): graphLink = self.makeImageLink(graphFileRef.replace("\\", "/")) cells.append(HTMLgen.TD(graphLink)) if len(cells): row = HTMLgen.TR(*cells) initialTable = HTMLgen.TableLite(align="center") initialTable.append(row) page.append(initialTable) extraVersions = list(loggedTests.keys())[1:] if len(extraVersions) > 0: page.append(testTable.generateExtraVersionLinks(extraVersions)) page.append(table) return True, graphLink, testTable.usedColours else: return False, None, []