Source code
Revision control
Copy as Markdown
Other Tools
import mozunit
import pytest
from mozversioncontrol import get_repository_object
from mozversioncontrol.errors import MissingVCSExtension
def test_prepare_try_push_cleanup_restores_state(repo):
commit_message = "try: test cleanup"
vcs = get_repository_object(repo.dir)
initial_head = vcs.head_ref
try:
head, cleanup_fn = vcs.prepare_try_push(
commit_message, {"test.txt": "test content"}
)
if vcs.name != "src":
assert head != initial_head, "Head should have changed"
cleanup_fn()
assert vcs.head_ref == initial_head, (
"Head should be restored to initial state after cleanup"
)
except MissingVCSExtension:
pytest.xfail("Requires the Mercurial evolve extension.")
def test_prepare_try_push_cleanup_idempotent(repo):
commit_message = "try: idempotent cleanup"
vcs = get_repository_object(repo.dir)
initial_head = vcs.head_ref
try:
head, cleanup_fn = vcs.prepare_try_push(commit_message)
cleanup_fn()
assert vcs.head_ref == initial_head
cleanup_fn()
assert vcs.head_ref == initial_head, (
"Cleanup should be idempotent and safe to call multiple times"
)
except MissingVCSExtension:
pytest.xfail("Requires the Mercurial evolve extension.")
if __name__ == "__main__":
mozunit.main()