forked from mirrors/gecko-dev
178 lines
5 KiB
Python
178 lines
5 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/.
|
|
|
|
import json
|
|
from pathlib import Path
|
|
|
|
import mozunit
|
|
import pytest
|
|
from mozilla_version.gecko import GeckoVersion
|
|
|
|
from mozrelease.buglist_creator import (
|
|
create_bugs_url,
|
|
get_bugs_in_changeset,
|
|
get_previous_tag_version,
|
|
is_backout_bug,
|
|
is_excluded_change,
|
|
parse_tag_version,
|
|
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()
|