2
import pytest # type: ignore
5
from .commit_in_branch import (
8
branch_has_backport_of_commit,
14
def get_upstream() -> str:
15
# Let's assume main is bound to the upstream remote and not a fork
16
out = subprocess.check_output(['git', 'for-each-ref',
17
'--format=%(upstream)',
19
stderr=subprocess.DEVNULL)
20
return out.decode().strip().split('/')[2]
23
@pytest.mark.parametrize(
26
('20.1-branchpoint', True),
28
('e58a10af640ba58b6001f5c5ad750b782547da76', True),
29
('d043d24654c851f0be57dbbf48274b5373dea42b', True),
30
('dd2bd68fa69124c86cd008b256d06f44fab8e6cd', True),
31
('0000000000000000000000000000000000000000', False),
32
('not-even-a-valid-commit-format', False),
34
def test_canonicalize_commit(commit: str, expected: bool) -> None:
36
assert canonicalize_commit(commit)
39
assert canonicalize_commit(commit)
40
except argparse.ArgumentTypeError:
45
@pytest.mark.parametrize(
48
(get_upstream() + '/20.1', True),
49
(get_upstream() + '/main', True),
52
('e58a10af640ba58b6001f5c5ad750b782547da76', False),
53
('d043d24654c851f0be57dbbf48274b5373dea42b', False),
54
('dd2bd68fa69124c86cd008b256d06f44fab8e6cd', False),
55
('0000000000000000000000000000000000000000', False),
56
('not-even-a-valid-commit-format', False),
58
def test_validate_branch(commit: str, expected: bool) -> None:
60
assert validate_branch(commit)
63
assert validate_branch(commit)
64
except argparse.ArgumentTypeError:
69
@pytest.mark.parametrize(
73
('20.1-branchpoint', True),
75
(get_upstream() + '/20.1', True),
76
('e58a10af640ba58b6001f5c5ad750b782547da76', True),
77
('d043d24654c851f0be57dbbf48274b5373dea42b', True),
78
('dd2bd68fa69124c86cd008b256d06f44fab8e6cd', True),
79
('0000000000000000000000000000000000000000', False),
80
('not-even-a-valid-commit-format', False),
82
def test_is_commit_valid(commit: str, expected: bool) -> None:
83
assert is_commit_valid(commit) == expected
86
@pytest.mark.parametrize(
87
'branch, commit, expected',
89
('20.1', '20.1-branchpoint', True),
90
('20.1', '20.0', False),
91
('20.1', 'main', False),
92
('20.1', 'e58a10af640ba58b6001f5c5ad750b782547da76', True),
93
('20.1', 'd043d24654c851f0be57dbbf48274b5373dea42b', True),
94
('20.1', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', False),
95
('main', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', True),
96
('20.0', 'd043d24654c851f0be57dbbf48274b5373dea42b', False),
98
def test_branch_has_commit(branch: str, commit: str, expected: bool) -> None:
99
upstream = get_upstream()
100
assert branch_has_commit(upstream, branch, commit) == expected
103
@pytest.mark.parametrize(
104
'branch, commit, expected',
106
('20.1', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', 'd043d24654c851f0be57dbbf48274b5373dea42b'),
107
('20.1', '20.1-branchpoint', ''),
108
('20.1', '20.0', ''),
109
('20.1', '20.2', ''),
110
('20.1', 'main', ''),
111
('20.1', 'd043d24654c851f0be57dbbf48274b5373dea42b', ''),
112
('20.0', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', ''),
114
def test_branch_has_backport_of_commit(branch: str, commit: str, expected: bool) -> None:
115
upstream = get_upstream()
116
assert branch_has_backport_of_commit(upstream, branch, commit) == expected