64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
from __future__ import annotations
|
|
|
|
import runpy
|
|
import sys
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
|
|
class TestIntegrationBranchCommands(unittest.TestCase):
|
|
"""
|
|
E2E-style tests for the 'pkgmgr branch' CLI wiring.
|
|
|
|
We do NOT call real git; instead we patch pkgmgr.branch_commands.open_branch
|
|
and verify that the CLI invokes it with the correct parameters.
|
|
"""
|
|
|
|
def _run_pkgmgr(self, argv: list[str]) -> None:
|
|
"""
|
|
Helper to run 'pkgmgr' via its entry module with a given argv.
|
|
"""
|
|
original_argv = list(sys.argv)
|
|
try:
|
|
# argv typically looks like: ["pkgmgr", "branch", ...]
|
|
sys.argv = argv
|
|
# Run the CLI entry point
|
|
runpy.run_module("pkgmgr.cli", run_name="__main__")
|
|
finally:
|
|
sys.argv = original_argv
|
|
|
|
@patch("pkgmgr.branch_commands.open_branch")
|
|
def test_branch_open_with_name_and_base(self, mock_open_branch) -> None:
|
|
"""
|
|
pkgmgr branch open feature/test --base develop
|
|
should invoke open_branch(name='feature/test', base_branch='develop', cwd='.')
|
|
"""
|
|
self._run_pkgmgr(
|
|
["pkgmgr", "branch", "open", "feature/test", "--base", "develop"]
|
|
)
|
|
|
|
mock_open_branch.assert_called_once()
|
|
_, kwargs = mock_open_branch.call_args
|
|
self.assertEqual(kwargs.get("name"), "feature/test")
|
|
self.assertEqual(kwargs.get("base_branch"), "develop")
|
|
self.assertEqual(kwargs.get("cwd"), ".")
|
|
|
|
@patch("pkgmgr.branch_commands.open_branch")
|
|
def test_branch_open_without_name_uses_default_base(self, mock_open_branch) -> None:
|
|
"""
|
|
pkgmgr branch open
|
|
should invoke open_branch(name=None, base_branch='main', cwd='.')
|
|
(the branch name will be asked interactively inside open_branch).
|
|
"""
|
|
self._run_pkgmgr(["pkgmgr", "branch", "open"])
|
|
|
|
mock_open_branch.assert_called_once()
|
|
_, kwargs = mock_open_branch.call_args
|
|
self.assertIsNone(kwargs.get("name"))
|
|
self.assertEqual(kwargs.get("base_branch"), "main")
|
|
self.assertEqual(kwargs.get("cwd"), ".")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|