summaryrefslogtreecommitdiffstats
path: root/tests/repository_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/repository_test.py')
-rw-r--r--tests/repository_test.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/repository_test.py b/tests/repository_test.py
index 8540db3..1b58164 100644
--- a/tests/repository_test.py
+++ b/tests/repository_test.py
@@ -10,6 +10,7 @@ import pytest
import re_assert
import pre_commit.constants as C
+from pre_commit import git
from pre_commit.clientlib import CONFIG_SCHEMA
from pre_commit.clientlib import load_manifest
from pre_commit.envcontext import envcontext
@@ -346,6 +347,59 @@ def test_golang_hook_still_works_when_gobin_is_set(tempdir_factory, store):
assert os.listdir(gobin_dir) == []
+def test_golang_with_recursive_submodule(tmpdir, tempdir_factory, store):
+ sub_go = '''\
+package sub
+
+import "fmt"
+
+func Func() {
+ fmt.Println("hello hello world")
+}
+'''
+ sub = tmpdir.join('sub').ensure_dir()
+ sub.join('sub.go').write(sub_go)
+ cmd_output('git', '-C', str(sub), 'init', '.')
+ cmd_output('git', '-C', str(sub), 'add', '.')
+ git.commit(str(sub))
+
+ pre_commit_hooks = '''\
+- id: example
+ name: example
+ entry: example
+ language: golang
+ verbose: true
+'''
+ go_mod = '''\
+module github.com/asottile/example
+
+go 1.14
+'''
+ main_go = '''\
+package main
+
+import "github.com/asottile/example/sub"
+
+func main() {
+ sub.Func()
+}
+'''
+ repo = tmpdir.join('repo').ensure_dir()
+ repo.join('.pre-commit-hooks.yaml').write(pre_commit_hooks)
+ repo.join('go.mod').write(go_mod)
+ repo.join('main.go').write(main_go)
+ cmd_output('git', '-C', str(repo), 'init', '.')
+ cmd_output('git', '-C', str(repo), 'add', '.')
+ cmd_output('git', '-C', str(repo), 'submodule', 'add', str(sub), 'sub')
+ git.commit(str(repo))
+
+ config = make_config_from_repo(str(repo))
+ hook = _get_hook(config, store, 'example')
+ ret, out = _hook_run(hook, (), color=False)
+ assert ret == 0
+ assert _norm_out(out) == b'hello hello world\n'
+
+
def test_rust_hook(tempdir_factory, store):
_test_hook_repo(
tempdir_factory, store, 'rust_hooks_repo',