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>
diff --git a/git_superproject.py b/git_superproject.py index 04e2078..3168d9f 100644 --- a/git_superproject.py +++ b/git_superproject.py
@@ -28,7 +28,6 @@ from git_command import GitCommand from git_refs import R_HEADS -from wrapper import Wrapper _SUPERPROJECT_GIT_NAME = 'superproject.git' _SUPERPROJECT_MANIFEST_NAME = 'superproject_override.xml' @@ -283,7 +282,7 @@ projects_missing_commit_ids.append(path) if projects_missing_commit_ids: 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 manifest_path = self._WriteManfiestFile()
diff --git a/manifest_xml.py b/manifest_xml.py index e1d630b..9cbdcd1 100644 --- a/manifest_xml.py +++ b/manifest_xml.py
@@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import collections import itertools import os import platform @@ -27,11 +28,15 @@ from project import RemoteSpec, Project, MetaProject from error import (ManifestParseError, ManifestInvalidPathError, ManifestInvalidRevisionError) +from wrapper import Wrapper MANIFEST_FILE_NAME = 'manifest.xml' LOCAL_MANIFEST_NAME = 'local_manifest.xml' 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. urllib.parse.uses_relative.extend([ 'ssh', @@ -479,10 +484,10 @@ e.setAttribute('remote', remoteName) root.appendChild(e) - if self._contactinfo: + if self._contactinfo.bugurl != Wrapper().BUG_URL: root.appendChild(doc.createTextNode('')) e = doc.createElement('contactinfo') - e.setAttribute('bugurl', self._contactinfo['bugurl']) + e.setAttribute('bugurl', self._contactinfo.bugurl) root.appendChild(e) return doc @@ -646,7 +651,7 @@ self._default = None self._repo_hooks_project = None self._superproject = {} - self._contactinfo = {} + self._contactinfo = ContactInfo(Wrapper().BUG_URL) self._notice = None self.branch = None self._manifest_server = None @@ -892,7 +897,8 @@ if node.nodeName == 'contactinfo': bugurl = self._reqatt(node, 'bugurl') # This element can be repeated, later entries will clobber earlier ones. - self._contactinfo['bugurl'] = bugurl + self._contactinfo = ContactInfo(bugurl) + if node.nodeName == 'remove-project': name = self._reqatt(node, 'name')
diff --git a/tests/test_manifest_xml.py b/tests/test_manifest_xml.py index 6095c72..99848e5 100644 --- a/tests/test_manifest_xml.py +++ b/tests/test_manifest_xml.py
@@ -576,7 +576,7 @@ <contactinfo bugurl="{bugurl}"/> </manifest> """) - self.assertEqual(manifest.contactinfo['bugurl'], bugurl) + self.assertEqual(manifest.contactinfo.bugurl, bugurl) self.assertEqual( manifest.ToXml().toxml(), '<?xml version="1.0" ?><manifest>'