зеркало из https://github.com/mozilla/gecko-dev.git
137 строки
4.6 KiB
Python
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()
|