Skip to content

Commit

Permalink
Add logging with verbosity control (closes #22).
Browse files Browse the repository at this point in the history
  • Loading branch information
StoneyJackson committed Jul 13, 2014
1 parent 5fae277 commit b808906
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 41 deletions.
17 changes: 15 additions & 2 deletions assignmentconvert.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA

import argparse
import logging
import os
from grade.engine import Assignment, Command

Expand All @@ -27,10 +28,22 @@ def __init__(self):
parser.add_argument(
'-v', '--verbose',
help='increase output verbosity',
action='store_true'
action='store_true',
default=False
)
parser.add_argument(
'-b', '--brief',
help='decrease output verbosity',
action='store_true',
default=False
)
args = parser.parse_args()
Command.set_default_verbosity(args.verbose)
if args.verbose:
logging.basicConfig(level='DEBUG')
elif args.brief:
logging.basicConfig(level='WARNING')
else:
logging.basicConfig(level='INFO')
self._a2pdf = Command(
'a2pdf --noperl-syntax --noline-numbers "{ins}" -o "{ins}.pdf"')
self._pdfcat = Command('pdftk "{ins}" cat output "{outs}"')
Expand Down
24 changes: 7 additions & 17 deletions grade/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@
import json
import os
import pathlib
import logging


class Assignment(object):
'''Provides traversal and path resolution for visitors over an assignment
directory.
'''

def __init__(self, config_file, verbose=False, cd=True):
def __init__(self, config_file, cd=True):
self._config_file = pathlib.Path(config_file).resolve()
self._verbose = verbose
self._cd = cd
self._config_dict = None
self._submission_directories = []
Expand Down Expand Up @@ -86,12 +86,10 @@ def accept(self, visit, cd=None):
self._notify_end_process_directory(directory)

def _notify_start_process_directory(self, directory):
if self._verbose:
print('Processing', directory)
logging.info('Processing {directory}'.format(directory=directory))

def _notify_end_process_directory(self, directory):
if self._verbose:
print('Done processing', directory)
logging.info('Done processing {directory}'.format(directory=directory))

def _process_directory(self, visit, directory):
self._enter_directory(directory)
Expand Down Expand Up @@ -119,7 +117,7 @@ def _resolve_path_or_none(self, path, root=None):
try:
resolved = self._resolve_path(path, root=root)
except FileNotFoundError:
print('Not found: ' + str(root/path))
logging.warning('Not found: {path}'.format(path=str(root/path)))
return resolved


Expand All @@ -146,15 +144,8 @@ class Command(object):
concat2.each(['f1', 'f2]) # copies f1 to f1.2 and f2 to f2.2
concat.each(['f1', 'f2'], ['f3', 'f4']) # copies f1 to f3 and f2 to f4
'''
_default_verbosity = False

@classmethod
def set_default_verbosity(cls, flag):
cls._default_verbosity = flag

def __init__(self, command_string, verbose=None):
self._verbose = \
verbose if verbose is not None else Command._default_verbosity
def __init__(self, command_string):
self._command_string = command_string

def __call__(self, ins=None, outs=None):
Expand All @@ -173,8 +164,7 @@ def _format_args(self, args):
return args

def _run_command(self, command):
if self._verbose:
print(command)
logging.debug(command)
os.system(command)

def each(self, ins=None, outs=None):
Expand Down
20 changes: 0 additions & 20 deletions grade/tests/test_engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,12 @@ def visit(self, submission_directory, files_to_collect):
class test_Command(unittest.TestCase):

def setUp(self):
Command.set_default_verbosity(False)
self.directory = Path(sandbox.dir('test_Command'))
self.directory.mkdir()
self.file_ = self.directory / 'test_simple'
self.filename = str(self.file_)

def tearDown(self):
Command.set_default_verbosity(False)
for f in self.directory.glob('*'):
f.unlink()
self.directory.rmdir()
Expand Down Expand Up @@ -126,24 +124,6 @@ def test_only_outs(self):
write_hi(outs=self.file_)
self.assertTrue(self.file_.exists())

def test_default_verbosity_is_false(self):
ls = Command('ls')
self.assertFalse(ls._verbose)

def test_verbosity_true(self):
ls = Command('ls', verbose=True)
self.assertTrue(ls._verbose)

def test_set_default_verbosity_true(self):
Command.set_default_verbosity(True)
ls = Command('ls')
self.assertTrue(ls._verbose)

def test_override_default_verbosity_false(self):
Command.set_default_verbosity(True)
ls = Command('ls', False)
self.assertFalse(ls._verbose)


if __name__ == '__main__':
unittest.main()
2 changes: 0 additions & 2 deletions grade/tests/test_issue28.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ def test_missingFile_keepGoing(self):
Assignment(sandbox.dir('issue28.json')).accept(collector.visit)
self.assertTrue(len(collector.get_lines()) == 5)
output = out.getvalue().strip()
self.assertRegex(output, 'Not found: .*student2/file1.txt',
msg=output)
finally:
self._restore_stdout()

Expand Down

0 comments on commit b808906

Please sign in to comment.