mirror of
https://github.com/Dev-Wiki/git-repo.git
synced 2025-09-26 01:42:13 +08:00
manifest_xml: use Superproject to hold XML content
Always create Superproject when there is a <superproject> tag, and have it hold the XML content, similar to how other manifest elements are handled. This also adds SetQuiet and SetPrintMessages to Superproject consistent with manifest.SetUseLocalManifests. Change-Id: I522bf3da542006575799f0640c67f7052704f266 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/334641 Reviewed-by: Mike Frysinger <vapier@google.com> Reviewed-by: Raman Tenneti <rtenneti@google.com> Tested-by: LaMont Jones <lamontjones@google.com>
This commit is contained in:
@@ -68,8 +68,10 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
<project path="art" name="platform/art" groups="notdefault,platform-""" + self.platform + """
|
||||
" /></manifest>
|
||||
""")
|
||||
self._superproject = git_superproject.Superproject(manifest, self.repodir,
|
||||
self.git_event_log)
|
||||
self._superproject = git_superproject.Superproject(
|
||||
manifest, name='superproject',
|
||||
remote=manifest.remotes.get('default-remote').ToRemoteSpec('superproject'),
|
||||
revision='refs/heads/main')
|
||||
|
||||
def tearDown(self):
|
||||
"""Tear down superproject every time."""
|
||||
@@ -125,12 +127,7 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
<manifest>
|
||||
</manifest>
|
||||
""")
|
||||
superproject = git_superproject.Superproject(manifest, self.repodir, self.git_event_log)
|
||||
# Test that exit condition is false when there is no superproject tag.
|
||||
sync_result = superproject.Sync()
|
||||
self.assertFalse(sync_result.success)
|
||||
self.assertFalse(sync_result.fatal)
|
||||
self.verifyErrorEvent()
|
||||
self.assertIsNone(manifest.superproject)
|
||||
|
||||
def test_superproject_get_superproject_invalid_url(self):
|
||||
"""Test with an invalid url."""
|
||||
@@ -141,8 +138,11 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
<superproject name="superproject"/>
|
||||
</manifest>
|
||||
""")
|
||||
superproject = git_superproject.Superproject(manifest, self.repodir, self.git_event_log)
|
||||
sync_result = superproject.Sync()
|
||||
superproject = git_superproject.Superproject(
|
||||
manifest, name='superproject',
|
||||
remote=manifest.remotes.get('test-remote').ToRemoteSpec('superproject'),
|
||||
revision='refs/heads/main')
|
||||
sync_result = superproject.Sync(self.git_event_log)
|
||||
self.assertFalse(sync_result.success)
|
||||
self.assertTrue(sync_result.fatal)
|
||||
|
||||
@@ -155,17 +155,19 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
<superproject name="superproject"/>
|
||||
</manifest>
|
||||
""")
|
||||
self._superproject = git_superproject.Superproject(manifest, self.repodir,
|
||||
self.git_event_log)
|
||||
self._superproject = git_superproject.Superproject(
|
||||
manifest, name='superproject',
|
||||
remote=manifest.remotes.get('test-remote').ToRemoteSpec('superproject'),
|
||||
revision='refs/heads/main')
|
||||
with mock.patch.object(self._superproject, '_branch', 'junk'):
|
||||
sync_result = self._superproject.Sync()
|
||||
sync_result = self._superproject.Sync(self.git_event_log)
|
||||
self.assertFalse(sync_result.success)
|
||||
self.assertTrue(sync_result.fatal)
|
||||
|
||||
def test_superproject_get_superproject_mock_init(self):
|
||||
"""Test with _Init failing."""
|
||||
with mock.patch.object(self._superproject, '_Init', return_value=False):
|
||||
sync_result = self._superproject.Sync()
|
||||
sync_result = self._superproject.Sync(self.git_event_log)
|
||||
self.assertFalse(sync_result.success)
|
||||
self.assertTrue(sync_result.fatal)
|
||||
|
||||
@@ -174,7 +176,7 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
with mock.patch.object(self._superproject, '_Init', return_value=True):
|
||||
os.mkdir(self._superproject._superproject_path)
|
||||
with mock.patch.object(self._superproject, '_Fetch', return_value=False):
|
||||
sync_result = self._superproject.Sync()
|
||||
sync_result = self._superproject.Sync(self.git_event_log)
|
||||
self.assertFalse(sync_result.success)
|
||||
self.assertTrue(sync_result.fatal)
|
||||
|
||||
@@ -230,7 +232,7 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
return_value=data):
|
||||
# Create temporary directory so that it can write the file.
|
||||
os.mkdir(self._superproject._superproject_path)
|
||||
update_result = self._superproject.UpdateProjectsRevisionId(projects)
|
||||
update_result = self._superproject.UpdateProjectsRevisionId(projects, self.git_event_log)
|
||||
self.assertIsNotNone(update_result.manifest_path)
|
||||
self.assertFalse(update_result.fatal)
|
||||
with open(update_result.manifest_path, 'r') as fp:
|
||||
@@ -256,22 +258,13 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
</manifest>
|
||||
""")
|
||||
self.maxDiff = None
|
||||
self._superproject = git_superproject.Superproject(manifest, self.repodir,
|
||||
self.git_event_log)
|
||||
self.assertEqual(len(self._superproject._manifest.projects), 1)
|
||||
projects = self._superproject._manifest.projects
|
||||
project = projects[0]
|
||||
project.SetRevisionId('ABCDEF')
|
||||
update_result = self._superproject.UpdateProjectsRevisionId(projects)
|
||||
self.assertIsNone(update_result.manifest_path)
|
||||
self.assertFalse(update_result.fatal)
|
||||
self.verifyErrorEvent()
|
||||
self.assertIsNone(manifest.superproject)
|
||||
self.assertEqual(
|
||||
sort_attributes(manifest.ToXml().toxml()),
|
||||
'<?xml version="1.0" ?><manifest>'
|
||||
'<remote fetch="http://localhost" name="default-remote"/>'
|
||||
'<default remote="default-remote" revision="refs/heads/main"/>'
|
||||
'<project name="test-name" revision="ABCDEF" upstream="refs/heads/main"/>'
|
||||
'<project name="test-name"/>'
|
||||
'</manifest>')
|
||||
|
||||
def test_superproject_update_project_revision_id_from_local_manifest_group(self):
|
||||
@@ -290,8 +283,10 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
" /></manifest>
|
||||
""")
|
||||
self.maxDiff = None
|
||||
self._superproject = git_superproject.Superproject(manifest, self.repodir,
|
||||
self.git_event_log)
|
||||
self._superproject = git_superproject.Superproject(
|
||||
manifest, name='superproject',
|
||||
remote=manifest.remotes.get('default-remote').ToRemoteSpec('superproject'),
|
||||
revision='refs/heads/main')
|
||||
self.assertEqual(len(self._superproject._manifest.projects), 2)
|
||||
projects = self._superproject._manifest.projects
|
||||
data = ('160000 commit 2c2724cb36cd5a9cec6c852c681efc3b7c6b86ea\tart\x00')
|
||||
@@ -302,7 +297,7 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
return_value=data):
|
||||
# Create temporary directory so that it can write the file.
|
||||
os.mkdir(self._superproject._superproject_path)
|
||||
update_result = self._superproject.UpdateProjectsRevisionId(projects)
|
||||
update_result = self._superproject.UpdateProjectsRevisionId(projects, self.git_event_log)
|
||||
self.assertIsNotNone(update_result.manifest_path)
|
||||
self.assertFalse(update_result.fatal)
|
||||
with open(update_result.manifest_path, 'r') as fp:
|
||||
@@ -337,8 +332,10 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
" /></manifest>
|
||||
""")
|
||||
self.maxDiff = None
|
||||
self._superproject = git_superproject.Superproject(manifest, self.repodir,
|
||||
self.git_event_log)
|
||||
self._superproject = git_superproject.Superproject(
|
||||
manifest, name='superproject',
|
||||
remote=manifest.remotes.get('default-remote').ToRemoteSpec('superproject'),
|
||||
revision='refs/heads/main')
|
||||
self.assertEqual(len(self._superproject._manifest.projects), 3)
|
||||
projects = self._superproject._manifest.projects
|
||||
data = ('160000 commit 2c2724cb36cd5a9cec6c852c681efc3b7c6b86ea\tart\x00'
|
||||
@@ -350,7 +347,7 @@ class SuperprojectTestCase(unittest.TestCase):
|
||||
return_value=data):
|
||||
# Create temporary directory so that it can write the file.
|
||||
os.mkdir(self._superproject._superproject_path)
|
||||
update_result = self._superproject.UpdateProjectsRevisionId(projects)
|
||||
update_result = self._superproject.UpdateProjectsRevisionId(projects, self.git_event_log)
|
||||
self.assertIsNotNone(update_result.manifest_path)
|
||||
self.assertFalse(update_result.fatal)
|
||||
with open(update_result.manifest_path, 'r') as fp:
|
||||
|
@@ -289,8 +289,8 @@ class XmlManifestTests(ManifestParseTestCase):
|
||||
<x-custom-tag>X tags are always ignored</x-custom-tag>
|
||||
</manifest>
|
||||
""")
|
||||
self.assertEqual(manifest.superproject['name'], 'superproject')
|
||||
self.assertEqual(manifest.superproject['remote'].name, 'test-remote')
|
||||
self.assertEqual(manifest.superproject.name, 'superproject')
|
||||
self.assertEqual(manifest.superproject.remote.name, 'test-remote')
|
||||
self.assertEqual(
|
||||
sort_attributes(manifest.ToXml().toxml()),
|
||||
'<?xml version="1.0" ?><manifest>'
|
||||
@@ -569,10 +569,10 @@ class SuperProjectElementTests(ManifestParseTestCase):
|
||||
<superproject name="superproject"/>
|
||||
</manifest>
|
||||
""")
|
||||
self.assertEqual(manifest.superproject['name'], 'superproject')
|
||||
self.assertEqual(manifest.superproject['remote'].name, 'test-remote')
|
||||
self.assertEqual(manifest.superproject['remote'].url, 'http://localhost/superproject')
|
||||
self.assertEqual(manifest.superproject['revision'], 'refs/heads/main')
|
||||
self.assertEqual(manifest.superproject.name, 'superproject')
|
||||
self.assertEqual(manifest.superproject.remote.name, 'test-remote')
|
||||
self.assertEqual(manifest.superproject.remote.url, 'http://localhost/superproject')
|
||||
self.assertEqual(manifest.superproject.revision, 'refs/heads/main')
|
||||
self.assertEqual(
|
||||
sort_attributes(manifest.ToXml().toxml()),
|
||||
'<?xml version="1.0" ?><manifest>'
|
||||
@@ -591,10 +591,10 @@ class SuperProjectElementTests(ManifestParseTestCase):
|
||||
<superproject name="superproject" revision="refs/heads/stable" />
|
||||
</manifest>
|
||||
""")
|
||||
self.assertEqual(manifest.superproject['name'], 'superproject')
|
||||
self.assertEqual(manifest.superproject['remote'].name, 'test-remote')
|
||||
self.assertEqual(manifest.superproject['remote'].url, 'http://localhost/superproject')
|
||||
self.assertEqual(manifest.superproject['revision'], 'refs/heads/stable')
|
||||
self.assertEqual(manifest.superproject.name, 'superproject')
|
||||
self.assertEqual(manifest.superproject.remote.name, 'test-remote')
|
||||
self.assertEqual(manifest.superproject.remote.url, 'http://localhost/superproject')
|
||||
self.assertEqual(manifest.superproject.revision, 'refs/heads/stable')
|
||||
self.assertEqual(
|
||||
sort_attributes(manifest.ToXml().toxml()),
|
||||
'<?xml version="1.0" ?><manifest>'
|
||||
@@ -613,10 +613,10 @@ class SuperProjectElementTests(ManifestParseTestCase):
|
||||
<superproject name="superproject" revision="refs/heads/stable" />
|
||||
</manifest>
|
||||
""")
|
||||
self.assertEqual(manifest.superproject['name'], 'superproject')
|
||||
self.assertEqual(manifest.superproject['remote'].name, 'test-remote')
|
||||
self.assertEqual(manifest.superproject['remote'].url, 'http://localhost/superproject')
|
||||
self.assertEqual(manifest.superproject['revision'], 'refs/heads/stable')
|
||||
self.assertEqual(manifest.superproject.name, 'superproject')
|
||||
self.assertEqual(manifest.superproject.remote.name, 'test-remote')
|
||||
self.assertEqual(manifest.superproject.remote.url, 'http://localhost/superproject')
|
||||
self.assertEqual(manifest.superproject.revision, 'refs/heads/stable')
|
||||
self.assertEqual(
|
||||
sort_attributes(manifest.ToXml().toxml()),
|
||||
'<?xml version="1.0" ?><manifest>'
|
||||
@@ -635,10 +635,10 @@ class SuperProjectElementTests(ManifestParseTestCase):
|
||||
<superproject name="superproject" revision="refs/heads/stable" />
|
||||
</manifest>
|
||||
""")
|
||||
self.assertEqual(manifest.superproject['name'], 'superproject')
|
||||
self.assertEqual(manifest.superproject['remote'].name, 'test-remote')
|
||||
self.assertEqual(manifest.superproject['remote'].url, 'http://localhost/superproject')
|
||||
self.assertEqual(manifest.superproject['revision'], 'refs/heads/stable')
|
||||
self.assertEqual(manifest.superproject.name, 'superproject')
|
||||
self.assertEqual(manifest.superproject.remote.name, 'test-remote')
|
||||
self.assertEqual(manifest.superproject.remote.url, 'http://localhost/superproject')
|
||||
self.assertEqual(manifest.superproject.revision, 'refs/heads/stable')
|
||||
self.assertEqual(
|
||||
sort_attributes(manifest.ToXml().toxml()),
|
||||
'<?xml version="1.0" ?><manifest>'
|
||||
@@ -657,10 +657,10 @@ class SuperProjectElementTests(ManifestParseTestCase):
|
||||
<superproject name="platform/superproject" remote="superproject-remote"/>
|
||||
</manifest>
|
||||
""")
|
||||
self.assertEqual(manifest.superproject['name'], 'platform/superproject')
|
||||
self.assertEqual(manifest.superproject['remote'].name, 'superproject-remote')
|
||||
self.assertEqual(manifest.superproject['remote'].url, 'http://localhost/platform/superproject')
|
||||
self.assertEqual(manifest.superproject['revision'], 'refs/heads/main')
|
||||
self.assertEqual(manifest.superproject.name, 'platform/superproject')
|
||||
self.assertEqual(manifest.superproject.remote.name, 'superproject-remote')
|
||||
self.assertEqual(manifest.superproject.remote.url, 'http://localhost/platform/superproject')
|
||||
self.assertEqual(manifest.superproject.revision, 'refs/heads/main')
|
||||
self.assertEqual(
|
||||
sort_attributes(manifest.ToXml().toxml()),
|
||||
'<?xml version="1.0" ?><manifest>'
|
||||
@@ -679,9 +679,9 @@ class SuperProjectElementTests(ManifestParseTestCase):
|
||||
<superproject name="superproject" remote="default-remote"/>
|
||||
</manifest>
|
||||
""")
|
||||
self.assertEqual(manifest.superproject['name'], 'superproject')
|
||||
self.assertEqual(manifest.superproject['remote'].name, 'default-remote')
|
||||
self.assertEqual(manifest.superproject['revision'], 'refs/heads/main')
|
||||
self.assertEqual(manifest.superproject.name, 'superproject')
|
||||
self.assertEqual(manifest.superproject.remote.name, 'default-remote')
|
||||
self.assertEqual(manifest.superproject.revision, 'refs/heads/main')
|
||||
self.assertEqual(
|
||||
sort_attributes(manifest.ToXml().toxml()),
|
||||
'<?xml version="1.0" ?><manifest>'
|
||||
|
Reference in New Issue
Block a user