File tree 2 files changed +24
-1
lines changed
2 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -493,7 +493,13 @@ def _included_paths(self):
493
493
paths += self .items (section )
494
494
495
495
elif keyword == "onbranch" :
496
- if fnmatch .fnmatchcase (self ._repo .active_branch .name , value ):
496
+ try :
497
+ branch_name = self ._repo .active_branch .name
498
+ except TypeError :
499
+ # Ignore section if active branch cannot be retrieved.
500
+ continue
501
+
502
+ if fnmatch .fnmatchcase (branch_name , value ):
497
503
paths += self .items (section )
498
504
499
505
return paths
Original file line number Diff line number Diff line change @@ -345,6 +345,23 @@ def test_conditional_includes_from_branch_name(self, rw_dir):
345
345
assert config ._has_includes ()
346
346
assert config ._included_paths () == [("path" , path2 )]
347
347
348
+ @with_rw_directory
349
+ def test_conditional_includes_from_branch_name_error (self , rw_dir ):
350
+ # Initiate mocked repository to raise an error if HEAD is detached.
351
+ repo = mock .Mock ()
352
+ type(repo ).active_branch = mock .PropertyMock (side_effect = TypeError )
353
+
354
+ # Initiate config file.
355
+ path1 = osp .join (rw_dir , "config1" )
356
+
357
+ # Ensure that config is ignored when active branch cannot be found.
358
+ with open (path1 , "w" ) as stream :
359
+ stream .write ("[includeIf \" onbranch:foo\" ]\n path=/path\n " )
360
+
361
+ with GitConfigParser (path1 , repo = repo ) as config :
362
+ assert not config ._has_includes ()
363
+ assert config ._included_paths () == []
364
+
348
365
def test_rename (self ):
349
366
file_obj = self ._to_memcache (fixture_path ('git_config' ))
350
367
with GitConfigParser (file_obj , read_only = False , merge_includes = False ) as cw :
You can’t perform that action at this time.
0 commit comments