superproject: Use bugurl from contactinfo in the missing commits error message.

+ In XmlManifest._Unload set 'bugurl' to Wrapper().BUG_URL.
+ contactinfo returns a namedtuple.
+ bug_url can be accessed as self._manifest.contactinfo.bugurl.

Tested the code with the following commands.

$ ./run_tests -v

Added contactinfo tag to default.xml and verified that bugurl is used.

Bug: [google internal] b/186220520.
Change-Id: Iaafd6465e072b2e47a0a0b548bf6cb608a0b0a04
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/306342
Tested-by: Raman Tenneti <rtenneti@google.com>
Reviewed-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
Raman Tenneti 2021-05-12 12:00:31 -07:00
parent 339f2df1dd
commit 993af5e136
3 changed files with 12 additions and 7 deletions

View File

@ -28,7 +28,6 @@ import sys
from git_command import GitCommand from git_command import GitCommand
from git_refs import R_HEADS from git_refs import R_HEADS
from wrapper import Wrapper
_SUPERPROJECT_GIT_NAME = 'superproject.git' _SUPERPROJECT_GIT_NAME = 'superproject.git'
_SUPERPROJECT_MANIFEST_NAME = 'superproject_override.xml' _SUPERPROJECT_MANIFEST_NAME = 'superproject_override.xml'
@ -283,7 +282,7 @@ class Superproject(object):
projects_missing_commit_ids.append(path) projects_missing_commit_ids.append(path)
if projects_missing_commit_ids: if projects_missing_commit_ids:
print('error: please file a bug using %s to report missing commit_ids for: %s' % print('error: please file a bug using %s to report missing commit_ids for: %s' %
(Wrapper().BUG_URL, projects_missing_commit_ids), file=sys.stderr) (self._manifest.contactinfo.bugurl, projects_missing_commit_ids), file=sys.stderr)
return None return None
manifest_path = self._WriteManfiestFile() manifest_path = self._WriteManfiestFile()

View File

@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import collections
import itertools import itertools
import os import os
import platform import platform
@ -27,11 +28,15 @@ import platform_utils
from project import RemoteSpec, Project, MetaProject from project import RemoteSpec, Project, MetaProject
from error import (ManifestParseError, ManifestInvalidPathError, from error import (ManifestParseError, ManifestInvalidPathError,
ManifestInvalidRevisionError) ManifestInvalidRevisionError)
from wrapper import Wrapper
MANIFEST_FILE_NAME = 'manifest.xml' MANIFEST_FILE_NAME = 'manifest.xml'
LOCAL_MANIFEST_NAME = 'local_manifest.xml' LOCAL_MANIFEST_NAME = 'local_manifest.xml'
LOCAL_MANIFESTS_DIR_NAME = 'local_manifests' LOCAL_MANIFESTS_DIR_NAME = 'local_manifests'
# ContactInfo has the self-registered bug url, supplied by the manifest authors.
ContactInfo = collections.namedtuple('ContactInfo', 'bugurl')
# urljoin gets confused if the scheme is not known. # urljoin gets confused if the scheme is not known.
urllib.parse.uses_relative.extend([ urllib.parse.uses_relative.extend([
'ssh', 'ssh',
@ -479,10 +484,10 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
e.setAttribute('remote', remoteName) e.setAttribute('remote', remoteName)
root.appendChild(e) root.appendChild(e)
if self._contactinfo: if self._contactinfo.bugurl != Wrapper().BUG_URL:
root.appendChild(doc.createTextNode('')) root.appendChild(doc.createTextNode(''))
e = doc.createElement('contactinfo') e = doc.createElement('contactinfo')
e.setAttribute('bugurl', self._contactinfo['bugurl']) e.setAttribute('bugurl', self._contactinfo.bugurl)
root.appendChild(e) root.appendChild(e)
return doc return doc
@ -646,7 +651,7 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
self._default = None self._default = None
self._repo_hooks_project = None self._repo_hooks_project = None
self._superproject = {} self._superproject = {}
self._contactinfo = {} self._contactinfo = ContactInfo(Wrapper().BUG_URL)
self._notice = None self._notice = None
self.branch = None self.branch = None
self._manifest_server = None self._manifest_server = None
@ -892,7 +897,8 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
if node.nodeName == 'contactinfo': if node.nodeName == 'contactinfo':
bugurl = self._reqatt(node, 'bugurl') bugurl = self._reqatt(node, 'bugurl')
# This element can be repeated, later entries will clobber earlier ones. # This element can be repeated, later entries will clobber earlier ones.
self._contactinfo['bugurl'] = bugurl self._contactinfo = ContactInfo(bugurl)
if node.nodeName == 'remove-project': if node.nodeName == 'remove-project':
name = self._reqatt(node, 'name') name = self._reqatt(node, 'name')

View File

@ -576,7 +576,7 @@ class ContactinfoElementTests(ManifestParseTestCase):
<contactinfo bugurl="{bugurl}"/> <contactinfo bugurl="{bugurl}"/>
</manifest> </manifest>
""") """)
self.assertEqual(manifest.contactinfo['bugurl'], bugurl) self.assertEqual(manifest.contactinfo.bugurl, bugurl)
self.assertEqual( self.assertEqual(
manifest.ToXml().toxml(), manifest.ToXml().toxml(),
'<?xml version="1.0" ?><manifest>' '<?xml version="1.0" ?><manifest>'