Skip to content

Commit

Permalink
Improve test coverage.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ken Kundert authored and Ken Kundert committed Aug 11, 2018
1 parent c0928fc commit 5159209
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 9 deletions.
14 changes: 8 additions & 6 deletions inform/inform.py
Original file line number Diff line number Diff line change
Expand Up @@ -1572,7 +1572,9 @@ def terminate(self, status=None, exit=True):
if self.termination_callback:
self.termination_callback()
if is_str(status):
log("%s: terminates with status '%s'." % (prog_name, status))
log("%s: terminates with status 1 and with message '%s'." % (
prog_name, status
))
else:
log('%s: terminates with status %s.' % (prog_name, status))
assert 0 <= status and status < 128
Expand Down Expand Up @@ -1755,25 +1757,25 @@ def done(exit=True):
Calls :meth:`inform.Inform.done` for the active informer.
"""
INFORMER.done(exit)
return INFORMER.done(exit)


# terminate {{{2
def terminate(status=None):
def terminate(status=None, exit=True):
"""Terminate the program with specified exit status."
Calls :meth:`inform.Inform.terminate` for the active informer.
"""
INFORMER.terminate(status)
return INFORMER.terminate(status, exit)


# terminate_if_errors {{{2
def terminate_if_errors(status=1):
def terminate_if_errors(status=1, exit=True):
"""Terminate the program if error count is nonzero."
Calls :meth:`inform.Inform.terminate_if_errors` for the active informer.
"""
INFORMER.terminate_if_errors(status)
return INFORMER.terminate_if_errors(status, exit)


# errors_accrued {{{2
Expand Down
74 changes: 71 additions & 3 deletions tests/test_inform.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Imports {{{1
from inform import (
Inform, Error, codicil, display, done, error, errors_accrued, log, output,
terminate, terminate_if_errors, warn
terminate, terminate_if_errors, warn, set_culprit, add_culprit, get_culprit
)
from contextlib import contextmanager
from textwrap import dedent
Expand Down Expand Up @@ -84,7 +84,7 @@ def test_billfold():

def test_wring():
with messenger() as (msg, stdout, stderr, logfile):
output('hey now!')
output('hey now!', flush=True)
codicil('baby', 'bird', sep='\n')
msg.flush_logfile()
expected = dedent('''
Expand Down Expand Up @@ -198,19 +198,55 @@ def test_pardon():
except SystemExit as e:
assert e.args == (0,)

try:
rv = done(exit=False)
assert rv == 0
except SystemExit as e:
assert False

try:
terminate()
assert False
except SystemExit as e:
assert e.args == (1,)

try:
rv = terminate(exit=False)
assert rv == 1
except SystemExit as e:
assert False

try:
rv = terminate(True, exit=False)
assert rv == 1
except SystemExit as e:
assert False

try:
rv = terminate('fuxit', exit=False)
assert rv == 'fuxit'
except SystemExit as e:
assert False

try:
rv = terminate(6, exit=False)
assert rv == 6
except SystemExit as e:
assert False

try:
terminate_if_errors()
assert False
except SystemExit as e:
assert e.args == (1,)
assert True

try:
rv = terminate_if_errors(exit=False)
assert rv == 1
except SystemExit as e:
assert False

def test_possess():
with messenger(stream_policy='header') as (msg, stdout, stderr, logfile):
out = [
Expand Down Expand Up @@ -252,8 +288,40 @@ def test_unbuckle():

def test_franc():
with messenger() as (msg, stdout, stderr, logfile):
display('fuzzy', file=stdout)
display('fuzzy', file=stdout, flush=True)
assert msg.errors_accrued() == 0
assert errors_accrued(True) == 0
assert strip(stdout) == 'fuzzy'
assert strip(stderr) == ''

def test_carbuncle():
with messenger() as (msg, stdout, stderr, logfile):
display('fuzzy', file=stdout)
assert get_culprit() == ()
assert get_culprit('x') == ('x',)
assert get_culprit(('x', 'y')) == ('x', 'y')
assert get_culprit(('x', 'y', 1)) == ('x', 'y', 1)
with set_culprit('a'):
assert get_culprit() == ('a',)
assert get_culprit('x') == ('a', 'x')
assert get_culprit(('x', 'y')) == ('a', 'x', 'y')
with set_culprit('b'):
assert get_culprit() == ('b',)
assert get_culprit('x') == ('b', 'x')
assert get_culprit(('x', 'y')) == ('b', 'x', 'y')
with set_culprit('c'):
assert get_culprit() == ('c',)
assert get_culprit('x') == ('c', 'x')
assert get_culprit(('x', 'y')) == ('c', 'x', 'y')
with add_culprit('a'):
assert get_culprit() == ('a',)
assert get_culprit('x') == ('a', 'x')
assert get_culprit(('x', 'y')) == ('a', 'x', 'y')
with add_culprit('b'):
assert get_culprit() == ('a', 'b',)
assert get_culprit('x') == ('a', 'b', 'x')
assert get_culprit(('x', 'y')) == ('a', 'b', 'x', 'y')
with add_culprit('c'):
assert get_culprit() == ('a', 'b', 'c',)
assert get_culprit('x') == ('a', 'b', 'c', 'x')
assert get_culprit(('x', 'y')) == ('a', 'b', 'c', 'x', 'y')

0 comments on commit 5159209

Please sign in to comment.