gecko-dev/python/mozversioncontrol/test/test_get_mozilla_remote_args.py
Mike Hommey 06e9eab12c Bug 1971469 - Account for the github repo even when using git-cinnabar. r=ahal,shtrom
When figuring out the base ref for a try push, we look for commits that
are in HEAD but not in some remotes. When using git-cinnabar, we
currently only consider remotes on hg.mozilla.org, while at this point,
the github repo is very likely to be a remote as well, but currently
ignored.

By always considering the github repo as a remote in the base ref
calculation, we ensure the base is not skewed by git-cinnabar remoted
being out-of-date.

While here also ensure that a terminal forward slash in the try url
doesn't make it not detected.

Differential Revision: https://phabricator.services.mozilla.com/D253406
2025-06-13 08:56:01 +00:00

68 lines
1.7 KiB
Python

# 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 unittest import mock
import mozunit
import pytest
from mozversioncontrol import get_repository_object
STEPS = {
"hg": [],
"git": [
"git remote add blah https://example.com/blah",
"""
git remote add unified hg::https://hg.mozilla.org/mozilla-unified
git remote add central hg::https://hg.mozilla.org/central
git remote add try hg::https://hg.mozilla.org/try
git remote add firefox https://github.com/mozilla-firefox/firefox
""",
],
"jj": [],
}
@pytest.mark.parametrize(
"is_cinnabar,expected_remotes",
(
(
True,
[
"--remotes=central",
"--remotes=firefox",
"--remotes=unified",
],
),
(False, ["--remotes=firefox"]),
),
)
def test_get_mozilla_remote_args(is_cinnabar, expected_remotes, repo):
# Test is only relevant for Git.
if not repo.vcs == "git":
return
repo.execute_next_step()
vcs = get_repository_object(repo.dir)
vcs.is_cinnabar_repo = mock.MagicMock(name="is_cinnabar_repo")
vcs.is_cinnabar_repo.return_value = is_cinnabar
remotes = vcs.get_mozilla_remote_args()
assert remotes == [
"--remotes"
], "Default `--remotes` passed without finding official remote."
repo.execute_next_step()
remotes = sorted(vcs.get_mozilla_remote_args())
assert (
remotes == expected_remotes
), "Multiple non-try remote arguments should be found."
if __name__ == "__main__":
mozunit.main()