summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--manifest_xml.py5
-rw-r--r--tests/test_manifest_xml.py15
2 files changed, 19 insertions, 1 deletions
diff --git a/manifest_xml.py b/manifest_xml.py
index 03925176..0068ac6a 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -1266,7 +1266,10 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
1266 raise ManifestParseError("no root node in %s" % (path,)) 1266 raise ManifestParseError("no root node in %s" % (path,))
1267 1267
1268 for manifest in root.childNodes: 1268 for manifest in root.childNodes:
1269 if manifest.nodeName == "manifest": 1269 if (
1270 manifest.nodeType == manifest.ELEMENT_NODE
1271 and manifest.nodeName == "manifest"
1272 ):
1270 break 1273 break
1271 else: 1274 else:
1272 raise ManifestParseError("no <manifest> in %s" % (path,)) 1275 raise ManifestParseError("no <manifest> in %s" % (path,))
diff --git a/tests/test_manifest_xml.py b/tests/test_manifest_xml.py
index 1015e114..bd255dcc 100644
--- a/tests/test_manifest_xml.py
+++ b/tests/test_manifest_xml.py
@@ -385,6 +385,21 @@ class XmlManifestTests(ManifestParseTestCase):
385 "</manifest>", 385 "</manifest>",
386 ) 386 )
387 387
388 def test_parse_with_xml_doctype(self):
389 """Check correct manifest parse with DOCTYPE node present."""
390 manifest = self.getXmlManifest(
391 """<?xml version="1.0" encoding="UTF-8"?>
392<!DOCTYPE manifest []>
393<manifest>
394 <remote name="test-remote" fetch="http://localhost" />
395 <default remote="test-remote" revision="refs/heads/main" />
396 <project name="test-project" path="src/test-project"/>
397</manifest>
398"""
399 )
400 self.assertEqual(len(manifest.projects), 1)
401 self.assertEqual(manifest.projects[0].name, "test-project")
402
388 403
389class IncludeElementTests(ManifestParseTestCase): 404class IncludeElementTests(ManifestParseTestCase):
390 """Tests for <include>.""" 405 """Tests for <include>."""