From 989b0cdcceaa469d5141c3e90cd9a0df7a55791e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20K=C3=B6rber?= Date: Thu, 30 Jun 2022 19:55:54 +0200 Subject: [PATCH] e2e: Refactor worktree delete removal tests --- e2e_tests/test_worktrees.py | 112 ++++++++++-------------------------- 1 file changed, 29 insertions(+), 83 deletions(-) diff --git a/e2e_tests/test_worktrees.py b/e2e_tests/test_worktrees.py index a1262c1..8e96abf 100644 --- a/e2e_tests/test_worktrees.py +++ b/e2e_tests/test_worktrees.py @@ -632,94 +632,40 @@ def test_worktree_delete_refusal_no_tracking_branch(): assert before == after -def test_worktree_delete_refusal_uncommited_changes_new_file(): +@pytest.mark.parametrize( + "reason", + ( + "new_file", + "changed_file", + "deleted_file", + "new_commit", + "tracking_branch_mismatch", + ), +) +def test_worktree_delete_refusal(reason): with TempGitRepositoryWorktree.get(funcname()) as (base_dir, _commit): cmd = grm(["wt", "add", "test", "--track", "origin/test"], cwd=base_dir) assert cmd.returncode == 0 - shell(f"cd {base_dir}/test && touch changed_file") + if reason == "new_file": + shell(f"cd {base_dir}/test && touch changed_file") + elif reason == "changed_file": + shell( + f"cd {base_dir}/test && git ls-files | shuf | head | while read f ; do echo $RANDOM > $f ; done" + ) + elif reason == "deleted_file": + shell(f"cd {base_dir}/test && git ls-files | shuf | head | xargs rm -rf") + elif reason == "new_commit": + shell( + f'cd {base_dir}/test && touch changed_file && git add changed_file && git commit -m "commitmsg"' + ) + elif reason == "tracking_branch_mismatch": + shell( + f"cd {base_dir}/test && git push origin test && git reset --hard origin/test^" + ) - before = checksum_directory(f"{base_dir}/test") - cmd = grm(["wt", "delete", "test"], cwd=base_dir) - assert cmd.returncode != 0 - assert len(cmd.stdout) == 0 - stderr = cmd.stderr.lower() - assert "refuse" in stderr or "refusing" in stderr - assert "test" in os.listdir(base_dir) - - after = checksum_directory(f"{base_dir}/test") - assert before == after - - -def test_worktree_delete_refusal_uncommited_changes_changed_file(): - with TempGitRepositoryWorktree.get(funcname()) as (base_dir, _commit): - cmd = grm(["wt", "add", "test", "--track", "origin/test"], cwd=base_dir) - assert cmd.returncode == 0 - - shell(f"cd {base_dir}/test && git ls-files | shuf | head | xargs rm -rf") - - before = checksum_directory(f"{base_dir}/test") - cmd = grm(["wt", "delete", "test"], cwd=base_dir) - assert cmd.returncode != 0 - assert len(cmd.stdout) == 0 - stderr = cmd.stderr.lower() - assert "refuse" in stderr or "refusing" in stderr - assert "test" in os.listdir(base_dir) - - after = checksum_directory(f"{base_dir}/test") - assert before == after - - -def test_worktree_delete_refusal_uncommited_changes_deleted_file(): - with TempGitRepositoryWorktree.get(funcname()) as (base_dir, _commit): - cmd = grm(["wt", "add", "test", "--track", "origin/test"], cwd=base_dir) - assert cmd.returncode == 0 - - shell( - f"cd {base_dir}/test && git ls-files | shuf | head | while read f ; do echo $RANDOM > $f ; done" - ) - - before = checksum_directory(f"{base_dir}/test") - cmd = grm(["wt", "delete", "test"], cwd=base_dir) - assert cmd.returncode != 0 - assert len(cmd.stdout) == 0 - stderr = cmd.stderr.lower() - assert "refuse" in stderr or "refusing" in stderr - assert "test" in os.listdir(base_dir) - - after = checksum_directory(f"{base_dir}/test") - assert before == after - - -def test_worktree_delete_refusal_committed_changes(): - with TempGitRepositoryWorktree.get(funcname()) as (base_dir, _commit): - cmd = grm(["wt", "add", "test", "--track", "origin/test"], cwd=base_dir) - assert cmd.returncode == 0 - - shell( - f'cd {base_dir}/test && touch changed_file && git add changed_file && git commit -m "commitmsg"' - ) - - before = checksum_directory(f"{base_dir}/test") - cmd = grm(["wt", "delete", "test"], cwd=base_dir) - assert cmd.returncode != 0 - assert len(cmd.stdout) == 0 - stderr = cmd.stderr.lower() - assert "refuse" in stderr or "refusing" in stderr - assert "test" in os.listdir(base_dir) - - after = checksum_directory(f"{base_dir}/test") - assert before == after - - -def test_worktree_delete_refusal_tracking_branch_mismatch(): - with TempGitRepositoryWorktree.get(funcname()) as (base_dir, _commit): - cmd = grm(["wt", "add", "test", "--track", "origin/test"], cwd=base_dir) - assert cmd.returncode == 0 - - shell( - f"cd {base_dir}/test && git push origin test && git reset --hard origin/test^" - ) + else: + raise NotImplementedError() before = checksum_directory(f"{base_dir}/test") cmd = grm(["wt", "delete", "test"], cwd=base_dir)