Skip to content

Commit

Permalink
Merge pull request #1777 from EliahKagan/hooks-tests
Browse files Browse the repository at this point in the history
Improve hooks tests
  • Loading branch information
Byron committed Dec 21, 2023
2 parents 22129a7 + e148647 commit c398d79
Showing 1 changed file with 34 additions and 6 deletions.
40 changes: 34 additions & 6 deletions test/test_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
InvalidGitRepositoryError,
UnmergedEntriesError,
)
from git.index.fun import hook_path
from git.index.fun import hook_path, run_commit_hook
from git.index.typ import BaseIndexEntry, IndexEntry
from git.index.util import TemporaryFileSwap
from git.objects import Blob
Expand Down Expand Up @@ -992,9 +992,32 @@ class Mocked:
rel = index._to_relative_path(path)
self.assertEqual(rel, os.path.relpath(path, root))

@pytest.mark.xfail(
type(_win_bash_status) is WinBashStatus.Absent,
reason="Can't run a hook on Windows without bash.exe.",
rasies=HookExecutionError,
)
@pytest.mark.xfail(
type(_win_bash_status) is WinBashStatus.WslNoDistro,
reason="Currently uses the bash.exe for WSL even with no WSL distro installed",
reason="Currently uses the bash.exe of WSL, even with no WSL distro installed",
raises=HookExecutionError,
)
@with_rw_repo("HEAD", bare=True)
def test_run_commit_hook(self, rw_repo):
index = rw_repo.index
_make_hook(index.repo.git_dir, "fake-hook", "echo 'ran fake hook' >output.txt")
run_commit_hook("fake-hook", index)
output = Path(rw_repo.git_dir, "output.txt").read_text(encoding="utf-8")
self.assertEqual(output, "ran fake hook\n")

@pytest.mark.xfail(
type(_win_bash_status) is WinBashStatus.Absent,
reason="Can't run a hook on Windows without bash.exe.",
rasies=HookExecutionError,
)
@pytest.mark.xfail(
type(_win_bash_status) is WinBashStatus.WslNoDistro,
reason="Currently uses the bash.exe of WSL, even with no WSL distro installed",
raises=HookExecutionError,
)
@with_rw_repo("HEAD", bare=True)
Expand All @@ -1005,7 +1028,7 @@ def test_pre_commit_hook_success(self, rw_repo):

@pytest.mark.xfail(
type(_win_bash_status) is WinBashStatus.WslNoDistro,
reason="Currently uses the bash.exe for WSL even with no WSL distro installed",
reason="Currently uses the bash.exe of WSL, even with no WSL distro installed",
raises=AssertionError,
)
@with_rw_repo("HEAD", bare=True)
Expand All @@ -1031,13 +1054,18 @@ def test_pre_commit_hook_fail(self, rw_repo):
raise AssertionError("Should have caught a HookExecutionError")

@pytest.mark.xfail(
type(_win_bash_status) in {WinBashStatus.Absent, WinBashStatus.Wsl},
type(_win_bash_status) is WinBashStatus.Absent,
reason="Can't run a hook on Windows without bash.exe.",
rasies=HookExecutionError,
)
@pytest.mark.xfail(
type(_win_bash_status) is WinBashStatus.Wsl,
reason="Specifically seems to fail on WSL bash (in spite of #1399)",
raises=AssertionError,
)
@pytest.mark.xfail(
type(_win_bash_status) is WinBashStatus.WslNoDistro,
reason="Currently uses the bash.exe for WSL even with no WSL distro installed",
reason="Currently uses the bash.exe of WSL, even with no WSL distro installed",
raises=HookExecutionError,
)
@with_rw_repo("HEAD", bare=True)
Expand All @@ -1055,7 +1083,7 @@ def test_commit_msg_hook_success(self, rw_repo):

@pytest.mark.xfail(
type(_win_bash_status) is WinBashStatus.WslNoDistro,
reason="Currently uses the bash.exe for WSL even with no WSL distro installed",
reason="Currently uses the bash.exe of WSL, even with no WSL distro installed",
raises=AssertionError,
)
@with_rw_repo("HEAD", bare=True)
Expand Down

0 comments on commit c398d79

Please sign in to comment.