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 |