Skip to content

Path objects is not handled #169

@aviz92

Description

@aviz92

How to fix?

added the following lines to write_xml function (line: 23):

from pathlib import Path

if isinstance(file_or_filename, Path):
    file_or_filename = str(file_or_filename)

full function:

from pathlib import Path

def write_xml(obj, file_or_filename: Optional[Union[str, IO]] = None, *, pretty: bool = False):
    tree = etree.ElementTree(obj._elem)
    if file_or_filename is None:
        file_or_filename = obj.filepath
    if file_or_filename is None:
        raise JUnitXmlError("Missing file argument.")

    if pretty:
        from xml.dom.minidom import parseString

        text = etree.tostring(obj._elem)
        xml = parseString(text)  # nosec
        content = xml.toprettyxml(encoding="utf-8")
        if isinstance(file_or_filename, Path):
            file_or_filename = str(file_or_filename)

        if isinstance(file_or_filename, str):
            with open(file_or_filename, encoding="utf-8", mode="wb") as xmlfile:
                xmlfile.write(content)
        else:
            if isinstance(file_or_filename, io.TextIOWrapper):
                if file_or_filename.encoding is not None and file_or_filename.encoding.lower() != "utf-8":
                    raise ValueError(f"Only utf-8 encoding is supported: {file_or_filename.encoding}")
                file_or_filename.buffer.write(content)
            else:
                file_or_filename.write(content)
    else:
        if isinstance(file_or_filename, io.TextIOWrapper):
            if file_or_filename.encoding is not None and file_or_filename.encoding.lower() != "utf-8":
                raise ValueError(f"Only utf-8 encoding is supported: {file_or_filename.encoding}")
            tree.write(file_or_filename.buffer, encoding="utf-8", xml_declaration=True)
        else:
            tree.write(file_or_filename, encoding="utf-8", xml_declaration=True)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions