Beispiel #1
0
def test_politeexec_stdout_logged(caplog):
    """The standard output is logged in debug."""
    caplog.set_level(logging.DEBUG, logger="charmcraft")

    cmd = ['echo', 'HELO']
    polite_exec(cmd)
    expected = [
        "Running external command ['echo', 'HELO']",
        ":: HELO",
    ]
    assert expected == [rec.message for rec in caplog.records]
Beispiel #2
0
def test_politeexec_stderr_logged(caplog):
    """The standard error is logged in debug."""
    caplog.set_level(logging.DEBUG, logger="charmcraft")

    cmd = [sys.executable, '-c', "import sys; print('weird, huh?', file=sys.stderr)"]
    polite_exec(cmd)
    expected = [
        "Running external command " + str(cmd),
        ":: weird, huh?",
    ]
    assert expected == [rec.message for rec in caplog.records]
Beispiel #3
0
def test_politeexec_base(caplog):
    """Basic execution."""
    caplog.set_level(logging.ERROR, logger="charmcraft")

    cmd = ['echo', 'HELO']
    retcode = polite_exec(cmd)
    assert retcode == 0
    assert not caplog.records
Beispiel #4
0
def test_politeexec_failed(caplog):
    """It's logged in error if cmd fails."""
    caplog.set_level(logging.ERROR, logger="charmcraft")

    cmd = [sys.executable, '-c', "exit(3)"]
    retcode = polite_exec(cmd)
    assert retcode == 3
    expected_msg = "Executing {} failed with return code 3".format(cmd)
    assert any(expected_msg in rec.message for rec in caplog.records)
Beispiel #5
0
def test_politeexec_crashed(caplog, tmp_path):
    """It's logged in error if cmd fails."""
    caplog.set_level(logging.ERROR, logger="charmcraft")
    nonexistent = tmp_path / 'whatever'

    cmd = [str(nonexistent)]
    retcode = polite_exec(cmd)
    assert retcode == 1
    expected_msg = "Executing {} crashed with FileNotFoundError".format(cmd)
    assert any(expected_msg in rec.message for rec in caplog.records)