|
1 | 1 | import sys |
| 2 | +import tempfile |
2 | 3 | from pathlib import Path |
3 | 4 |
|
4 | 5 | sys.path.append(str(Path(__file__).parent.parent / "src")) |
|
12 | 13 | get_gh_username, |
13 | 14 | get_taken_branch_ids, |
14 | 15 | ) |
15 | | -from stack_pr.git import git_config |
| 16 | +from stack_pr.git import git_config, is_rebase_in_progress |
16 | 17 |
|
17 | 18 |
|
18 | 19 | @pytest.fixture(scope="module") |
@@ -90,3 +91,35 @@ def test_generate_available_branch_name() -> None: |
90 | 91 | "refs/remotes/origin/TestBot-stack-134", |
91 | 92 | ] |
92 | 93 | assert generate_available_branch_name(refs, template) == "TestBot-stack-135" |
| 94 | + |
| 95 | + |
| 96 | +def test_is_rebase_in_progress() -> None: |
| 97 | + """Test the is_rebase_in_progress function with different git states.""" |
| 98 | + with tempfile.TemporaryDirectory() as temp_dir: |
| 99 | + repo_dir = Path(temp_dir) |
| 100 | + git_dir = repo_dir / ".git" |
| 101 | + git_dir.mkdir() |
| 102 | + |
| 103 | + # Test no rebase in progress |
| 104 | + assert not is_rebase_in_progress(repo_dir) |
| 105 | + |
| 106 | + # Test rebase-merge directory exists |
| 107 | + rebase_merge_dir = git_dir / "rebase-merge" |
| 108 | + rebase_merge_dir.mkdir() |
| 109 | + assert is_rebase_in_progress(repo_dir) |
| 110 | + |
| 111 | + # Clean up and test rebase-apply directory |
| 112 | + rebase_merge_dir.rmdir() |
| 113 | + assert not is_rebase_in_progress(repo_dir) |
| 114 | + |
| 115 | + rebase_apply_dir = git_dir / "rebase-apply" |
| 116 | + rebase_apply_dir.mkdir() |
| 117 | + assert is_rebase_in_progress(repo_dir) |
| 118 | + |
| 119 | + # Test both directories exist |
| 120 | + rebase_merge_dir.mkdir() |
| 121 | + assert is_rebase_in_progress(repo_dir) |
| 122 | + |
| 123 | + # Test with None repo_dir (current directory) |
| 124 | + # This should not raise an error even if .git doesn't exist in cwd |
| 125 | + assert not is_rebase_in_progress(None) |
0 commit comments