diff --git a/tests/test_utils.py b/tests/test_utils.py index f112e1a..71fed1a 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -5,8 +5,34 @@ import os import unittest from tempfile import NamedTemporaryFile as ntf +from tldptesttools import * + # -- SUT -from tldp.utils import makefh, which +from tldp.utils import makefh, which, getfileset, execute + + +class Test_execute(TestToolsFilesystem): + + def test_execute_returns_zero(self): + result = execute(['true'], logdir=self.tempdir) + self.assertEqual(0, result) + + def test_execute_returns_nonzero(self): + result = execute(['false'], logdir=self.tempdir) + self.assertEqual(1, result) + + def test_execute_exception_when_logdir_none(self): + with self.assertRaises(Exception) as ecm: + execute(['true'], logdir=None) + e = ecm.exception + self.assertTrue('Missing' in e.message) + + def test_execute_exception_when_logdir_enoent(self): + logdir = os.path.join(self.tempdir, 'nonexistent-directory') + with self.assertRaises(IOError) as ecm: + execute(['true'], logdir=logdir) + e = ecm.exception + self.assertTrue('nonexistent' in e.filename) class Test_which(unittest.TestCase): @@ -33,6 +59,14 @@ class Test_which(unittest.TestCase): os.unlink(f.name) +class Test_getfileset(unittest.TestCase): + + def test_getfileset(self): + here = os.path.dirname(os.path.abspath(__file__)) + me = os.path.join('.', os.path.basename(__file__)) + self.assertTrue(me in getfileset(here)) + + class Test_makefh(unittest.TestCase): def test_makefh(self): diff --git a/tldp/utils.py b/tldp/utils.py index 6c8e33e..0b5b3fb 100644 --- a/tldp/utils.py +++ b/tldp/utils.py @@ -5,13 +5,14 @@ from __future__ import absolute_import, division, print_function import os import io import sys +import errno import subprocess from tempfile import mkstemp import logging def getLogger(**opts): - level = opts.get('level', logging.DEBUG) + level = opts.get('level', logging.INFO) logging.basicConfig(stream=sys.stderr, level=level) logger = logging.getLogger() return logger @@ -23,9 +24,11 @@ def execute(cmd, stdin=None, stdout=None, stderr=None, logdir=None, env=os.environ): prefix = os.path.basename(cmd[0]) + '.' + str(os.getpid()) + '-' - if logdir is None: - raise Exception("Missing, required parameter: logdir.") - assert os.path.isdir(logdir) + if logdir is None: + raise Exception("Missing required parameter: logdir.") + + if not os.path.isdir(logdir): + raise IOError(errno.ENOENT, os.strerror(errno.ENOENT), logdir) # -- not remapping STDIN, because that doesn't make sense here if stdout is None: @@ -76,5 +79,16 @@ def makefh(thing): (type(thing), thing,)) return f + +def getfileset(dirname): + q = set() + ocwd = os.getcwd() + os.chdir(dirname) + for root, dirs, files in os.walk('.'): + q.update([os.path.join(root, x) for x in files]) + os.chdir(ocwd) + return q + + # # -- end of file