Ejemplo n.º 1
0
    def consumePath(self, path):
        if path and path[0] == "configurations":
            groupPath, remainder = self.popToDash(path[1:])

            if not path:
                return None, path

            configurationName = "/".join(groupPath)

            return self.contextFor(
                ComboContexts.BranchAndFilter(self.branch, configurationName,
                                              self.projectFilter)), remainder

        if path and path[0] == "projects":
            groupPath, remainder = self.popToDash(path[1:])

            if not path:
                return None, path

            projectName = "/".join(groupPath)

            return self.contextFor(
                ComboContexts.BranchAndFilter(self.branch,
                                              self.configurationFilter,
                                              projectName)), remainder

        return None, path
Ejemplo n.º 2
0
    def getSomeObjects(self):
        objects = ["repos", "machines", "deployments"]

        for r in self.database.Repo.lookupAll(isActive=True):
            objects.append(r)
            for b in self.database.Branch.lookupAll(repo=r):
                objects.append(b)

                objects.append(ComboContexts.BranchAndFilter(b, "linux", ""))
                objects.append(
                    ComboContexts.BranchAndFilter(
                        b, "", "test_with_individual_failures_1"))

                for c in self.testManager.commitsToDisplayForBranch(b, 100):
                    objects.append(c)

                    objects.append(
                        ComboContexts.CommitAndFilter(
                            c, "linux", "test_with_individual_failures_1"))
                    objects.append(
                        ComboContexts.CommitAndFilter(
                            c, "", "test_with_individual_failures_1"))

                    for t in self.testManager.allTestsForCommit(c):
                        objects.append(t)

                        for r in self.database.TestRun.lookupAll(test=t):
                            objects.append(r)

        return objects
Ejemplo n.º 3
0
    def getGridRenderer(self, commits):
        projectFilter = self.projectFilter
        configFilter = self.configurationFilter

        def shouldIncludeTest(test):
            if test.testDefinitionSummary.disabled:
                return False
            if self.projectFilter and test.testDefinitionSummary.project != self.projectFilter:
                return False
            if self.configurationFilter and test.testDefinitionSummary.configuration != self.configurationFilter:
                return False
            return True

        projects = set()
        configurations = set()

        for c in commits:
            for t in self.testManager.allTestsForCommit(c):
                if shouldIncludeTest(t):
                    projects.add(t.testDefinitionSummary.project)
                    configurations.add(t.testDefinitionSummary.configuration)

        if not projectFilter and len(projects) == 1:
            projectFilter = list(projects)[0]

        if not configFilter and len(configurations) == 1:
            configFilter = list(configurations)[0]

        if not projectFilter:
            return TestGridRenderer.TestGridRenderer(
                commits, lambda c: [
                    t for t in self.testManager.allTestsForCommit(c)
                    if shouldIncludeTest(t)
                ] if c.data else [], lambda group: self.contextFor(
                    ComboContexts.BranchAndFilter(self.branch, configFilter,
                                                  group)).renderNavbarLink(),
                lambda group, row: self.contextFor(
                    ComboContexts.CommitAndFilter(row, configFilter, group)
                ).urlString(), lambda test: test.testDefinitionSummary.project)

        if not configFilter:
            return TestGridRenderer.TestGridRenderer(
                commits, lambda c: [
                    t for t in self.testManager.allTestsForCommit(c)
                    if shouldIncludeTest(t)
                ] if c.data else [], lambda group: self.contextFor(
                    ComboContexts.BranchAndFilter(
                        self.branch, group, projectFilter)).renderNavbarLink(),
                lambda group, row: self.contextFor(
                    ComboContexts.CommitAndFilter(row, group, projectFilter)
                ).urlString(),
                lambda test: test.testDefinitionSummary.configuration)

        return TestGridRenderer.TestGridRenderer(
            commits, lambda c: [
                t for t in self.testManager.allTestsForCommit(c)
                if shouldIncludeTest(t)
            ] if c.data else [], lambda group: "", lambda group, row: "",
            lambda test: "")
Ejemplo n.º 4
0
 def primaryObject(self):
     if not self.configurationFilter and not self.projectFilter:
         return self.branch
     else:
         return ComboContexts.BranchAndFilter(self.branch,
                                              self.configurationFilter,
                                              self.projectFilter)
Ejemplo n.º 5
0
    def parentContext(self):
        if self.configurationFilter and self.projectFilter:
            return self.contextFor(
                ComboContexts.BranchAndFilter(
                    self.branch, None,
                    self.projectFilter)).withOptions(**self.options)

        if self.configurationFilter or self.projectFilter:
            return self.contextFor(self.branch)
        return self.contextFor(self.branch.repo)
Ejemplo n.º 6
0
    def childContexts(self, currentChild):
        if isinstance(currentChild.primaryObject(), self.database.Commit):
            commit = currentChild.primaryObject()

            children = []

            commitsInBetween = set()
            commitsToCheck = set()
            commitsToCheck.add(self.branch.head)

            while commitsToCheck:
                c = commitsToCheck.pop()

                if c and c not in commitsInBetween:
                    commitsInBetween.add(c)
                    if c.data:
                        for p in c.data.parents:
                            commitsToCheck.add(p)

            #show 10 commits above and below
            return [
                self.contextFor(x) for x in list(
                    reversed(
                        self.testManager.getNCommits(commit, 10, "above",
                                                     commitsInBetween))) +
                [commit] + self.testManager.getNCommits(commit, 10, "below")
            ]

        if isinstance(currentChild.primaryObject(),
                      ComboContexts.BranchAndFilter):
            if currentChild.configurationFilter:
                return [
                    self.contextFor(
                        ComboContexts.BranchAndFilter(
                            branch=self.branch,
                            configurationName=g,
                            projectName=self.projectFilter))
                    for g in sorted(
                        set([
                            t.testDefinitionSummary.configuration for commit in
                            self.testManager.commitsToDisplayForBranch(
                                self.branch, self.maxCommitCount())
                            for t in self.testManager.allTestsForCommit(commit)
                            if t.testDefinitionSummary.project ==
                            self.projectFilter
                        ]))
                ]
            else:
                return [
                    self.contextFor(
                        ComboContexts.BranchAndFilter(branch=self.branch,
                                                      configurationName="",
                                                      projectName=g))
                    for g in sorted(
                        set([
                            t.testDefinitionSummary.project for commit in
                            self.testManager.commitsToDisplayForBranch(
                                self.branch, self.maxCommitCount())
                            for t in self.testManager.allTestsForCommit(commit)
                        ]))
                ]

        else:
            return []