예제 #1
0
def chk2(obj, fix=True):
    # Can return different codes for different errors in same check
    ret = Report(obj)
    try:
        ok = obj['testkey'] == 0
    except KeyError:
        ret.problem_msg = 'no "testkey"'
        ret.error = KeyError
        if fix:
            obj['testkey'] = 1
            ret.fix_msg = 'added "testkey"'
        else:
            ret.problem_level = 20
        return ret
    if ok:
        return ret
    ret.problem_msg = '"testkey" != 0'
    ret.error = ValueError
    if fix:
        ret.fix_msg = 'set "testkey" to 0'
        obj['testkey'] = 0
    else:
        ret.problem_level = 10
    return ret
예제 #2
0
def test_report_strings():
    rep = Report()
    yield assert_not_equal, rep.__str__(), ''
    yield assert_equal, rep.message, ''
    str_io = StringIO()
    rep.write_raise(str_io)
    yield assert_equal, str_io.getvalue(), ''
    rep = Report('', ValueError, 20, 'msg', 'fix')
    rep.write_raise(str_io)
    yield assert_equal, str_io.getvalue(), ''
    rep.problem_level = 30
    rep.write_raise(str_io)
    yield assert_equal, str_io.getvalue(), 'Level 30: msg; fix\n'
    str_io.truncate(0)
    # No fix string, no fix message
    rep.fix_msg = ''
    rep.write_raise(str_io)
    yield assert_equal, str_io.getvalue(), 'Level 30: msg\n'
    rep.fix_msg = 'fix'
    str_io.truncate(0)
    # If we drop the level, nothing goes to the log
    rep.problem_level = 20
    rep.write_raise(str_io)
    yield assert_equal, str_io.getvalue(), ''
    # Unless we set the default log level in the call
    rep.write_raise(str_io, log_level=20)
    yield assert_equal, str_io.getvalue(), 'Level 20: msg; fix\n'
    str_io.truncate(0)
    # If we set the error level down this low, we raise an error
    yield assert_raises, ValueError, rep.write_raise, str_io, 20
    # But the log level wasn't low enough to do a log entry
    yield assert_equal, str_io.getvalue(), ''
    # Error still raised with lower log threshold, but now we do get a
    # log entry
    yield assert_raises, ValueError, rep.write_raise, str_io, 20, 20
    yield assert_equal, str_io.getvalue(), 'Level 20: msg; fix\n'
    # If there's no error, we can't raise
    str_io.truncate(0)
    rep.error = None
    rep.write_raise(str_io, 20)
    yield assert_equal, str_io.getvalue(), ''