Adding upstream version 3.2.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
1a4d9cedd3
commit
346ef73c17
23 changed files with 357 additions and 102 deletions
|
@ -100,6 +100,8 @@ def test_run_legacy_recursive(tmpdir):
|
|||
('commit-msg', ['.git/COMMIT_EDITMSG']),
|
||||
('post-commit', []),
|
||||
('post-merge', ['1']),
|
||||
('pre-rebase', ['main', 'topic']),
|
||||
('pre-rebase', ['main']),
|
||||
('post-checkout', ['old_head', 'new_head', '1']),
|
||||
('post-rewrite', ['amend']),
|
||||
# multiple choices for commit-editmsg
|
||||
|
@ -139,13 +141,36 @@ def test_check_args_length_prepare_commit_msg_error():
|
|||
)
|
||||
|
||||
|
||||
def test_check_args_length_pre_rebase_error():
|
||||
with pytest.raises(SystemExit) as excinfo:
|
||||
hook_impl._check_args_length('pre-rebase', [])
|
||||
msg, = excinfo.value.args
|
||||
assert msg == 'hook-impl for pre-rebase expected 1 or 2 arguments but got 0: []' # noqa: E501
|
||||
|
||||
|
||||
def test_run_ns_pre_commit():
|
||||
ns = hook_impl._run_ns('pre-commit', True, (), b'')
|
||||
assert ns is not None
|
||||
assert ns.hook_stage == 'commit'
|
||||
assert ns.hook_stage == 'pre-commit'
|
||||
assert ns.color is True
|
||||
|
||||
|
||||
def test_run_ns_pre_rebase():
|
||||
ns = hook_impl._run_ns('pre-rebase', True, ('main', 'topic'), b'')
|
||||
assert ns is not None
|
||||
assert ns.hook_stage == 'pre-rebase'
|
||||
assert ns.color is True
|
||||
assert ns.pre_rebase_upstream == 'main'
|
||||
assert ns.pre_rebase_branch == 'topic'
|
||||
|
||||
ns = hook_impl._run_ns('pre-rebase', True, ('main',), b'')
|
||||
assert ns is not None
|
||||
assert ns.hook_stage == 'pre-rebase'
|
||||
assert ns.color is True
|
||||
assert ns.pre_rebase_upstream == 'main'
|
||||
assert ns.pre_rebase_branch is None
|
||||
|
||||
|
||||
def test_run_ns_commit_msg():
|
||||
ns = hook_impl._run_ns('commit-msg', False, ('.git/COMMIT_MSG',), b'')
|
||||
assert ns is not None
|
||||
|
@ -245,7 +270,7 @@ def test_run_ns_pre_push_updating_branch(push_example):
|
|||
ns = hook_impl._run_ns('pre-push', False, args, stdin)
|
||||
|
||||
assert ns is not None
|
||||
assert ns.hook_stage == 'push'
|
||||
assert ns.hook_stage == 'pre-push'
|
||||
assert ns.color is False
|
||||
assert ns.remote_name == 'origin'
|
||||
assert ns.remote_url == src
|
||||
|
|
|
@ -810,6 +810,46 @@ def test_post_merge_integration(tempdir_factory, store):
|
|||
assert os.path.exists('post-merge.tmp')
|
||||
|
||||
|
||||
def test_pre_rebase_integration(tempdir_factory, store):
|
||||
path = git_dir(tempdir_factory)
|
||||
config = {
|
||||
'repos': [
|
||||
{
|
||||
'repo': 'local',
|
||||
'hooks': [{
|
||||
'id': 'pre-rebase',
|
||||
'name': 'Pre rebase',
|
||||
'entry': 'touch pre-rebase.tmp',
|
||||
'language': 'system',
|
||||
'always_run': True,
|
||||
'verbose': True,
|
||||
'stages': ['pre-rebase'],
|
||||
}],
|
||||
},
|
||||
],
|
||||
}
|
||||
write_config(path, config)
|
||||
with cwd(path):
|
||||
install(C.CONFIG_FILE, store, hook_types=['pre-rebase'])
|
||||
open('foo', 'a').close()
|
||||
cmd_output('git', 'add', '.')
|
||||
git_commit()
|
||||
|
||||
cmd_output('git', 'checkout', '-b', 'branch')
|
||||
open('bar', 'a').close()
|
||||
cmd_output('git', 'add', '.')
|
||||
git_commit()
|
||||
|
||||
cmd_output('git', 'checkout', 'master')
|
||||
open('baz', 'a').close()
|
||||
cmd_output('git', 'add', '.')
|
||||
git_commit()
|
||||
|
||||
cmd_output('git', 'checkout', 'branch')
|
||||
cmd_output('git', 'rebase', 'master', 'branch')
|
||||
assert os.path.exists('pre-rebase.tmp')
|
||||
|
||||
|
||||
def test_post_rewrite_integration(tempdir_factory, store):
|
||||
path = git_dir(tempdir_factory)
|
||||
config = {
|
||||
|
|
|
@ -354,13 +354,13 @@ def test_show_diff_on_failure(
|
|||
({'hook': 'bash_hook'}, (b'Bash hook', b'Passed'), 0, True),
|
||||
(
|
||||
{'hook': 'nope'},
|
||||
(b'No hook with id `nope` in stage `commit`',),
|
||||
(b'No hook with id `nope` in stage `pre-commit`',),
|
||||
1,
|
||||
True,
|
||||
),
|
||||
(
|
||||
{'hook': 'nope', 'hook_stage': 'push'},
|
||||
(b'No hook with id `nope` in stage `push`',),
|
||||
{'hook': 'nope', 'hook_stage': 'pre-push'},
|
||||
(b'No hook with id `nope` in stage `pre-push`',),
|
||||
1,
|
||||
True,
|
||||
),
|
||||
|
@ -563,6 +563,16 @@ def test_merge_conflict_resolved(cap_out, store, in_merge_conflict):
|
|||
assert msg in printed
|
||||
|
||||
|
||||
def test_rebase(cap_out, store, repo_with_passing_hook):
|
||||
args = run_opts(pre_rebase_upstream='master', pre_rebase_branch='topic')
|
||||
environ: MutableMapping[str, str] = {}
|
||||
ret, printed = _do_run(
|
||||
cap_out, store, repo_with_passing_hook, args, environ,
|
||||
)
|
||||
assert environ['PRE_COMMIT_PRE_REBASE_UPSTREAM'] == 'master'
|
||||
assert environ['PRE_COMMIT_PRE_REBASE_BRANCH'] == 'topic'
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
('hooks', 'expected'),
|
||||
(
|
||||
|
@ -818,7 +828,7 @@ def test_stages(cap_out, store, repo_with_passing_hook):
|
|||
'language': 'pygrep',
|
||||
'stages': [stage],
|
||||
}
|
||||
for i, stage in enumerate(('commit', 'push', 'manual'), 1)
|
||||
for i, stage in enumerate(('pre-commit', 'pre-push', 'manual'), 1)
|
||||
],
|
||||
}
|
||||
add_config_to_repo(repo_with_passing_hook, config)
|
||||
|
@ -833,8 +843,8 @@ def test_stages(cap_out, store, repo_with_passing_hook):
|
|||
assert printed.count(b'hook ') == 1
|
||||
return printed
|
||||
|
||||
assert _run_for_stage('commit').startswith(b'hook 1...')
|
||||
assert _run_for_stage('push').startswith(b'hook 2...')
|
||||
assert _run_for_stage('pre-commit').startswith(b'hook 1...')
|
||||
assert _run_for_stage('pre-push').startswith(b'hook 2...')
|
||||
assert _run_for_stage('manual').startswith(b'hook 3...')
|
||||
|
||||
|
||||
|
@ -1173,7 +1183,7 @@ def test_args_hook_only(cap_out, store, repo_with_passing_hook):
|
|||
),
|
||||
'language': 'system',
|
||||
'files': r'\.py$',
|
||||
'stages': ['commit'],
|
||||
'stages': ['pre-commit'],
|
||||
},
|
||||
{
|
||||
'id': 'do_not_commit',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue