Exemplo n.º 1
0
    def get_bz_params(self, date):
        status = utils.get_flag(self.version, 'status', self.channel)
        self.tracking = utils.get_flag(self.version, 'tracking', self.channel)
        fields = ['assigned_to', 'flags', self.tracking]
        params = {
            'include_fields': fields,
            'resolution': '---',
            'bug_status':
            ','.join(['UNCONFIRMED', 'NEW', 'ASSIGNED', 'REOPENED']),
            'f1': self.tracking,
            'o1': 'anywords',
            'v1': ','.join(['+', '?', 'blocking']),
            'f2': 'flagtypes.name',
            'o2': 'equals',
            'v2': 'needinfo?',
            'f3': status,
            'o3': 'equals',
            'v3': 'affected',
            'f4': self.tracking,
            'o4': 'changedbefore',
            'v4': '-1d',
            'n5': 1,
            'f5': self.tracking,
            'o5': 'changedafter',
            'v5': '-1d',
        }

        return params
Exemplo n.º 2
0
 def get_bz_params(self, date):
     esr_version = self.versions["esr"]
     value = ",".join(["---", "affected"])
     params = {
         "resolution": [
             "---",
             "FIXED",
             "INVALID",
             "WONTFIX",
             "DUPLICATE",
             "WORKSFORME",
             "INCOMPLETE",
             "SUPPORT",
             "EXPIRED",
             "MOVED",
         ],
         "priority": ["P3", "P4", "P5"],
         "f1":
         utils.get_flag(esr_version, "tracking", "esr"),
         "o1":
         "anyexact",
         "v1":
         ",".join(["+", "blocking"]),
         "f2":
         utils.get_flag(esr_version, "status", "esr"),
         "o2":
         "anyexact",
         "v2":
         value,
     }
     return params
    def get_bz_params(self, date):
        status = utils.get_flag(self.version, 'status', self.channel)
        self.tracking = utils.get_flag(self.version, 'tracking', self.channel)
        fields = ['assigned_to', 'flags', self.tracking]
        params = {
            'include_fields': fields,
            'resolution': '---',
            'bug_status': ','.join(['UNCONFIRMED', 'NEW', 'ASSIGNED', 'REOPENED']),
            'f1': self.tracking,
            'o1': 'anywords',
            'v1': ','.join(['+', '?', 'blocking']),
            'f2': 'flagtypes.name',
            'o2': 'equals',
            'v2': 'needinfo?',
            'f3': status,
            'o3': 'equals',
            'v3': 'affected',
            'f4': self.tracking,
            'o4': 'changedbefore',
            'v4': '-1d',
            'n5': 1,
            'f5': self.tracking,
            'o5': 'changedafter',
            'v5': '-1d',
        }

        return params
 def get_bz_params(self, date):
     _, _, _, esr_version = getVersions()
     value = ','.join(['---', 'affected'])
     params = {
         'resolution': [
             '---',
             'FIXED',
             'INVALID',
             'WONTFIX',
             'DUPLICATE',
             'WORKSFORME',
             'INCOMPLETE',
             'SUPPORT',
             'EXPIRED',
             'MOVED',
         ],
         'priority': ['P3', 'P4', 'P5'],
         'f1':
         utils.get_flag(esr_version, 'tracking', 'esr'),
         'o1':
         'anyexact',
         'v1':
         ','.join(['+', 'blocking']),
         'f2':
         utils.get_flag(esr_version, 'status', 'esr'),
         'o2':
         'anyexact',
         'v2':
         value,
     }
     return params
Exemplo n.º 5
0
    def get_bz_params(self, date):
        status = utils.get_flag(self.version, "status", self.channel)
        self.tracking = utils.get_flag(self.version, "tracking", self.channel)
        fields = ["assigned_to", "flags", self.tracking]
        params = {
            "include_fields": fields,
            "resolution": "---",
            "bug_status":
            ",".join(["UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED"]),
            "f1": self.tracking,
            "o1": "anywords",
            "v1": ",".join(["+", "?", "blocking"]),
            "f2": "flagtypes.name",
            "o2": "equals",
            "v2": "needinfo?",
            "f3": status,
            "o3": "equals",
            "v3": "affected",
            "f4": self.tracking,
            "o4": "changedbefore",
            "v4": "-1d",
            "n5": 1,
            "f5": self.tracking,
            "o5": "changedafter",
            "v5": "-1d",
        }

        return params
    def get_bz_params(self, date):
        # TODO add support for ESR here?
        value = ",".join(["affected", "fixed"])
        params = {
            "bug_severity": ["normal", "minor", "trivial", "enhancement"],
            "f1": "OP",
            "j1": "OR",
            "f2": "OP",
            "f3": utils.get_flag(self.versions["release"], "tracking", "release"),
            "o3": "equals",
            "v3": "blocking",
            "f4": self.status_release,
            "o4": "anyexact",
            "v4": value,
            "f5": "CP",
            "f6": "OP",
            "f7": utils.get_flag(self.versions["beta"], "tracking", "beta"),
            "o7": "equals",
            "v7": "blocking",
            "f8": utils.get_flag(self.versions["beta"], "status", "beta"),
            "o8": "anyexact",
            "v8": value,
            "f9": "CP",
            "f10": "OP",
            "f11": utils.get_flag(self.versions["central"], "tracking", "central"),
            "o11": "equals",
            "v11": "blocking",
            "f12": utils.get_flag(self.versions["central"], "status", "central"),
            "o12": "anyexact",
            "v12": value,
            "f13": "CP",
            "f14": "CP",
        }

        return params
Exemplo n.º 7
0
    def get_bz_params(self, date):
        status = utils.get_flag(self.version, 'status', self.channel)
        self.tracking = utils.get_flag(self.version, 'tracking', self.channel)
        fields = [self.tracking]
        params = {
            'include_fields':
            fields,
            'bug_id':
            ','.join(self.bug_ids),
            'f1':
            status,
            'o1':
            'nowordssubstr',
            'v1':
            ','.join(
                ['unaffected', 'fixed', 'verified', 'wontfix', 'disabled']),
            'f2':
            self.tracking,
            'o2':
            'anywordssubstr',
            'v2':
            ','.join(['+', 'blocking']),
        }

        return params
 def get_bz_params(self, date):
     _, _, _, esr_version = getVersions()
     value = ','.join(['---', 'affected'])
     params = {
         'resolution': [
             '---',
             'FIXED',
             'INVALID',
             'WONTFIX',
             'DUPLICATE',
             'WORKSFORME',
             'INCOMPLETE',
             'SUPPORT',
             'EXPIRED',
             'MOVED',
         ],
         'priority': ['P3', 'P4', 'P5'],
         'f1': utils.get_flag(esr_version, 'tracking', 'esr'),
         'o1': 'anyexact',
         'v1': ','.join(['+', 'blocking']),
         'f2': utils.get_flag(esr_version, 'status', 'esr'),
         'o2': 'anyexact',
         'v2': value,
     }
     return params
Exemplo n.º 9
0
    def __init__(self):
        super(MissedUplifts, self).__init__()
        self.versions = utils.get_checked_versions()
        if not self.versions:
            return

        self.beta = self.versions['beta']
        self.release = self.versions['release']
        self.esr = self.versions['esr']
        self.esr_str = 'esr' + str(self.esr)

        self.pending_release = utils.get_report_bugs('release', op='?')
        self.pending_beta = utils.get_report_bugs('beta', op='?')
        self.pending_esr = utils.get_report_bugs(self.esr_str, op='?')

        self.accepted_release = utils.get_report_bugs('release', op='+')
        self.accepted_beta = utils.get_report_bugs('beta', op='+')
        self.accepted_esr = utils.get_report_bugs(self.esr_str, op='+')

        self.status_central = utils.get_flag(
            self.versions['central'], 'status', 'central'
        )
        self.status_beta = utils.get_flag(self.beta, 'status', 'beta')
        self.status_release = utils.get_flag(self.release, 'status', 'release')
        self.status_esr = utils.get_flag(self.esr, 'status', 'esr')
Exemplo n.º 10
0
 def __init__(self):
     super().__init__()
     self.init_versions()
     self.status_esr = utils.get_flag(self.versions["esr_previous"],
                                      "status", "esr")
     self.status_esr_next = utils.get_flag(self.versions["esr"], "status",
                                           "esr")
     self.status_changes = {}
Exemplo n.º 11
0
    def get_bz_params(self, date):
        status = utils.get_flag(self.version, "status", self.channel)
        self.tracking = utils.get_flag(self.version, "tracking", self.channel)
        tracking_value = ("+,blocking" if self.channel != "esr" else
                          self.versions["beta"] + "+")
        fields = [self.tracking]
        params = {
            "include_fields":
            fields,
            "f1":
            self.tracking,
            "o1":
            "anywords",
            "v1":
            tracking_value,
            "f2":
            status,
            "o2":
            "nowordssubstr",
            "v2":
            ",".join(
                ["wontfix", "fixed", "disabled", "verified", "unaffected"]),
            "f3":
            self.tracking,
            "o3":
            "changedbefore",
            "v3":
            "-1d",
            "n4":
            1,
            "f4":
            self.tracking,
            "o4":
            "changedafter",
            "v4":
            "-1d",
        }

        if self.channel == "central":
            tracking = utils.get_flag(self.versions["beta"], "tracking",
                                      "beta")
            params.update({
                "f5": tracking,
                "o5": "nowordssubstr",
                "v5": "+,blocking"
            })
        elif self.channel != "esr":
            approval = utils.get_flag(self.version, "approval", self.channel)
            params.update({
                "f5": "flagtypes.name",
                "o5": "notsubstring",
                "v5": approval + "?"
            })

        if self.untouched:
            params.update({"f6": "days_elapsed", "o6": "greaterthan", "v6": 3})

        return params
Exemplo n.º 12
0
 def __init__(self):
     super().__init__()
     self.init_versions()
     self.status_esr = utils.get_flag(self.versions["esr_previous"],
                                      "status", "esr")
     self.status_esr_next = utils.get_flag(self.versions["esr"], "status",
                                           "esr")
     self.status_changes = {}
     self.component_exception = set(
         utils.get_config(self.name(), "component_exception"))
Exemplo n.º 13
0
    def __init__(self):
        super(NightlyReopened, self).__init__()
        self.versions = utils.get_checked_versions()
        if not self.versions:
            return

        self.nightly = utils.get_flag(self.versions['central'], 'status', 'nightly')
        self.beta = utils.get_flag(self.versions['beta'], 'status', 'beta')
        self.release = utils.get_flag(self.versions['release'], 'status', 'release')
        self.esr = utils.get_flag(self.versions['esr'], 'status', 'esr')
Exemplo n.º 14
0
    def __init__(self):
        super(UpliftBeta, self).__init__()
        if not self.init_versions():
            return

        self.beta = self.versions["beta"]
        self.status_central = utils.get_flag(self.versions["central"],
                                             "status", "central")
        self.status_beta = utils.get_flag(self.beta, "status", "beta")
        self.extra_ni = {}
Exemplo n.º 15
0
    def __init__(self):
        super(NightlyReopened, self).__init__()
        if not self.init_versions():
            return

        self.nightly = utils.get_flag(self.versions["central"], "status",
                                      "nightly")
        self.beta = utils.get_flag(self.versions["beta"], "status", "beta")
        self.release = utils.get_flag(self.versions["release"], "status",
                                      "release")
        self.esr = utils.get_flag(self.versions["esr"], "status", "esr")
    def __init__(self):
        super(NightlyReopened, self).__init__()
        self.versions = utils.get_checked_versions()
        if not self.versions:
            return

        self.nightly = utils.get_flag(self.versions['central'], 'status',
                                      'nightly')
        self.beta = utils.get_flag(self.versions['beta'], 'status', 'beta')
        self.release = utils.get_flag(self.versions['release'], 'status',
                                      'release')
        self.esr = utils.get_flag(self.versions['esr'], 'status', 'esr')
Exemplo n.º 17
0
    def __init__(self):
        super(MissingBetaStatus, self).__init__()
        self.autofix_status = {}
        if not self.init_versions():
            return

        self.status_central = utils.get_flag(
            self.versions["central"], "status", "nightly"
        )
        self.status_beta = utils.get_flag(self.versions["beta"], "status", "beta")
        self.status_release = utils.get_flag(
            self.versions["release"], "status", "release"
        )
Exemplo n.º 18
0
 def __init__(self):
     super(NiFromManager, self).__init__()
     self.nweeks = utils.get_config(self.name(), "number_of_weeks", 1)
     self.vip = self.get_people().get_rm_or_directors()
     self.white_list = utils.get_config(self.name(), "white-list", [])
     self.black_list = utils.get_config(self.name(), "black-list", [])
     self.init_versions()
     self.status_flags = (
         utils.get_flag(self.versions["central"], "status", "central"),
         utils.get_flag(self.versions["beta"], "status", "beta"),
         utils.get_flag(self.versions["release"], "status", "release"),
         utils.get_flag(self.versions["esr_previous"], "status", "esr"),
         utils.get_flag(self.versions["esr"], "status", "esr"),
     )
Exemplo n.º 19
0
    def get_bz_params(self, date):
        status = utils.get_flag(self.version, 'status', self.channel)
        self.tracking = utils.get_flag(self.version, 'tracking', self.channel)
        fields = [self.tracking]
        params = {
            'include_fields': fields,
            'bug_id': ','.join(self.bug_ids),
            'f1': status,
            'o1': 'nowordssubstr',
            'v1': ','.join(['unaffected', 'fixed', 'verified', 'wontfix', 'disabled']),
            'f2': self.tracking,
            'o2': 'anywordssubstr',
            'v2': ','.join(['+', 'blocking']),
        }

        return params
Exemplo n.º 20
0
    def get_bz_params(self, date):
        status = utils.get_flag(self.version, "status", self.channel)
        self.tracking = utils.get_flag(self.version, "tracking", self.channel)
        fields = [self.tracking]
        params = {
            "include_fields": fields,
            "bug_id": ",".join(self.bug_ids),
            "f1": status,
            "o1": "nowordssubstr",
            "v1": ",".join(["unaffected", "fixed", "verified", "wontfix", "disabled"]),
            "f2": self.tracking,
            "o2": "anywordssubstr",
            "v2": ",".join(["+", "blocking"]),
        }

        return params
Exemplo n.º 21
0
    def __init__(self):
        super(TrackedBadSeverity, self).__init__()
        if not self.init_versions():
            return

        self.status_release = utils.get_flag(
            self.versions["release"], "status", "release"
        )
    def get_bz_params(self, date):
        v = self.versions[self.channel]
        status = utils.get_flag(v, 'status', self.channel)
        self.tracking = utils.get_flag(v, 'tracking', self.channel)
        tracking_value = ('+,blocking' if self.channel != 'esr' else
                          self.versions['beta'] + '+')
        fields = [self.tracking]
        params = {
            'include_fields':
            fields,
            'f1':
            self.tracking,
            'o1':
            'anywords',
            'v1':
            tracking_value,
            'f2':
            status,
            'o2':
            'nowordssubstr',
            'v2':
            ','.join(
                ['wontfix', 'fixed', 'disabled', 'verified', 'unaffected']),
        }

        if self.channel == 'central':
            tracking = utils.get_flag(self.versions['beta'], 'tracking',
                                      'beta')
            params.update({
                'f3': tracking,
                'o3': 'nowordssubstr',
                'v3': '+,blocking'
            })
        elif self.channel != 'esr':
            approval = utils.get_flag(v, 'approval', self.channel)
            params.update({
                'f3': 'flagtypes.name',
                'o3': 'notsubstring',
                'v3': approval + '?'
            })

        if self.untouched:
            params.update({'f4': 'days_elapsed', 'o4': 'greaterthan', 'v4': 3})

        return params
    def get_bz_params(self, date):
        status = utils.get_flag(self.version, 'status', self.channel)
        self.tracking = utils.get_flag(self.version, 'tracking', self.channel)
        fields = ['assigned_to', 'flags', self.tracking]
        params = {
            'include_fields': fields,
            'resolution': '---',
            'bug_status': ','.join(['UNCONFIRMED', 'NEW', 'ASSIGNED', 'REOPENED']),
            'f1': self.tracking,
            'o1': 'anywords',
            'v1': ','.join(['+', '?', 'blocking']),
            'f2': 'flagtypes.name',
            'o2': 'equals',
            'v2': 'needinfo?',
            'f3': status,
            'o3': 'nowordssubstr',
            'v3': ','.join(['wontfix', 'fixed', 'disabled', 'verified', 'unaffected']),
        }

        return params
    def get_bz_params(self, date):
        # TODO add support for ESR here?
        value = ','.join(['affected', 'fixed'])
        params = {
            'bug_severity': ['normal', 'minor', 'trivial', 'enhancement'],
            'f1': 'OP',
            'j1': 'OR',
            'f2': 'OP',
            'f3': utils.get_flag(self.versions['release'], 'tracking', 'release'),
            'o3': 'equals',
            'v3': 'blocking',
            'f4': utils.get_flag(self.versions['release'], 'status', 'release'),
            'o4': 'anyexact',
            'v4': value,
            'f5': 'CP',
            'f6': 'OP',
            'f7': utils.get_flag(self.versions['beta'], 'tracking', 'beta'),
            'o7': 'equals',
            'v7': 'blocking',
            'f8': utils.get_flag(self.versions['beta'], 'status', 'beta'),
            'o8': 'anyexact',
            'v8': value,
            'f9': 'CP',
            'f10': 'OP',
            'f11': utils.get_flag(self.versions['central'], 'tracking', 'central'),
            'o11': 'equals',
            'v11': 'blocking',
            'f12': utils.get_flag(self.versions['central'], 'status', 'central'),
            'o12': 'anyexact',
            'v12': value,
            'f13': 'CP',
            'f14': 'CP',
        }

        return params
    def get_bz_params(self, date):
        self.status_central = utils.get_flag(self.versions['central'],
                                             'status', 'central')
        self.status_release = utils.get_flag(self.versions['release'],
                                             'status', 'release')
        self.status_beta = utils.get_flag(self.versions['beta'], 'status',
                                          'beta')
        fields = [self.status_central, self.status_release]
        params = {
            'include_fields': fields,
            'f1': self.status_beta,
            'o1': 'equals',
            'v1': '---',
            'f2': self.status_release,
            'o2': 'notequals',
            'v2': '---',
            'f3': self.status_central,
            'o3': 'notequals',
            'v3': '---',
        }

        return params
Exemplo n.º 26
0
    def get_bz_params(self, date):
        v = self.versions[self.channel]
        status = utils.get_flag(v, 'status', self.channel)
        self.tracking = utils.get_flag(v, 'tracking', self.channel)
        tracking_value = (
            '+,blocking' if self.channel != 'esr' else self.versions['beta'] + '+'
        )
        fields = [self.tracking]
        params = {
            'include_fields': fields,
            'f1': self.tracking,
            'o1': 'anywords',
            'v1': tracking_value,
            'f2': status,
            'o2': 'nowordssubstr',
            'v2': ','.join(['wontfix', 'fixed', 'disabled', 'verified', 'unaffected']),
            'f3': self.tracking,
            'o3': 'changedbefore',
            'v3': '-1d',
            'n4': 1,
            'f4': self.tracking,
            'o4': 'changedafter',
            'v4': '-1d',
        }

        if self.channel == 'central':
            tracking = utils.get_flag(self.versions['beta'], 'tracking', 'beta')
            params.update({'f5': tracking, 'o5': 'nowordssubstr', 'v5': '+,blocking'})
        elif self.channel != 'esr':
            approval = utils.get_flag(v, 'approval', self.channel)
            params.update(
                {'f5': 'flagtypes.name', 'o5': 'notsubstring', 'v5': approval + '?'}
            )

        if self.untouched:
            params.update({'f6': 'days_elapsed', 'o6': 'greaterthan', 'v6': 3})

        return params
Exemplo n.º 27
0
    def test_get_bz_params(self):
        tool = TrackedBadSeverity()
        if not tool.has_enough_data():
            # we've non-following versions in product-details
            # so cheat on versions.
            tool.versions = {"central": 1, "beta": 2, "release": 3}
            tool.status_release = utils.get_flag(
                tool.versions["release"], "status", "release"
            )

        p = tool.get_bz_params(None)
        assert p["f1"] == "OP"
        assert "cf_tracking_firefox" in p["f3"]
        assert "enhancement" in p["bug_severity"]
Exemplo n.º 28
0
    def get_bz_params(self, date):
        self.status_central = utils.get_flag(
            self.versions['central'], 'status', 'central'
        )
        self.status_release = utils.get_flag(
            self.versions['release'], 'status', 'release'
        )
        self.status_beta = utils.get_flag(self.versions['beta'], 'status', 'beta')
        fields = [self.status_central, self.status_release]
        params = {
            'include_fields': fields,
            'f1': self.status_beta,
            'o1': 'equals',
            'v1': '---',
            'f2': self.status_release,
            'o2': 'notequals',
            'v2': '---',
            'f3': self.status_central,
            'o3': 'notequals',
            'v3': '---',
        }

        return params
Exemplo n.º 29
0
    def __init__(self):
        super(MissedUplifts, self).__init__()
        if not self.init_versions():
            return

        self.beta = self.versions["beta"]
        self.release = self.versions["release"]
        self.esr = self.versions["esr"]
        self.esr_str = "esr" + str(self.esr)

        self.pending_release = utils.get_report_bugs("release", op="?")
        self.pending_beta = utils.get_report_bugs("beta", op="?")
        self.pending_esr = utils.get_report_bugs(self.esr_str, op="?")

        self.accepted_release = utils.get_report_bugs("release", op="+")
        self.accepted_beta = utils.get_report_bugs("beta", op="+")
        self.accepted_esr = utils.get_report_bugs(self.esr_str, op="+")

        self.status_central = utils.get_flag(
            self.versions["central"], "status", "central"
        )
        self.status_beta = utils.get_flag(self.beta, "status", "beta")
        self.status_release = utils.get_flag(self.release, "status", "release")
        self.status_esr = utils.get_flag(self.esr, "status", "esr")
    def __init__(self):
        super(MissedUplifts, self).__init__()
        self.versions = utils.get_checked_versions()
        if not self.versions:
            return

        self.beta = self.versions['beta']
        self.release = self.versions['release']
        self.esr = self.versions['esr']
        self.esr_str = 'esr' + str(self.esr)

        self.pending_release = utils.get_report_bugs('release', op='?')
        self.pending_beta = utils.get_report_bugs('beta', op='?')
        self.pending_esr = utils.get_report_bugs(self.esr_str, op='?')

        self.accepted_release = utils.get_report_bugs('release', op='+')
        self.accepted_beta = utils.get_report_bugs('beta', op='+')
        self.accepted_esr = utils.get_report_bugs(self.esr_str, op='+')

        self.status_central = utils.get_flag(self.versions['central'],
                                             'status', 'central')
        self.status_beta = utils.get_flag(self.beta, 'status', 'beta')
        self.status_release = utils.get_flag(self.release, 'status', 'release')
        self.status_esr = utils.get_flag(self.esr, 'status', 'esr')
Exemplo n.º 31
0
    def __init__(self):
        super(CodeFreezeWeek, self).__init__()
        self.versions = utils.get_checked_versions()
        if not self.versions:
            return

        self.people = People()
        self.nightly = self.versions['central']
        self.beta = self.versions['beta']
        self.release = self.versions['release']
        self.status_nightly = utils.get_flag(self.nightly, 'status', 'central')
        self.status_beta = utils.get_flag(self.beta, 'status', 'beta')
        self.status_release = utils.get_flag(self.release, 'status', 'release')
        self.tracking_nightly = utils.get_flag(self.nightly, 'tracking', 'central')
        self.tracking_beta = utils.get_flag(self.beta, 'tracking', 'beta')
        self.tracking_release = utils.get_flag(self.release, 'tracking', 'release')
Exemplo n.º 32
0
    def __init__(self):
        super(CodeFreezeWeek, self).__init__()
        if not self.init_versions():
            return

        self.people = People.get_instance()
        self.nightly = self.versions["central"]
        self.beta = self.versions["beta"]
        self.release = self.versions["release"]
        self.status_nightly = utils.get_flag(self.nightly, "status", "central")
        self.status_beta = utils.get_flag(self.beta, "status", "beta")
        self.status_release = utils.get_flag(self.release, "status", "release")
        self.tracking_nightly = utils.get_flag(self.nightly, "tracking",
                                               "central")
        self.tracking_beta = utils.get_flag(self.beta, "tracking", "beta")
        self.tracking_release = utils.get_flag(self.release, "tracking",
                                               "release")
Exemplo n.º 33
0
    def __init__(self):
        super(CodeFreezeWeek, self).__init__()
        self.versions = utils.get_checked_versions()
        if not self.versions:
            return

        self.people = People()
        self.nightly = self.versions['central']
        self.beta = self.versions['beta']
        self.release = self.versions['release']
        self.status_nightly = utils.get_flag(self.nightly, 'status', 'central')
        self.status_beta = utils.get_flag(self.beta, 'status', 'beta')
        self.status_release = utils.get_flag(self.release, 'status', 'release')
        self.tracking_nightly = utils.get_flag(self.nightly, 'tracking',
                                               'central')
        self.tracking_beta = utils.get_flag(self.beta, 'tracking', 'beta')
        self.tracking_release = utils.get_flag(self.release, 'tracking',
                                               'release')
Exemplo n.º 34
0
    def get_status_changes(self, bugs):
        bugids = {info["regressed_by"] for info in bugs.values()}
        if not bugids:
            return {}

        data = self.get_flags_from_regressing_bugs(bugids)

        filtered_bugs = {}
        for bugid, info in bugs.items():
            regressor = info["regressed_by"]
            assert regressor in data
            regression_versions = sorted(
                v for v in data[regressor] if v.startswith("cf_status_firefox")
                and data[regressor][v] in ("fixed", "verified"))
            if not regression_versions:
                # don't know what to do, ignore
                continue
            if regression_versions[0].startswith("cf_status_firefox_esr"):
                # shouldn't happen: esrXX sorts after YY
                continue
            regressed_version = int(
                regression_versions[0][len("cf_status_firefox"):])

            fixed_versions = sorted(
                v for v in info
                if v.startswith("cf_status_firefox") and info[v] in (
                    "fixed", "verified"))
            if len(fixed_versions) > 0 and fixed_versions[0].startswith(
                    "cf_status_firefox_esr"):
                # shouldn't happen: esrXX sorts after YY
                continue
            fixed_version = (int(fixed_versions[0][len("cf_status_firefox"):])
                             if len(fixed_versions) > 0 else None)

            self.status_changes[bugid] = {}
            for channel in ("release", "beta", "central"):
                v = int(self.versions[channel])
                flag = utils.get_flag(v, "status", channel)
                info[channel] = info[flag]
                if info[flag] != "---":
                    # XXX maybe check for consistency?
                    continue
                if fixed_version is not None and v >= fixed_version:
                    # Bug was fixed in an earlier version, don't set the flag
                    continue
                if v >= regressed_version:
                    self.status_changes[bugid][flag] = "affected"
                    info[channel] = "affected"
                else:
                    self.status_changes[bugid][flag] = "unaffected"
                    info[channel] = "unaffected"
                filtered_bugs[bugid] = info

            esr_versions = set(
                [self.versions["esr"], self.versions["esr_previous"]])
            for v in esr_versions:
                info.setdefault("esr", {})
                flag = utils.get_flag(v, "status", "esr")
                info["esr"][f"esr{v}"] = info[flag]
                if info[flag] != "---":
                    # XXX maybe check for consistency?
                    continue
                if fixed_version is not None and int(v) >= fixed_version:
                    # Bug was fixed in an earlier version, don't set the flag
                    continue
                if data[regressor].get(flag) in ("fixed", "verified"):
                    # regressor was uplifted, so the regression affects this branch
                    self.status_changes[bugid][flag] = "affected"
                    info["esr"][f"esr{v}"] = "affected"
                elif int(v) >= regressed_version:
                    # regression from before this branch, also affected
                    self.status_changes[bugid][flag] = "affected"
                    info["esr"][f"esr{v}"] = "affected"
                else:
                    self.status_changes[bugid][flag] = "unaffected"
                    info["esr"][f"esr{v}"] = "unaffected"
                filtered_bugs[bugid] = info

        for bugid in filtered_bugs:
            regressor = bugs[bugid]["regressed_by"]
            self.status_changes[bugid]["comment"] = {
                "body": f"{self.description()} {regressor}",
                # if the regressing bug is private (security or otherwise
                # confidential), don't leak its number through our comment (the
                # regressed_by field is not public in that case)
                "is_private": bool(data[regressor].get("groups")),
            }

        return filtered_bugs