Пример #1
0
    def cycle_check(self, override_pair, overridden_pair, arch):
        if self.cycle_check_skip(override_pair[0]):
            self.logger.info(
                'cycle check: skip due to --skip-cycle or comment command')
            return CheckResult(True, None)

        self.logger.info('cycle check: start')
        comment = []
        first = True
        cycle_detector = CycleDetector(self.staging_api(overridden_pair[0]))
        for index, (cycle, new_edges, new_packages) in enumerate(
                cycle_detector.cycles(override_pair, overridden_pair, arch),
                start=1):

            if not new_packages:
                continue

            if first:
                comment.append(
                    '### new [cycle(s)](/project/repository_state/{}/{})\n'.
                    format(override_pair[0], override_pair[1]))
                first = False

            # New package involved in cycle, build comment.
            comment.append('- #{}: {} package cycle, {} new edges'.format(
                index, len(cycle), len(new_edges)))

            comment.append('   - cycle')
            for package in sorted(cycle):
                comment.append('      - {}'.format(package))

            comment.append('   - new edges')
            for edge in sorted(new_edges):
                comment.append('      - ({}, {})'.format(edge[0], edge[1]))

        if len(comment):
            # New cycles, post comment.
            self.logger.info('cycle check: failed')
            return CheckResult(False, '\n'.join(comment) + '\n')

        self.logger.info('cycle check: passed')
        return CheckResult(True, None)
    def cycle_check(self, override_pair, overridden_pair, arch):
        if self.cycle_check_skip(override_pair[0]):
            self.logger.info('cycle check: skip due to --skip-cycle or comment command')
            return CheckResult(True, None)

        self.logger.info('cycle check: start')
        comment = []
        first = True
        cycle_detector = CycleDetector(self.apiurl)
        for index, (cycle, new_edges, new_packages) in enumerate(
            cycle_detector.cycles(override_pair, overridden_pair, arch), start=1):

            if not new_packages:
                continue

            if first:
                comment.append('### new [cycle(s)](/project/repository_state/{}/{})\n'.format(
                    override_pair[0], override_pair[1]))
                first = False

            # New package involved in cycle, build comment.
            comment.append('- #{}: {} package cycle, {} new edges'.format(
                index, len(cycle), len(new_edges)))

            comment.append('   - cycle')
            for package in sorted(cycle):
                comment.append('      - {}'.format(package))

            comment.append('   - new edges')
            for edge in sorted(new_edges):
                comment.append('      - ({}, {})'.format(edge[0], edge[1]))

        if len(comment):
            # New cycles, post comment.
            self.logger.info('cycle check: failed')
            return CheckResult(False, '\n'.join(comment) + '\n')

        self.logger.info('cycle check: passed')
        return CheckResult(True, None)