1515from pre_commit .store import Store
1616from pre_commit .util import cmd_output
1717from pre_commit .util import cwd
18+ from testing .fixtures import git_dir
1819from testing .fixtures import make_consuming_repo
1920
2021
@@ -40,6 +41,26 @@ def in_tmpdir(tempdir_factory):
4041 yield path
4142
4243
44+ def _make_conflict ():
45+ cmd_output ('git' , 'checkout' , 'origin/master' , '-b' , 'foo' )
46+ with io .open ('conflict_file' , 'w' ) as conflict_file :
47+ conflict_file .write ('herp\n derp\n ' )
48+ cmd_output ('git' , 'add' , 'conflict_file' )
49+ with io .open ('foo_only_file' , 'w' ) as foo_only_file :
50+ foo_only_file .write ('foo' )
51+ cmd_output ('git' , 'add' , 'foo_only_file' )
52+ cmd_output ('git' , 'commit' , '-m' , 'conflict_file' )
53+ cmd_output ('git' , 'checkout' , 'origin/master' , '-b' , 'bar' )
54+ with io .open ('conflict_file' , 'w' ) as conflict_file :
55+ conflict_file .write ('harp\n ddrp\n ' )
56+ cmd_output ('git' , 'add' , 'conflict_file' )
57+ with io .open ('bar_only_file' , 'w' ) as bar_only_file :
58+ bar_only_file .write ('bar' )
59+ cmd_output ('git' , 'add' , 'bar_only_file' )
60+ cmd_output ('git' , 'commit' , '-m' , 'conflict_file' )
61+ cmd_output ('git' , 'merge' , 'foo' , retcode = None )
62+
63+
4364@pytest .yield_fixture
4465def in_merge_conflict (tempdir_factory ):
4566 path = make_consuming_repo (tempdir_factory , 'script_hooks_repo' )
@@ -51,26 +72,23 @@ def in_merge_conflict(tempdir_factory):
5172 conflict_path = tempdir_factory .get ()
5273 cmd_output ('git' , 'clone' , path , conflict_path )
5374 with cwd (conflict_path ):
54- cmd_output ('git' , 'checkout' , 'origin/master' , '-b' , 'foo' )
55- with io .open ('conflict_file' , 'w' ) as conflict_file :
56- conflict_file .write ('herp\n derp\n ' )
57- cmd_output ('git' , 'add' , 'conflict_file' )
58- with io .open ('foo_only_file' , 'w' ) as foo_only_file :
59- foo_only_file .write ('foo' )
60- cmd_output ('git' , 'add' , 'foo_only_file' )
61- cmd_output ('git' , 'commit' , '-m' , 'conflict_file' )
62- cmd_output ('git' , 'checkout' , 'origin/master' , '-b' , 'bar' )
63- with io .open ('conflict_file' , 'w' ) as conflict_file :
64- conflict_file .write ('harp\n ddrp\n ' )
65- cmd_output ('git' , 'add' , 'conflict_file' )
66- with io .open ('bar_only_file' , 'w' ) as bar_only_file :
67- bar_only_file .write ('bar' )
68- cmd_output ('git' , 'add' , 'bar_only_file' )
69- cmd_output ('git' , 'commit' , '-m' , 'conflict_file' )
70- cmd_output ('git' , 'merge' , 'foo' , retcode = None )
75+ _make_conflict ()
7176 yield os .path .join (conflict_path )
7277
7378
79+ @pytest .yield_fixture
80+ def in_conflicting_submodule (tempdir_factory ):
81+ git_dir_1 = git_dir (tempdir_factory )
82+ git_dir_2 = git_dir (tempdir_factory )
83+ with cwd (git_dir_2 ):
84+ cmd_output ('git' , 'commit' , '--allow-empty' , '-m' , 'init!' )
85+ with cwd (git_dir_1 ):
86+ cmd_output ('git' , 'submodule' , 'add' , git_dir_2 , 'sub' )
87+ with cwd (os .path .join (git_dir_1 , 'sub' )):
88+ _make_conflict ()
89+ yield
90+
91+
7492@pytest .yield_fixture (scope = 'session' , autouse = True )
7593def dont_write_to_home_directory ():
7694 """pre_commit.store.Store will by default write to the home directory
0 commit comments