summaryrefslogtreecommitdiffstats
path: root/tests/commands
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2021-03-08 17:48:51 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2021-03-08 17:49:10 +0000
commit84c011ae6133fb007046d8eb66c01d0de80b3500 (patch)
tree60b2be37885c99f0bf69434223b01cc5a2b92203 /tests/commands
parentReleasing debian version 2.10.1-1. (diff)
downloadpre-commit-84c011ae6133fb007046d8eb66c01d0de80b3500.tar.xz
pre-commit-84c011ae6133fb007046d8eb66c01d0de80b3500.zip
Merging upstream version 2.11.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/commands')
-rw-r--r--tests/commands/hook_impl_test.py9
-rw-r--r--tests/commands/install_uninstall_test.py47
-rw-r--r--tests/commands/run_test.py9
3 files changed, 64 insertions, 1 deletions
diff --git a/tests/commands/hook_impl_test.py b/tests/commands/hook_impl_test.py
index 2fc0146..c38b9ca 100644
--- a/tests/commands/hook_impl_test.py
+++ b/tests/commands/hook_impl_test.py
@@ -97,6 +97,7 @@ def test_run_legacy_recursive(tmpdir):
('pre-push', ['branch_name', 'remote_name']),
('commit-msg', ['.git/COMMIT_EDITMSG']),
('post-commit', []),
+ ('post-merge', ['1']),
('post-checkout', ['old_head', 'new_head', '1']),
# multiple choices for commit-editmsg
('prepare-commit-msg', ['.git/COMMIT_EDITMSG']),
@@ -157,6 +158,14 @@ def test_run_ns_post_commit():
assert ns.color is True
+def test_run_ns_post_merge():
+ ns = hook_impl._run_ns('post-merge', True, ('1',), b'')
+ assert ns is not None
+ assert ns.hook_stage == 'post-merge'
+ assert ns.color is True
+ assert ns.is_squash_merge == '1'
+
+
def test_run_ns_post_checkout():
ns = hook_impl._run_ns('post-checkout', True, ('a', 'b', 'c'), b'')
assert ns is not None
diff --git a/tests/commands/install_uninstall_test.py b/tests/commands/install_uninstall_test.py
index 7a4b906..bd28654 100644
--- a/tests/commands/install_uninstall_test.py
+++ b/tests/commands/install_uninstall_test.py
@@ -259,7 +259,10 @@ def _path_without_us():
exe = find_executable('pre-commit', _environ=env)
while exe:
parts = env['PATH'].split(os.pathsep)
- after = [x for x in parts if x.lower() != os.path.dirname(exe).lower()]
+ after = [
+ x for x in parts
+ if x.lower().rstrip(os.sep) != os.path.dirname(exe).lower()
+ ]
if parts == after:
raise AssertionError(exe, parts)
env['PATH'] = os.pathsep.join(after)
@@ -759,6 +762,48 @@ def test_post_commit_integration(tempdir_factory, store):
assert os.path.exists('post-commit.tmp')
+def test_post_merge_integration(tempdir_factory, store):
+ path = git_dir(tempdir_factory)
+ config = [
+ {
+ 'repo': 'local',
+ 'hooks': [{
+ 'id': 'post-merge',
+ 'name': 'Post merge',
+ 'entry': 'touch post-merge.tmp',
+ 'language': 'system',
+ 'always_run': True,
+ 'verbose': True,
+ 'stages': ['post-merge'],
+ }],
+ },
+ ]
+ write_config(path, config)
+ with cwd(path):
+ # create a simple diamond of commits for a non-trivial merge
+ open('init', 'a').close()
+ cmd_output('git', 'add', '.')
+ git_commit()
+
+ open('master', 'a').close()
+ cmd_output('git', 'add', '.')
+ git_commit()
+
+ cmd_output('git', 'checkout', '-b', 'branch', 'HEAD^')
+ open('branch', 'a').close()
+ cmd_output('git', 'add', '.')
+ git_commit()
+
+ cmd_output('git', 'checkout', 'master')
+ install(C.CONFIG_FILE, store, hook_types=['post-merge'])
+ retc, stdout, stderr = cmd_output_mocked_pre_commit_home(
+ 'git', 'merge', 'branch',
+ tempdir_factory=tempdir_factory,
+ )
+ assert retc == 0
+ assert os.path.exists('post-merge.tmp')
+
+
def test_post_checkout_integration(tempdir_factory, store):
path = git_dir(tempdir_factory)
config = [
diff --git a/tests/commands/run_test.py b/tests/commands/run_test.py
index eaea813..4cd70fd 100644
--- a/tests/commands/run_test.py
+++ b/tests/commands/run_test.py
@@ -494,6 +494,15 @@ def test_all_push_options_ok(cap_out, store, repo_with_passing_hook):
assert b'Specify both --from-ref and --to-ref.' not in printed
+def test_is_squash_merge(cap_out, store, repo_with_passing_hook):
+ args = run_opts(is_squash_merge='1')
+ environ: MutableMapping[str, str] = {}
+ ret, printed = _do_run(
+ cap_out, store, repo_with_passing_hook, args, environ,
+ )
+ assert environ['PRE_COMMIT_IS_SQUASH_MERGE'] == '1'
+
+
def test_checkout_type(cap_out, store, repo_with_passing_hook):
args = run_opts(from_ref='', to_ref='', checkout_type='1')
environ: MutableMapping[str, str] = {}