Simplify has_unmerged_paths

This commit is contained in:
Anthony Sottile 2014-04-13 23:52:52 -07:00
parent 846ddeed67
commit 2e4cde9cb0
2 changed files with 5 additions and 15 deletions

View file

@ -30,9 +30,6 @@ COLS = int(subprocess.Popen(['tput', 'cols'], stdout=subprocess.PIPE).communicat
PASS_FAIL_LENGTH = 6
# Grabbed from `git help status`
CONFLICTING_GIT_STATUSES = set(('DD', 'AU', 'UD', 'UA', 'DU', 'AA', 'UU'))
def install(runner):
"""Install the pre-commit hooks."""
@ -233,11 +230,8 @@ def _run_hook(runner, hook_id, args, write):
def _has_unmerged_paths(runner):
_, stdout, _ = runner.cmd_runner.run(
['git', 'status', '--short'], retcode=None,
)
codes = set(line[:2] for line in stdout.splitlines())
return codes & CONFLICTING_GIT_STATUSES > set()
_, stdout, _ = runner.cmd_runner.run(['git', 'ls-files', '--unmerged'])
return bool(stdout.strip())
def run(runner, args, write=sys.stdout.write):

View file

@ -277,14 +277,10 @@ def test_no_stash(repo_with_passing_hook, no_stash, all_files, expect_stash):
assert warning_msg not in printed
@pytest.mark.parametrize(
('mode', 'expected'),
[(status, True) for status in commands.CONFLICTING_GIT_STATUSES] +
[(' A', False), (' D', False), (' M', False)]
)
def test_has_unmerged_paths(mode, expected):
@pytest.mark.parametrize(('output', 'expected'), (('some', True), ('', False)))
def test_has_unmerged_paths(output, expected):
mock_runner = mock.Mock()
mock_runner.cmd_runner.run.return_value = (1, mode + ' foo', '')
mock_runner.cmd_runner.run.return_value = (1, output, '')
assert commands._has_unmerged_paths(mock_runner) is expected