def _write_xml(res, test, out_xml): """ Make sure a Junit XML compatible file is written. """ # Windows output is most likely code page 850 # TODO: I need to check that, at least on Win 10 if sys.platform.startswith("win"): encoding = "ascii" else: encoding = "UTF-8" # Arbitrary limit output (~700 lines) to prevent from crashing on read res.out = res.out[-16384:] if six.PY3: res.out = re.sub(r'\x1b[^m]*m', "", str(res.out)) message_as_string = " ".join( str(x) for x in res.message if not isinstance(x, ui._Color)) else: res.out = re.sub('\x1b[^m]*m', "", res.out) message_as_string = " ".join( str(x) for x in res.message if not isinstance(x, ui._Color)) try: res.out = res.out.decode(encoding, "ignore") message_as_string = message_as_string.decode( encoding, "ignore") except UnicodeDecodeError: pass # Make sure there are no invalid data in the XML res.out = qisys.qixml.sanitize_xml(res.out) if res.ok: num_failures = "0" else: num_failures = "1" root = etree.Element("testsuites") root.set("tests", "1") root.set("failures", num_failures) root.set("disabled", "0") root.set("errors", "0") root.set("time", str(res.time)) root.set("name", "All") test_suite = etree.SubElement(root, "testsuite") test_suite.set("name", "test") test_suite.set("tests", "1") test_suite.set("failures", num_failures) test_suite.set("disabled", "0") test_suite.set("errors", "0") test_suite.set("time", str(res.time)) test_case = etree.SubElement(test_suite, "testcase") test_case.set("name", test["name"]) test_case.set("status", "run") test_case.set("time", str(res.time)) if not res.ok: failure = etree.SubElement(test_case, "failure") failure.set("message", message_as_string) failure.text = res.out qisys.qixml.write(root, out_xml, encoding=encoding)
def dump_deps_to_xml(subject, xml_elem): if subject.build_depends: build_dep_elem = etree.SubElement(xml_elem, tag="depends") build_dep_elem.set("buildtime", "true") build_dep_elem.set("names", " ".join(subject.build_depends)) if subject.run_depends: runtime_dep_elem = etree.SubElement(xml_elem, tag="depends") runtime_dep_elem.set("runtime", "true") runtime_dep_elem.set("names", " ".join(subject.run_depends)) if subject.test_depends: test_dep_elem = etree.SubElement(xml_elem, tag="depends") test_dep_elem.set("testtime", "true") test_dep_elem.set("names", " ".join(subject.test_depends))
def write_license(xml_path, license_): root = qisys.qixml.read(xml_path).getroot() license_elem = root.find("license") if license_elem is None: license_elem = etree.SubElement(root, "license") license_elem.text = license_ qisys.qixml.write(root, xml_path)
def add_svn_package(self, package): tree = qisys.qixml.read(self.feed_xml.strpath) root = tree.getroot() svn_elem = etree.SubElement(root, "svn_package") svn_elem.set("name", package.name) svn_elem.set("url", package.url) if package.revision: svn_elem.set("revision", package.revision) qisys.qixml.write(tree, self.feed_xml.strpath)
def tree(self): tree = etree.Element("config") tree.set("name", self.name) if self.ide: tree.set("ide", self.ide) env_tree = self.env.tree() tree.append(env_tree) cmake_tree = self.cmake.tree() tree.append(cmake_tree) if self.toolchain: toolchain_elem = etree.SubElement(tree, "toolchain") toolchain_elem.text = self.toolchain profiles_elem = etree.SubElement(tree, "profiles") for profile in self.profiles: profile_elem = etree.SubElement(profiles_elem, "profile") profile_elem.text = profile return tree
def test_qipkg_no_such_project(qipkg_action, tmpdir): d_project = qipkg_action.add_test_project("d_pkg") pml_path = os.path.join(d_project.path, "d_pkg.pml") root = qisys.qixml.read(pml_path).getroot() elem = etree.SubElement(root, "qipython") elem.set("name", "foo") qisys.qixml.write(root, pml_path) error = qipkg_action("make-package", pml_path, raises=True) assert "No such python project: foo" in error assert pml_path in error
def dump_manifest_config(self): """ Save the manifest config in .qi/manifest.xml """ root = etree.Element("worktree") manifest_elem = etree.SubElement(root, "manifest") manifest_elem.set("url", self.manifest.url) manifest_elem.set("branch", self.manifest.branch) if self.manifest.groups is not None: manifest_elem.set("groups", " ".join(self.manifest.groups)) if self.manifest.review: manifest_elem.set("review", "true") else: manifest_elem.set("review", "false") tree = etree.ElementTree(root) qisys.qixml.write(tree, self.manifest_xml)
def test_deps_not_translated(qidoc_action, record_messages): """ Test Deps Not Translated """ translateme_proj = qidoc_action.add_test_project("translateme") world_proj = qidoc_action.add_test_project("world") qiproject_xml = translateme_proj.qiproject_xml root = qisys.qixml.read(qiproject_xml).getroot() qidoc_elem = root.find("qidoc") depends = etree.SubElement(qidoc_elem, "depends") depends.set("name", "world") qisys.qixml.write(root, qiproject_xml) qidoc_action("intl-update", "translateme") index_pot = os.path.join(world_proj.path, "source", "locale", "index.pot") assert not os.path.exists(index_pot) record_messages.reset() qidoc_action("intl-update", "world") assert record_messages.find("WARN")
def dump_vars(self, tree): for name, value in self.vars.iteritems(): var_elem = etree.SubElement(tree, "var") var_elem.set("name", name) var_elem.text = value