Files
git-repo-manager/e2e_tests/test_worktree_config_presistent_branch.py
2023-01-26 16:51:46 +01:00

145 lines
3.8 KiB
Python

#!/usr/bin/env python3
import os.path
import git
from helpers import TempGitRepositoryWorktree, checksum_directory, funcname, grm, shell
def test_worktree_never_clean_persistent_branches():
with TempGitRepositoryWorktree.get(funcname()) as (base_dir, _commit):
with open(os.path.join(base_dir, "grm.toml"), "w") as f:
f.write(
"""
persistent_branches = [
"mybranch",
]
"""
)
cmd = grm(["wt", "add", "mybranch", "--track", "origin/master"], cwd=base_dir)
assert cmd.returncode == 0
before = checksum_directory(f"{base_dir}/mybranch")
cmd = grm(["wt", "clean"], cwd=base_dir)
assert cmd.returncode == 0
assert "mybranch" in os.listdir(base_dir)
repo = git.Repo(os.path.join(base_dir, "mybranch"))
assert str(repo.active_branch) == "mybranch"
after = checksum_directory(f"{base_dir}/mybranch")
assert before == after
def test_worktree_clean_branch_merged_into_persistent():
with TempGitRepositoryWorktree.get(funcname()) as (base_dir, _commit):
with open(os.path.join(base_dir, "grm.toml"), "w") as f:
f.write(
"""
persistent_branches = [
"master",
]
"""
)
cmd = grm(["wt", "add", "test", "--track", "origin/test"], cwd=base_dir)
assert cmd.returncode == 0
shell(
f"""
cd {base_dir}/test
touch change1
git add change1
git commit -m "commit1"
"""
)
cmd = grm(["wt", "add", "master"], cwd=base_dir)
assert cmd.returncode == 0
shell(
f"""
cd {base_dir}/master
git merge --no-ff test
"""
)
cmd = grm(["wt", "clean"], cwd=base_dir)
assert cmd.returncode == 0
assert "test" not in os.listdir(base_dir)
def test_worktree_no_clean_unmerged_branch():
with TempGitRepositoryWorktree.get(funcname()) as (base_dir, _commit):
with open(os.path.join(base_dir, "grm.toml"), "w") as f:
f.write(
"""
persistent_branches = [
"master",
]
"""
)
cmd = grm(["wt", "add", "test", "--track", "origin/test"], cwd=base_dir)
assert cmd.returncode == 0
shell(
f"""
cd {base_dir}/test
touch change1
git add change1
git commit -m "commit1"
git push origin test
"""
)
cmd = grm(["wt", "add", "master"], cwd=base_dir)
assert cmd.returncode == 0
cmd = grm(["wt", "clean"], cwd=base_dir)
assert cmd.returncode == 0
assert "test" in os.listdir(base_dir)
def test_worktree_delete_branch_merged_into_persistent():
with TempGitRepositoryWorktree.get(funcname()) as (base_dir, _commit):
with open(os.path.join(base_dir, "grm.toml"), "w") as f:
f.write(
"""
persistent_branches = [
"master",
]
"""
)
cmd = grm(["wt", "add", "test", "--track", "origin/test"], cwd=base_dir)
assert cmd.returncode == 0
shell(
f"""
cd {base_dir}/test
touch change1
git add change1
git commit -m "commit1"
"""
)
cmd = grm(["wt", "add", "master"], cwd=base_dir)
assert cmd.returncode == 0
shell(
f"""
cd {base_dir}/master
git merge --no-ff test
"""
)
cmd = grm(["wt", "delete", "test"], cwd=base_dir)
assert cmd.returncode == 0
assert "test" not in os.listdir(base_dir)