Пример #1
0
def test_report_undecodable_stdout_and_stderr(mocker: MockerFixture) -> None:
    from_addr = Address("Command Reporter", addr_spec="*****@*****.**")
    to_addrs = [Address("Re Cipient", addr_spec="*****@*****.**")]
    result = CommandResult(
        argv=["foo", "-x", "bar.txt"],
        rc=0,
        start=datetime(2020, 3, 10, 15, 0, 28, 123456, w4),
        end=datetime(2020, 3, 10, 15, 1, 27, 654321, w4),
        stdout=b"\xD0is is i\xF1 L\xE1tin\xB9.\n",
        stderr=b"\xE3\x88\x89\xA2@\x89\xA2@\x89\x95@\xC5\xC2\xC3\xC4\xC9\xC3K%",
    )
    reporter = CommandReporter(
        encoding="utf-8",
        failure_only=False,
        from_addr=from_addr,
        mime_type=None,
        nonempty=False,
        stderr_encoding="utf-8",
        stdout_filename=None,
        to_addrs=to_addrs,
        utc=False,
    )
    show_argv_spy = mocker.spy(util, "show_argv")
    msg = reporter.report(result)
    assert isinstance(msg, DraftMessage)
    assert attr.asdict(msg, recurse=False) == {
        "to_addrs":
        to_addrs,
        "subject":
        "[DONE] foo -x bar.txt",
        "from_addr":
        from_addr,
        "parts": [
            ("Start Time:  2020-03-10 15:00:28.123456-04:00\n"
             "End Time:    2020-03-10 15:01:27.654321-04:00\n"
             "Exit Status: 0\n"
             "\n"
             "Output:\n"),
            BytesAttachment(
                b"\xD0is is i\xF1 L\xE1tin\xB9.\n",
                "stdout",
                content_type="application/octet-stream",
                inline=True,
            ),
            "\nError Output:\n",
            BytesAttachment(
                b"\xE3\x88\x89\xA2@\x89\xA2@\x89\x95@\xC5\xC2\xC3\xC4\xC9\xC3K%",
                "stderr",
                content_type="application/octet-stream",
                inline=True,
            ),
        ],
    }
    show_argv_spy.assert_called_once_with(*result.argv)
Пример #2
0
 def addblobquote(self, blob: bytes, encoding: str, filename: str) -> None:
     try:
         txt = blob.decode(encoding)
     except UnicodeDecodeError:
         self.parts.append(BytesAttachment(blob, filename, inline=True))
     else:
         self.addtext(reply_quote(txt))
Пример #3
0
 def addmimeblob(self, blob: bytes, mimetype: str, filename: str) -> None:
     self.parts.append(
         BytesAttachment(
             blob,
             filename=filename,
             content_type=mimetype,
             inline=True,
         ))