gecko-dev/python/mozrelease/test/test_buglist_creator.py

137 строки
4.6 KiB
Python

# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from __future__ import absolute_import, print_function
import json
from pathlib2 import Path
import mozunit
import pytest
from mozilla_version.gecko import GeckoVersion
from mozrelease.buglist_creator import (
is_excluded_change, create_bugs_url, is_backout_bug, get_previous_tag_version,
get_bugs_in_changeset, tag_version, parse_tag_version,
)
DATA_PATH = Path(__file__).with_name("data")
def test_beta_1_release():
buglist_str_54_0b1 = create_bugs_url(
product='firefox',
current_version=GeckoVersion.parse('54.0b1'),
current_revision='cf76e00dcd6f',
)
assert buglist_str_54_0b1 == '', 'There should be no bugs to compare for beta 1.'
@pytest.mark.parametrize('description,is_excluded', (
('something something something a=test-only something something something', True),
('this is a a=release change!', True),
))
def test_is_excluded_change(description, is_excluded):
assert is_excluded_change({'desc': description}) == is_excluded
@pytest.mark.parametrize('description,is_backout', (
('I backed out this bug because', True),
('Backing out this bug due to', True),
('Backout bug xyz', True),
('Back out bug xyz', True),
('this is a regular bug description', False),
))
def test_is_backout_bug(description, is_backout):
assert is_backout_bug(description) == is_backout
@pytest.mark.parametrize('product,version,tag', (
('firefox', GeckoVersion.parse('53.0b10'), 'FIREFOX_53_0b10_RELEASE'),
('firefox', GeckoVersion.parse('52.0'), 'FIREFOX_52_0_RELEASE'),
('fennec', GeckoVersion.parse('52.0.2'), 'FENNEC_52_0_2_RELEASE'),
))
def test_tag_version(product, version, tag):
assert tag_version(product, version) == tag
@pytest.mark.parametrize('tag,version', (
('FIREFOX_53_0b10_RELEASE', GeckoVersion.parse('53.0b10')),
('FIREFOX_52_0_RELEASE', GeckoVersion.parse('52.0')),
('FENNEC_52_0_2_RELEASE', GeckoVersion.parse('52.0.2')),
))
def test_parse_tag_version(tag, version):
assert parse_tag_version(tag) == version
@pytest.mark.parametrize('version,tag,previous_tag', (
(GeckoVersion.parse('48.0b4'), 'FIREFOX_48_0b4_RELEASE', 'FIREFOX_48_0b3_RELEASE'),
(GeckoVersion.parse('48.0b9'), 'FIREFOX_48_0b9_RELEASE', 'FIREFOX_48_0b7_RELEASE'),
(GeckoVersion.parse('48.0.2'), 'FIREFOX_48_0_2_RELEASE', 'FIREFOX_48_0_1_RELEASE'),
(GeckoVersion.parse('48.0.1'), 'FIREFOX_48_0_1_RELEASE', 'FIREFOX_48_0_RELEASE'),
))
def test_get_previous_tag_version(version, tag, previous_tag):
product = 'firefox'
ff_48_tags = [
u'FIREFOX_BETA_48_END',
u'FIREFOX_RELEASE_48_END',
u'FIREFOX_48_0_2_RELEASE',
u'FIREFOX_48_0_2_BUILD1',
u'FIREFOX_48_0_1_RELEASE',
u'FIREFOX_48_0_1_BUILD3',
u'FIREFOX_48_0_RELEASE',
u'FIREFOX_48_0_BUILD2',
u'FIREFOX_RELEASE_48_BASE',
u'FIREFOX_48_0b10_RELEASE',
u'FIREFOX_48_0b10_BUILD1',
u'FIREFOX_48_0b9_RELEASE',
u'FIREFOX_48_0b9_BUILD1',
u'FIREFOX_48_0b7_RELEASE',
u'FIREFOX_48_0b7_BUILD1',
u'FIREFOX_48_0b6_RELEASE',
u'FIREFOX_48_0b6_BUILD1',
u'FIREFOX_48_0b5_RELEASE',
u'FIREFOX_48_0b5_BUILD1',
u'FIREFOX_48_0b4_RELEASE',
u'FIREFOX_48_0b4_BUILD1',
u'FIREFOX_48_0b3_RELEASE',
u'FIREFOX_48_0b3_BUILD1',
u'FIREFOX_48_0b2_RELEASE',
u'FIREFOX_48_0b2_BUILD2',
u'FIREFOX_48_0b1_RELEASE',
u'FIREFOX_48_0b1_BUILD2',
u'FIREFOX_AURORA_48_END',
u'FIREFOX_BETA_48_BASE',
u'FIREFOX_AURORA_48_BASE',
]
mock_hg_json = {
'tags': [
{'tag': ff_48_tag} for ff_48_tag in ff_48_tags
],
}
assert get_previous_tag_version(product, version, tag, mock_hg_json) == previous_tag
def test_get_bugs_in_changeset():
with DATA_PATH.joinpath("buglist_changesets.json").open("r") as fp:
changeset_data = json.load(fp)
bugs, backouts = get_bugs_in_changeset(changeset_data)
assert bugs == {u'1356563', u'1348409', u'1341190', u'1360626', u'1332731', u'1328762',
u'1355870', u'1358089', u'1354911', u'1354038'}
assert backouts == {u'1337861', u'1320072'}
if __name__ == '__main__':
mozunit.main()