add check on pre-push stage: exit if staged files not committed yet

This commit is contained in:
Alessio Izzo 2024-01-18 09:33:01 +01:00 committed by Anthony Sottile
parent 924680e974
commit 80e6149cf2
3 changed files with 42 additions and 1 deletions

View file

@ -1246,3 +1246,36 @@ def test_pre_commit_env_variable_set(cap_out, store, repo_with_passing_hook):
cap_out, store, repo_with_passing_hook, args, environ,
)
assert environ['PRE_COMMIT'] == '1'
def test_pre_push_fails_if_staged_files(
cap_out, store, repo_with_passing_hook,
):
config = {
'repo': 'local',
'hooks': [{
'id': 'no-todo',
'name': 'No TODO',
'entry': 'sh -c "! grep -iI todo $@" --',
'language': 'system',
'stage': 'pre-push',
}],
}
add_config_to_repo(repo_with_passing_hook, config)
with open('placeholder.py', 'w') as staged_file:
staged_file.write('"""TODO: something"""\n')
cmd_output('git', 'add', 'placeholder.py')
git_commit()
with open('placeholder.py', 'w') as staged_file:
staged_file.write('"""Ok"""\n')
cmd_output('git', 'add', 'placeholder.py')
args = run_opts(hook_stage='pre-push')
ret, printed = _do_run(cap_out, store, repo_with_passing_hook, args)
assert ret == 1
assert printed == (
b'[ERROR] Staged files found.'
b' Please commit before pushing\n'
)