Gentoo Archives: gentoo-commits

From: Jauhien Piatlicki <piatlicki@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/, tests/
Date: Sun, 30 Jun 2013 23:29:45
Message-Id: 1372635054.fa7c0ac5f53757d538483c449df7fd5ae233eb7e.jauhien@gentoo
1 commit: fa7c0ac5f53757d538483c449df7fd5ae233eb7e
2 Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com>
3 AuthorDate: Sun Jun 30 23:30:54 2013 +0000
4 Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> com>
5 CommitDate: Sun Jun 30 23:30:54 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=fa7c0ac5
7
8 g_sorcery/metadata: MetadataGenerator, generate
9
10 ---
11 g_sorcery/metadata.py | 7 ++++++-
12 tests/test_metadata.py | 43 +++++++++++++++++++++++++++++++++++++------
13 2 files changed, 43 insertions(+), 7 deletions(-)
14
15 diff --git a/g_sorcery/metadata.py b/g_sorcery/metadata.py
16 index 1ead07a..89d071e 100644
17 --- a/g_sorcery/metadata.py
18 +++ b/g_sorcery/metadata.py
19 @@ -19,7 +19,7 @@ import xml.dom.minidom as minidom
20 def prettify(tree):
21 rough_str = ET.tostring(tree, 'unicode')
22 reparsed = minidom.parseString(rough_str)
23 - return reparsed.toprettyxml()
24 + return reparsed.toprettyxml(encoding="utf-8").decode("utf-8")
25
26 class XMLGenerator:
27 def __init__(self, external, schema):
28 @@ -140,6 +140,11 @@ class MetadataGenerator:
29 description = self.db.get_package_description(package)
30 metadata = self.process(package, description)
31 metadata = self.postprocess(package, description, metadata)
32 + metadata = prettify(metadata)
33 + metadata = metadata.split('\n')
34 + if metadata[-1] == '':
35 + metadata = metadata[:-1]
36 + metadata.insert(1, '<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">')
37 return metadata
38
39 def process(self, package, description):
40
41 diff --git a/tests/test_metadata.py b/tests/test_metadata.py
42 index aeaac6d..2398733 100644
43 --- a/tests/test_metadata.py
44 +++ b/tests/test_metadata.py
45 @@ -15,7 +15,7 @@ import xml.etree.ElementTree as ET
46
47 import tempfile, unittest
48
49 -from g_sorcery import exceptions, metadata
50 +from g_sorcery import exceptions, metadata, package_db
51
52 class TestXMLGenerator(unittest.TestCase):
53 def setUp(self):
54 @@ -79,6 +79,23 @@ class DummyMetadataGenerator(metadata.MetadataGenerator):
55 def __init__(self, db):
56 super().__init__(db)
57
58 +package = package_db.Package("app-test", "test", "0.1")
59 +
60 +description = {'herd' : ['test'],
61 + 'maintainer' : [{'email' : 'test@×××××××.com', 'name' : 'testor'}],
62 + 'longdescription' : 'test metadata',
63 + 'use' : {'flag' : [('flag1', 'test flag1'), ('flag2', 'test flag2')]},
64 + 'upstream' : {'maintainer' : [{'name' : 'TEST'}], 'remote-id' : '001'}}
65 +
66 +class DummyDB(package_db.PackageDB):
67 + def __init__(self, directory, repo_uri="", db_uri=""):
68 + super().__init__(directory, repo_uri, db_uri)
69 +
70 + def generate_tree(self):
71 + self.add_category("app-test")
72 + self.add_package(package, description)
73 +
74 +
75 class TestMetadataGenerator(unittest.TestCase):
76 def setUp(self):
77 self.tempdir = tempfile.TemporaryDirectory()
78 @@ -88,19 +105,33 @@ class TestMetadataGenerator(unittest.TestCase):
79
80 def test_process(self):
81 mg = DummyMetadataGenerator(None)
82 - description = {'herd' : ['test'],
83 - 'maintainer' : [{'email' : 'test@×××××××.com', 'name' : 'testor'}],
84 - 'longdescription' : 'test metadata',
85 - 'use' : {'flag' : [('flag1', 'test flag1'), ('flag2', 'test flag2')]},
86 - 'upstream' : {'maintainer' : [{'name' : 'TEST'}], 'remote-id' : '001'}}
87 self.assertEqual(ET.tostring(mg.process(None, description), encoding='unicode'),
88 '<pkgmetadata><herd>test</herd><maintainer><email>test@×××××××.com</email>\
89 <name>testor</name></maintainer><longdescription>test metadata</longdescription><use>\
90 <flag name="flag1">test flag1</flag><flag name="flag2">test flag2</flag></use>\
91 <upstream><maintainer><name>TEST</name></maintainer><remote-id>001</remote-id></upstream></pkgmetadata>')
92
93 + def test_generate(self):
94 + db = DummyDB(self.tempdir.name)
95 + db.generate()
96 + mg = DummyMetadataGenerator(db)
97 + metadata = mg.generate(package)
98 + self.assertEqual(metadata,
99 + ['<?xml version="1.0" encoding="utf-8"?>',
100 + '<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">',
101 + '<pkgmetadata>', '\t<herd>test</herd>',
102 + '\t<maintainer>', '\t\t<email>test@×××××××.com</email>',
103 + '\t\t<name>testor</name>', '\t</maintainer>',
104 + '\t<longdescription>test metadata</longdescription>',
105 + '\t<use>', '\t\t<flag name="flag1">test flag1</flag>',
106 + '\t\t<flag name="flag2">test flag2</flag>', '\t</use>',
107 + '\t<upstream>', '\t\t<maintainer>', '\t\t\t<name>TEST</name>',
108 + '\t\t</maintainer>', '\t\t<remote-id>001</remote-id>',
109 + '\t</upstream>', '</pkgmetadata>'])
110 +
111 def suite():
112 suite = unittest.TestSuite()
113 suite.addTest(TestXMLGenerator('test_generate'))
114 suite.addTest(TestMetadataGenerator('test_process'))
115 + suite.addTest(TestMetadataGenerator('test_generate'))
116 return suite