Skip to content

Commit

Permalink
chore: coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
GabDug committed Sep 9, 2023
1 parent 74848d5 commit 8dde5bf
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 6 deletions.
12 changes: 7 additions & 5 deletions tests/test_actions/test_install_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,16 @@ def test_execute_pre_commit_not_installed(self, printer: Printer, mock_subproces
assert printer.debug.call_count == 1
assert printer.debug.call_args == call("pre-commit package is not installed (or detected). Skipping.")

def test_execute_not_in_git_repo(self, printer: MagicMock, mock_subprocess, mocker) -> None:
mock_subprocess.return_value.decode.return_value = "pre-commit"
mocker.patch("subprocess.check_output", side_effect=subprocess.CalledProcessError(1, "cmd"))
def test_execute_not_in_git_repo(self, printer: MagicMock, mocker: MockerFixture) -> None:
mocker.patch(
"subprocess.check_output", side_effect=subprocess.CalledProcessError(1, "git", b"error", b"output")
)
mocker.patch("subprocess.check_call", return_value=0)

setup = SetupPreCommitHooks(printer, dry_run=False)
setup._is_pre_commit_package_installed = MagicMock(return_value=True)
setup._get_git_directory_path = MagicMock(return_value=None)
setup.execute()
assert printer.debug.call_count == 1
assert printer.debug.call_count == 3
assert printer.debug.call_args == call("Not in a git repository - can't install hooks. Skipping.")

def test_execute_pre_commit_hooks_already_installed(
Expand Down
19 changes: 19 additions & 0 deletions tests/test_pdm/test_pdm_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
PDMPrinter,
PDMSetupPreCommitHooks,
)
from sync_pre_commit_lock.pre_commit_config import PreCommitRepo

# Create the mock objects

Expand Down Expand Up @@ -72,3 +73,21 @@ def test_on_pdm_install_setup_pre_commit_success(project: Project) -> None:
on_pdm_install_setup_pre_commit(project, hooks=hooks_mock, candidates=candidates_mock, dry_run=False)

action_mock.execute.assert_called_once()


def test_pdm_printer_list_success(capsys: pytest.CaptureFixture[str]) -> None:
from sync_pre_commit_lock.pdm_plugin import PDMPrinter

printer = PDMPrinter(UI())

printer.list_updated_packages(
{
"package1": (
PreCommitRepo(repo="https://repo1.local/test", rev="rev1"),
"rev2",
)
}
)
captured = capsys.readouterr()

assert "[sync-pre-commit-lock] ✔ https://repo1.local/test rev1 -> rev2" in captured.out
38 changes: 37 additions & 1 deletion tests/test_poetry/test_poetry_plugin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import re
from unittest.mock import MagicMock, patch

import pytest
Expand All @@ -6,7 +7,8 @@
from poetry.console.commands.install import InstallCommand
from poetry.console.commands.lock import LockCommand
from poetry.console.commands.self.self_command import SelfCommand
from sync_pre_commit_lock.poetry_plugin import SyncPreCommitLockPlugin
from sync_pre_commit_lock.poetry_plugin import SyncPreCommitLockPlugin, SyncPreCommitPoetryCommand
from sync_pre_commit_lock.pre_commit_config import PreCommitRepo


def test_activate() -> None:
Expand Down Expand Up @@ -97,3 +99,37 @@ def test_handle_post_command_application_none() -> None:
assert True
else:
pytest.fail("RuntimeError not raised")


def test_poetry_printer_list_success(capsys: pytest.CaptureFixture[str]) -> None:
from cleo.io.inputs.input import Input
from cleo.io.io import IO
from cleo.io.outputs.output import Output
from sync_pre_commit_lock.poetry_plugin import PoetryPrinter

output = Output()

def _write(message: str, new_line: bool = False):
print(message) # noqa: T201

output._write = _write
printer = PoetryPrinter(IO(input=Input(), output=output, error_output=output))

printer.list_updated_packages(
{
"package1": (
PreCommitRepo(repo="https://repo1.local/test", rev="rev1"),
"rev2",
)
}
)
captured = capsys.readouterr()
# Remove all <..> tags, as we don't have the real parser
out = re.sub(r"<[^>]*>", "", captured.out)

assert "[sync-pre-commit-lock] • https://repo1.local/test rev1 -> rev2" in out


def test_direct_command_invocation():
with pytest.raises(RuntimeError, match="self.application is None"):
SyncPreCommitPoetryCommand().handle()

0 comments on commit 8dde5bf

Please sign in to comment.