示例#1
0
    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)
示例#2
0
文件: deps.py 项目: mikalv/qibuild
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))
示例#3
0
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)
示例#4
0
 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)
示例#5
0
    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
示例#6
0
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
示例#7
0
 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)
示例#8
0
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")
示例#9
0
文件: config.py 项目: mikalv/qibuild
 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