Omit local_manifest groups from superproject override.
When we create superproject_override.xml, do not include projects that
are present from local_manifests/*. Such projects are fully under the
control of the local_manifests/ file.
Bug: b/238934278
Test: manual, ./run_tests
Change-Id: I40382ceb82d9cf7b8dc7b5f2abed3f6d4d80017e
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/340877
Tested-by: Xin Li <delphij@google.com>
Reviewed-by: Xin Li <delphij@google.com>
Reviewed-by: Sam Saccone 🐐 <samccone@google.com>
diff --git a/tests/test_manifest_xml.py b/tests/test_manifest_xml.py
index 85c2073..48403c0 100644
--- a/tests/test_manifest_xml.py
+++ b/tests/test_manifest_xml.py
@@ -252,6 +252,37 @@
'<manifest></manifest>')
self.assertEqual(manifest.ToDict(), {})
+ def test_toxml_omit_local(self):
+ """Does not include local_manifests projects when omit_local=True."""
+ manifest = self.getXmlManifest(
+ '<?xml version="1.0" encoding="UTF-8"?><manifest>'
+ '<remote name="a" fetch=".."/><default remote="a" revision="r"/>'
+ '<project name="p" groups="local::me"/>'
+ '<project name="q"/>'
+ '<project name="r" groups="keep"/>'
+ '</manifest>')
+ self.assertEqual(
+ manifest.ToXml(omit_local=True).toxml(),
+ '<?xml version="1.0" ?><manifest>'
+ '<remote name="a" fetch=".."/><default remote="a" revision="r"/>'
+ '<project name="q"/><project name="r" groups="keep"/></manifest>')
+
+ def test_toxml_with_local(self):
+ """Does include local_manifests projects when omit_local=False."""
+ manifest = self.getXmlManifest(
+ '<?xml version="1.0" encoding="UTF-8"?><manifest>'
+ '<remote name="a" fetch=".."/><default remote="a" revision="r"/>'
+ '<project name="p" groups="local::me"/>'
+ '<project name="q"/>'
+ '<project name="r" groups="keep"/>'
+ '</manifest>')
+ self.assertEqual(
+ manifest.ToXml(omit_local=False).toxml(),
+ '<?xml version="1.0" ?><manifest>'
+ '<remote name="a" fetch=".."/><default remote="a" revision="r"/>'
+ '<project name="p" groups="local::me"/>'
+ '<project name="q"/><project name="r" groups="keep"/></manifest>')
+
def test_repo_hooks(self):
"""Check repo-hooks settings."""
manifest = self.getXmlManifest("""