[libvirt] [PATCH 3/4] schema: Introduce schema for the news.xml file

Peter Krempa pkrempa at redhat.com
Tue Mar 28 11:58:58 UTC 2017


Since this file gets changed (and broken) rather often, introduce a
schema file so that the test suite can validate it.
---
 docs/news.xml         |  2 ++
 docs/schemas/news.rng | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/virschematest.c |  2 ++
 3 files changed, 77 insertions(+)
 create mode 100644 docs/schemas/news.rng

diff --git a/docs/news.xml b/docs/news.xml
index 024b659e8..c2a2917c1 100644
--- a/docs/news.xml
+++ b/docs/news.xml
@@ -18,6 +18,8 @@
      each <section> tag is required to contain at least one <change> tag.

      Lines should be kept under 80 columns, and should not exceed 100 columns.
+
+     This file is validated against docs/news.rng schema.
      -->

 <libvirt>
diff --git a/docs/schemas/news.rng b/docs/schemas/news.rng
new file mode 100644
index 000000000..94a6870c1
--- /dev/null
+++ b/docs/schemas/news.rng
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+  <start>
+    <ref name="libvirt"/>
+  </start>
+
+  <define name="libvirt">
+    <element name="libvirt">
+      <oneOrMore>
+        <ref name="release"/>
+      </oneOrMore>
+    </element>
+  </define>
+
+  <define name="release">
+    <element name="release">
+      <attribute name="version">
+        <data type="string">
+          <param name="pattern">v[0-9]+\.[0-9]+\.[0-9]+</param>
+        </data>
+      </attribute>
+      <attribute name="date">
+        <data type="string">
+          <param name="pattern">[0-9]{4}-[0-9]{2}-[0-9]{2}|unreleased</param>
+        </data>
+      </attribute>
+      <oneOrMore>
+        <ref name="section"/>
+      </oneOrMore>
+    </element>
+  </define>
+
+  <define name="section">
+    <element name="section">
+      <attribute name="title">
+        <data type="string"/>
+      </attribute>
+      <oneOrMore>
+        <ref name="change"/>
+      </oneOrMore>
+    </element>
+  </define>
+
+  <define name="change">
+    <element name="change">
+      <element name="summary">
+        <choice>
+          <data type="string">
+            <param name="pattern">\n[^\n]+\n +</param>
+          </data>
+          <empty/>
+        </choice>
+      </element>
+      <optional>
+        <element name="description">
+          <ref name="description"/>
+        </element>
+      </optional>
+    </element>
+  </define>
+
+  <define name="description">
+    <oneOrMore>
+      <choice>
+        <text/>
+        <element name="code">
+          <text/>
+        </element>
+      </choice>
+    </oneOrMore>
+  </define>
+
+</grammar>
diff --git a/tests/virschematest.c b/tests/virschematest.c
index beefabc96..e0e5872db 100644
--- a/tests/virschematest.c
+++ b/tests/virschematest.c
@@ -237,6 +237,8 @@ mymain(void)
     DO_TEST("storagevol.rng", "storagevolxml2xmlin", "storagevolxml2xmlout",
             "storagevolschemadata");

+    DO_TEST_FILE("news.rng", "../docs/news.xml");
+
     return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
 }

-- 
2.12.1




More information about the libvir-list mailing list