@@ -373,6 +373,41 @@ def test_conditional_includes_from_branch_name_error(self, rw_dir):
373373 assert not config ._has_includes ()
374374 assert config ._included_paths () == []
375375
376+ @with_rw_directory
377+ def test_conditional_includes_remote_url (self , rw_dir ):
378+ # Initiate mocked repository.
379+ repo = mock .Mock ()
380+ repo .remotes = [mock .Mock (url = "https://github.com/foo/repo" )]
381+
382+ # Initiate config files.
383+ path1 = osp .join (rw_dir , "config1" )
384+ path2 = osp .join (rw_dir , "config2" )
385+ template = '[includeIf "hasconfig:remote.*.url:{}"]\n path={}\n '
386+
387+ # Ensure that config with hasconfig and full url is correct.
388+ with open (path1 , "w" ) as stream :
389+ stream .write (template .format ("https://github.com/foo/repo" , path2 ))
390+
391+ with GitConfigParser (path1 , repo = repo ) as config :
392+ assert config ._has_includes ()
393+ assert config ._included_paths () == [("path" , path2 )]
394+
395+ # Ensure that config with hasconfig and incorrect url is incorrect.
396+ with open (path1 , "w" ) as stream :
397+ stream .write (template .format ("incorrect" , path2 ))
398+
399+ with GitConfigParser (path1 , repo = repo ) as config :
400+ assert not config ._has_includes ()
401+ assert config ._included_paths () == []
402+
403+ # Ensure that config with hasconfig and url using glob pattern is correct.
404+ with open (path1 , "w" ) as stream :
405+ stream .write (template .format ("**/**github.com*/**" , path2 ))
406+
407+ with GitConfigParser (path1 , repo = repo ) as config :
408+ assert config ._has_includes ()
409+ assert config ._included_paths () == [("path" , path2 )]
410+
376411 def test_rename (self ):
377412 file_obj = self ._to_memcache (fixture_path ("git_config" ))
378413 with GitConfigParser (file_obj , read_only = False , merge_includes = False ) as cw :
0 commit comments