[scm] Handle empty .gitmodules file

R=yiwzhang@google.com

Bug: 372697507
Change-Id: I6ac59b762fedd328d23dcfb4f8ef328f96eb36a7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5923135
Reviewed-by: Yiwei Zhang <yiwzhang@google.com>
Commit-Queue: Josip Sokcevic <sokcevic@chromium.org>
changes/35/5923135/3
Josip Sokcevic 7 months ago committed by LUCI CQ
parent da85282643
commit e0c47c138a

@ -1113,9 +1113,13 @@ class GIT(object):
"""
if not os.path.exists(os.path.join(repo_root, '.gitmodules')):
return []
config_output = GIT.Capture(
['config', '--file', '.gitmodules', '--get-regexp', 'path'],
cwd=repo_root)
try:
config_output = GIT.Capture(
['config', '--file', '.gitmodules', '--get-regexp', 'path'],
cwd=repo_root)
except subprocess2.CalledProcessError:
# Git exits with 1 if no config matches are found.
return []
assert isinstance(config_output, str)
return [
line.split()[-1].replace('/', os.path.sep)

@ -149,6 +149,15 @@ class GitWrapperTestCase(unittest.TestCase):
def testListSubmodules_missing(self):
self.assertEqual(scm.GIT.ListSubmodules('root'), [])
@mock.patch('os.path.exists', return_value=True)
@mock.patch('scm.GIT.Capture')
def testListSubmodules_empty(self, mockCapture, *_mock):
mockCapture.side_effect = [
subprocess2.CalledProcessError(1, '', '', '', ''),
]
self.assertEqual(scm.GIT.ListSubmodules('root'), [])
class RealGitTest(fake_repos.FakeReposTestBase):
def setUp(self):

Loading…
Cancel
Save