author | Jonathan Harrington <jonathan.harrington@nokia.com> |
Wed, 11 Aug 2010 14:49:30 +0100 | |
changeset 4 | 468f4c8d3d5b |
permissions | -rw-r--r-- |
4
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
1 |
# Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
2 |
# All rights reserved. |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
3 |
# This component and the accompanying materials are made available |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
4 |
# under the terms of the License "Eclipse Public License v1.0" |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
5 |
# which accompanies this distribution, and is available |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
6 |
# at the URL "http://www.eclipse.org/legal/epl-v10.html". |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
7 |
# |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
8 |
# Initial Contributors: |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
9 |
# Nokia Corporation - initial contribution. |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
10 |
# |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
11 |
# Contributors: |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
12 |
# |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
13 |
from __future__ import with_statement |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
14 |
try: |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
15 |
from xml.etree import cElementTree as etree |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
16 |
except ImportError: |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
17 |
from xml.etree import ElementTree as etree |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
18 |
from orb.lib import xml_decl, doctype_identifier |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
19 |
import logging |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
20 |
import os |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
21 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
22 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
23 |
logger = logging.getLogger('orb.mapcreators.componentlevel') |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
24 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
25 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
26 |
class ComponentExportsManager(object): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
27 |
""" |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
28 |
Retrieves bld.infs from the systemdefinition and exports from |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
29 |
the log file. |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
30 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
31 |
get_export_path_for: When called with the path to a header file, |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
32 |
returns the path the header file is exported to. |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
33 |
""" |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
34 |
def __init__(self, sysdef, component, exportsmap): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
35 |
self.sysdef = sysdef |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
36 |
self.exportsmap = exportsmap |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
37 |
self._fullpaths = [a[0] for a in self._get_export_headers(component)] |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
38 |
self._basenames = [os.path.basename(a) for a in self._fullpaths] |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
39 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
40 |
def _get_export_headers(self, component): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
41 |
export_headers = set() |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
42 |
for bld_inf in self.sysdef.get_bldinfs(component.id): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
43 |
component_exports = self.exportsmap.get_exports(bld_inf) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
44 |
if component_exports != None: |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
45 |
export_headers = export_headers.union(component_exports) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
46 |
logger.debug("I got these export headers from the log: %s" % (str(export_headers))) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
47 |
return export_headers |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
48 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
49 |
def get_export_path_for(self, filepath): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
50 |
export_path = None |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
51 |
for basename, fullpath in zip(self._basenames, self._fullpaths): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
52 |
if basename == os.path.basename(filepath): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
53 |
export_path = fullpath |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
54 |
return export_path |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
55 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
56 |
def is_public(self, filepath): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
57 |
return self.exportsmap.is_public(filepath) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
58 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
59 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
60 |
class ComponentMapCreator(object): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
61 |
"Writes out component level DITAMAPS" |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
62 |
def __init__(self, output_dir): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
63 |
self.output_dir = output_dir |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
64 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
65 |
def _process_elems(self, parent, entries): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
66 |
entries.sort(key=lambda item: item.navtitle) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
67 |
for entry in entries: |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
68 |
href = entry.href if entry.href is not None else "" |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
69 |
navtitle = entry.navtitle if entry.navtitle is not None else "" |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
70 |
elem = etree.SubElement(parent, entry.tag, href=href, navtitle=navtitle) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
71 |
if len(entry.children) > 0: |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
72 |
self._process_elems(elem, entry.children) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
73 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
74 |
def get_component_level_map(self, component, entries): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
75 |
root = etree.Element("cxxAPIMap", id="cmp_%s" % component.id, title=component.name) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
76 |
self._process_elems(root, entries) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
77 |
return root |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
78 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
79 |
def write(self, root): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
80 |
if len(root) == 0: |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
81 |
return |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
82 |
with open(os.path.join(self.output_dir, root.get("id")+".ditamap"), "w") as f: |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
83 |
f.write(xml_decl()+"\n") |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
84 |
f.write(doctype_identifier("cxxAPIMap")+"\n") |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
85 |
f.write(etree.tostring(root)) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
86 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
87 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
88 |
################################################################ |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
89 |
# Unit test code |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
90 |
################################################################ |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
91 |
import unittest |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
92 |
import shutil |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
93 |
from _shared import StubSysdef, StubBldInfExportsMap, StubPackageLevelMapCreator |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
94 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
95 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
96 |
class TestComponentExportsManager(unittest.TestCase): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
97 |
def test_i_get_the_correct_declaration_path_for_a_file(self): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
98 |
component_classicui_pub = StubSysdef().get_components("classicui")[0] |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
99 |
cm = ComponentExportsManager(StubSysdef(), component_classicui_pub, StubBldInfExportsMap()) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
100 |
fpath = cm.get_export_path_for("W:/foo/bar/aknSoundinfo.h") |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
101 |
self.assertEqual(fpath, "W:/epoc32/include/mw/aknSoundinfo.h") |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
102 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
103 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
104 |
class TestComponentMapCreator(unittest.TestCase): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
105 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
106 |
def setUp(self): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
107 |
self.plmcreator = StubPackageLevelMapCreator(StubSysdef(),"") |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
108 |
self.cmc = ComponentMapCreator(".") |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
109 |
self.test_dir = os.path.abspath(os.path.join("TestComponentMapCreator_test")) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
110 |
os.makedirs(self.test_dir) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
111 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
112 |
def tearDown(self): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
113 |
shutil.rmtree(self.test_dir) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
114 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
115 |
def test_i_create_a_correct_component_level_map(self): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
116 |
expected_clm = """<cxxAPIMap id="cmp_classicui_pub" title="Classic UI Public Interfaces"> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
117 |
<cxxClassRef href="class_b_trace.xml#class_b_trace" navtitle="class_b_trace"> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
118 |
<cxxStructRef href="struct_b_trace_1_1_s_exec_extension.xml#struct_b_trace_1_1_s_exec_extension" navtitle="struct_b_trace_1_1_s_exec_extension" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
119 |
</cxxClassRef> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
120 |
<cxxClassRef href="class_c_active.xml#class_c_active" navtitle="class_c_active" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
121 |
<cxxClassRef href="class_c_active_scheduler.xml#class_c_active_scheduler" navtitle="class_c_active_scheduler"> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
122 |
<cxxClassRef href="class_c_active_scheduler_1_1_t_cleanup_bundle.xml#class_c_active_scheduler_1_1_t_cleanup_bundle" navtitle="class_c_active_scheduler_1_1_t_cleanup_bundle" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
123 |
</cxxClassRef> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
124 |
<cxxClassRef href="class_c_active_scheduler_wait.xml#class_c_active_scheduler_wait" navtitle="class_c_active_scheduler_wait" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
125 |
<cxxClassRef href="class_c_always_online_disk_space_observer.xml#class_c_always_online_disk_space_observer" navtitle="class_c_always_online_disk_space_observer" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
126 |
<cxxClassRef href="class_c_always_online_e_com_interface.xml#class_c_always_online_e_com_interface" navtitle="class_c_always_online_e_com_interface"> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
127 |
<cxxStructRef href="nested_and_removed.xml" navtitle="" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
128 |
<cxxStructRef href="struct_c_always_online_e_com_interface_1_1___c_e_com_interface_init_params.xml#struct_c_always_online_e_com_interface_1_1___c_e_com_interface_init_params" navtitle="struct_c_always_online_e_com_interface_1_1___c_e_com_interface_init_params" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
129 |
</cxxClassRef> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
130 |
<cxxClassRef href="class_c_always_online_manager.xml#class_c_always_online_manager" navtitle="class_c_always_online_manager" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
131 |
<cxxClassRef href="class_c_always_online_manager_server.xml#class_c_always_online_manager_server" navtitle="class_c_always_online_manager_server" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
132 |
<cxxStructRef href="struct___array_util.xml#struct___array_util" navtitle="struct___array_util" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
133 |
<cxxClassRef href="test_class_defined_in_src_path.xml#test_class_defined_in_src_path" navtitle="test_class_defined_in_src_path" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
134 |
</cxxAPIMap>""" |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
135 |
classicui_comp = StubSysdef().get_components("classicui")[0] |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
136 |
plm = self.plmcreator.get_package_level_map("classicui") |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
137 |
exp_clm = etree.fromstring(expected_clm) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
138 |
clm = self.cmc.get_component_level_map(classicui_comp, plm) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
139 |
self.assertEqual(len(clm), len(exp_clm)) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
140 |
print etree.tostring(clm) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
141 |
for recieved, expected in zip(clm.getiterator(), exp_clm.getiterator()): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
142 |
self.assertEqual(recieved.tag, expected.tag) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
143 |
self.assertEqual(recieved.attrib, expected.attrib) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
144 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
145 |
def test_i_can_write_a_component_map_to_the_file_system(self): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
146 |
map = etree.fromstring(expected_clm) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
147 |
self.cmc.output_dir = self.test_dir |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
148 |
self.cmc.write(map) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
149 |
map_path = os.path.join(self.test_dir, "cmp_classicui_pub.ditamap") # map names should be cmp_ + mapid |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
150 |
self.assertTrue(os.path.exists(map_path)) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
151 |
content = open(map_path, "r").read() |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
152 |
self.assertTrue(content.find("<?xml") == 0) # it has a doctype declaration |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
153 |
self.assertTrue(content.find("<!DOCTYPE cxxAPIMap") != -1) # it has doctype decl |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
154 |
self.assertTrue(content.find('<cxxAPIMap id="cmp_classicui_pub"') != -1) # it has the map |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
155 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
156 |
def test_i_dont_write_out_an_empty_component_map_to_the_file_system(self): |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
157 |
map = etree.fromstring(empty_clm) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
158 |
self.cmc.output_dir = self.test_dir |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
159 |
self.cmc.write(map) |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
160 |
map_path = os.path.join(self.test_dir, "cmp_classicui_pub.ditamap") # map names should be cmp_ + mapid |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
161 |
self.assertFalse(os.path.exists(map_path)) # Shouldnt have been written out as map was empty |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
162 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
163 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
164 |
expected_clm = """<cxxAPIMap id="cmp_classicui_pub" title="Classic UI Public Interfaces"> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
165 |
<cxxStructRef href="struct___array_util.xml#struct___array_util" navtitle="struct___array_util" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
166 |
<cxxClassRef href="class_c_active_scheduler.xml#class_c_active_scheduler" navtitle="class_c_active_scheduler"> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
167 |
<cxxClassRef href="class_c_active_scheduler_1_1_t_cleanup_bundle.xml#class_c_active_scheduler_1_1_t_cleanup_bundle" navtitle="class_c_active_scheduler_1_1_t_cleanup_bundle" /> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
168 |
</cxxClassRef> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
169 |
<cxxClassRef href="class_c_always_online_e_com_interface.xml#class_c_always_online_e_com_interface" navtitle="class_c_always_online_e_com_interface"> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
170 |
</cxxClassRef> |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
171 |
</cxxAPIMap>""" |
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
172 |
|
468f4c8d3d5b
Orb version 0.2.0
Jonathan Harrington <jonathan.harrington@nokia.com>
parents:
diff
changeset
|
173 |
empty_clm = """<cxxAPIMap id="cmp_classicui_pub" title="Classic UI Public Interfaces"></cxxAPIMap>""" |