|
1 | | -from typing import TYPE_CHECKING, Optional, Sequence |
| 1 | +from typing import TYPE_CHECKING, List, Optional, Sequence |
2 | 2 |
|
3 | 3 | import pytest |
4 | 4 |
|
@@ -343,3 +343,22 @@ def test_interactive_reword(repo: Repository) -> None: |
343 | 343 | assert prev_u.tree().entries[b"file2"] == curr.tree().entries[b"file2"] |
344 | 344 | assert prev_u.tree().entries[b"file1"] == curr_uu.tree().entries[b"file1"] |
345 | 345 | assert prev.tree().entries[b"file1"] == curr_u.tree().entries[b"file1"] |
| 346 | + |
| 347 | + |
| 348 | +@pytest.mark.parametrize("interactive_mode", ["-i", "-ie", "-e"]) |
| 349 | +def test_no_changes(repo: Repository, interactive_mode: str) -> None: |
| 350 | + bash("git commit --allow-empty -m empty") |
| 351 | + old = repo.get_commit("HEAD") |
| 352 | + assert old.message == b"empty\n" |
| 353 | + |
| 354 | + base = "--root" if interactive_mode != "-e" else "HEAD" |
| 355 | + |
| 356 | + outputs: List[bytes] = [] |
| 357 | + with editor_main([interactive_mode, base], stdout_stderr_out=outputs) as ed: |
| 358 | + with ed.next_file() as f: |
| 359 | + f.replace_dedent(f.indata) |
| 360 | + |
| 361 | + normalized_outputs = [text.decode().replace("\r\n", "\n") for text in outputs] |
| 362 | + assert normalized_outputs == ["", "(warning) no changes performed\n"] |
| 363 | + new = repo.get_commit("HEAD") |
| 364 | + assert new.oid == old.oid |
0 commit comments