Path: blob/21.2-virgl/bin/commit_in_branch_test.py
4545 views
import argparse1import pytest # type: ignore2import subprocess34from .commit_in_branch import (5is_commit_valid,6branch_has_commit,7branch_has_backport_of_commit,8canonicalize_commit,9validate_branch,10)111213def get_upstream() -> str:14# Let's assume main is bound to the upstream remote and not a fork15out = subprocess.check_output(['git', 'for-each-ref',16'--format=%(upstream)',17'refs/heads/main'],18stderr=subprocess.DEVNULL)19return out.decode().strip().split('/')[2]202122@pytest.mark.parametrize(23'commit, expected',24[25('20.1-branchpoint', True),26('main', True),27('e58a10af640ba58b6001f5c5ad750b782547da76', True),28('d043d24654c851f0be57dbbf48274b5373dea42b', True),29('dd2bd68fa69124c86cd008b256d06f44fab8e6cd', True),30('0000000000000000000000000000000000000000', False),31('not-even-a-valid-commit-format', False),32])33def test_canonicalize_commit(commit: str, expected: bool) -> None:34if expected:35assert canonicalize_commit(commit)36else:37try:38assert canonicalize_commit(commit)39except argparse.ArgumentTypeError:40return41assert False424344@pytest.mark.parametrize(45'commit, expected',46[47(get_upstream() + '/20.1', True),48(get_upstream() + '/main', True),49('20.1', False),50('main', False),51('e58a10af640ba58b6001f5c5ad750b782547da76', False),52('d043d24654c851f0be57dbbf48274b5373dea42b', False),53('dd2bd68fa69124c86cd008b256d06f44fab8e6cd', False),54('0000000000000000000000000000000000000000', False),55('not-even-a-valid-commit-format', False),56])57def test_validate_branch(commit: str, expected: bool) -> None:58if expected:59assert validate_branch(commit)60else:61try:62assert validate_branch(commit)63except argparse.ArgumentTypeError:64return65assert False666768@pytest.mark.parametrize(69'commit, expected',70[71('main', True),72('20.1-branchpoint', True),73('20.1', False),74(get_upstream() + '/20.1', True),75('e58a10af640ba58b6001f5c5ad750b782547da76', True),76('d043d24654c851f0be57dbbf48274b5373dea42b', True),77('dd2bd68fa69124c86cd008b256d06f44fab8e6cd', True),78('0000000000000000000000000000000000000000', False),79('not-even-a-valid-commit-format', False),80])81def test_is_commit_valid(commit: str, expected: bool) -> None:82assert is_commit_valid(commit) == expected838485@pytest.mark.parametrize(86'branch, commit, expected',87[88('20.1', '20.1-branchpoint', True),89('20.1', '20.0', False),90('20.1', 'main', False),91('20.1', 'e58a10af640ba58b6001f5c5ad750b782547da76', True),92('20.1', 'd043d24654c851f0be57dbbf48274b5373dea42b', True),93('20.1', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', False),94('main', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', True),95('20.0', 'd043d24654c851f0be57dbbf48274b5373dea42b', False),96])97def test_branch_has_commit(branch: str, commit: str, expected: bool) -> None:98upstream = get_upstream()99assert branch_has_commit(upstream, branch, commit) == expected100101102@pytest.mark.parametrize(103'branch, commit, expected',104[105('20.1', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', 'd043d24654c851f0be57dbbf48274b5373dea42b'),106('20.1', '20.1-branchpoint', ''),107('20.1', '20.0', ''),108('20.1', '20.2', ''),109('20.1', 'main', ''),110('20.1', 'd043d24654c851f0be57dbbf48274b5373dea42b', ''),111('20.0', 'dd2bd68fa69124c86cd008b256d06f44fab8e6cd', ''),112])113def test_branch_has_backport_of_commit(branch: str, commit: str, expected: bool) -> None:114upstream = get_upstream()115assert branch_has_backport_of_commit(upstream, branch, commit) == expected116117118