commit:     9e27e7345e303a024ab58aa197727c5620843b12
Author:     Anna “CyberTailor” <cyber <AT> sysrq <DOT> in>
AuthorDate: Thu Jan 18 08:36:57 2024 +0000
Commit:     Sebastian Pipping <sping <AT> gentoo <DOT> org>
CommitDate: Sun Mar 31 00:09:56 2024 +0000
URL:        https://gitweb.gentoo.org/proj/metagen.git/commit/?id=9e27e734

Add real unit tests

Signed-off-by: Sebastian Pipping <sping <AT> gentoo.org>

 metagen/meta_unittest.py   | 24 -------------------
 metagen/metagenerator.py   | 19 ---------------
 metagen/tests/__init__.py  |  0
 metagen/tests/test_meta.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 60 insertions(+), 43 deletions(-)

diff --git a/metagen/meta_unittest.py b/metagen/meta_unittest.py
deleted file mode 100644
index d54236a..0000000
--- a/metagen/meta_unittest.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/python3
-
-from .metagenerator import MyMetadata
-
-
-def test1():
-    """1 maintainer"""
-    metadata = MyMetadata()
-    metadata.set_maintainer(["<pythonh...@gentoo.org>"], 
-                            ["Rob Cakebread"], 
-                            ["Maintainer description."],
-                            ["person"])
-    return metadata 
-    
-def test2():
-    """2 maintainers, longdesc"""
-    metadata = MyMetadata()
-    metadata.set_maintainer(["go...@gentoo.org", "pythonh...@gentoo.org"],
-                            ["Goo Fi", "Rob Cakebread"],
-                            ["Maintainer one.", "Maintainer two"],
-                            ["person", "person"])
-    metadata.set_longdescription("This packages does X Y and Z.")
-    return metadata 
-

diff --git a/metagen/metagenerator.py b/metagen/metagenerator.py
old mode 100755
new mode 100644
index 862df8c..d0403fa
--- a/metagen/metagenerator.py
+++ b/metagen/metagenerator.py
@@ -82,22 +82,3 @@ class MyMetadata:
         # - to make pkgcheck stop from warning about PkgMetadataXmlIndentation
         return xml_text.replace('<!DOCTYPE pkgmetadata\n  SYSTEM',
                                 '<!DOCTYPE pkgmetadata SYSTEM')
-
-
-def do_tests():
-    from metagen import meta_unittest
-    fails = 0
-    for func in dir(meta_unittest):
-        if func[0:4] == "test":
-            try:
-                exec("print(meta_unittest.%s.__name__ + ':', end='')" % func)
-                exec("print(meta_unittest.%s.__doc__)" % func)
-                exec("print(meta_unittest.%s())" % func)
-            except:
-                fails += 1
-                print("Test %s failed:" % func)
-                print(sys.exc_info()[0], sys.exc_info()[1])
-    print("%s tests failed." % fails)
-
-if __name__ == "__main__":
-    do_tests()

diff --git a/metagen/tests/__init__.py b/metagen/tests/__init__.py
new file mode 100644
index 0000000..e69de29

diff --git a/metagen/tests/test_meta.py b/metagen/tests/test_meta.py
new file mode 100644
index 0000000..e692eb5
--- /dev/null
+++ b/metagen/tests/test_meta.py
@@ -0,0 +1,60 @@
+import textwrap
+import unittest
+
+from metagen.metagenerator import MyMetadata
+
+
+class TestMyMetadata(unittest.TestCase):
+
+    maxDiff = 1500
+
+    def test_simple(self):
+        expected = textwrap.dedent(
+            """
+            <?xml version="1.0" encoding="UTF-8"?>
+            <!DOCTYPE pkgmetadata SYSTEM 
'https://www.gentoo.org/dtd/metadata.dtd'>
+            <pkgmetadata>
+            \t<maintainer type="person">
+            \t\t<email>pythonh...@gentoo.org</email>
+            \t\t<name>Rob Cakebread</name>
+            \t\t<description>Maintainer description.</description>
+            \t</maintainer>
+            </pkgmetadata>
+            """.strip("\n")
+        )
+
+        metadata = MyMetadata()
+        metadata.set_maintainer(["pythonh...@gentoo.org"],
+                                ["Rob Cakebread"],
+                                ["Maintainer description."],
+                                ["person"])
+        self.assertEqual(str(metadata), expected)
+
+    def test_long(self):
+        expected = textwrap.dedent(
+            """
+            <?xml version="1.0" encoding="UTF-8"?>
+            <!DOCTYPE pkgmetadata SYSTEM 
'https://www.gentoo.org/dtd/metadata.dtd'>
+            <pkgmetadata>
+            \t<maintainer type="person">
+            \t\t<email>go...@gentoo.org</email>
+            \t\t<name>Goo Fi</name>
+            \t\t<description>Maintainer one.</description>
+            \t</maintainer>
+            \t<maintainer type="person">
+            \t\t<email>pythonh...@gentoo.org</email>
+            \t\t<name>Rob Cakebread</name>
+            \t\t<description>Maintainer two</description>
+            \t</maintainer>
+            \t<longdescription>This packages does X Y and Z.</longdescription>
+            </pkgmetadata>
+            """.strip("\n")
+        )
+
+        metadata = MyMetadata()
+        metadata.set_maintainer(["go...@gentoo.org", "pythonh...@gentoo.org"],
+                                ["Goo Fi", "Rob Cakebread"],
+                                ["Maintainer one.", "Maintainer two"],
+                                ["person", "person"])
+        metadata.set_longdescription("This packages does X Y and Z.")
+        self.assertEqual(str(metadata), expected)

Reply via email to