Merge pull request #289 from donfranio/master

extra tests for util.which
This commit is contained in:
tobi-wan-kenobi 2018-09-04 14:10:35 +02:00 committed by GitHub
commit ab41a24ee2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,12 +1,12 @@
# pylint: disable=C0103,C0111 # pylint: disable=C0103,C0111
import mock
import unittest import unittest
import re import re
import tests.mocks as mocks import tests.mocks as mocks
from bumblebee.util import * import bumblebee.util as bu
class TestUtil(unittest.TestCase): class TestUtil(unittest.TestCase):
def setUp(self): def setUp(self):
@ -18,48 +18,56 @@ class TestUtil(unittest.TestCase):
self.popen.cleanup() self.popen.cleanup()
def test_bytefmt(self): def test_bytefmt(self):
self.assertEquals(bytefmt(10), "10.00B") self.assertEquals(bu.bytefmt(10), "10.00B")
self.assertEquals(bytefmt(15*1024), "15.00KiB") self.assertEquals(bu.bytefmt(15 * 1024), "15.00KiB")
self.assertEquals(bytefmt(20*1024*1024), "20.00MiB") self.assertEquals(bu.bytefmt(20 * 1024 * 1024), "20.00MiB")
self.assertEquals(bytefmt(22*1024*1024*1024), "22.00GiB") self.assertEquals(bu.bytefmt(22 * 1024 * 1024 * 1024), "22.00GiB")
self.assertEquals(bytefmt(35*1024*1024*1024*1024), "35840.00GiB") self.assertEquals(bu.bytefmt(35 * 1024 * 1024 * 1024 * 1024), "35840.00GiB")
def test_durationfmt(self): def test_durationfmt(self):
self.assertEquals(durationfmt(00), "00:00") self.assertEquals(bu.durationfmt(00), "00:00")
self.assertEquals(durationfmt(25), "00:25") self.assertEquals(bu.durationfmt(25), "00:25")
self.assertEquals(durationfmt(60), "01:00") self.assertEquals(bu.durationfmt(60), "01:00")
self.assertEquals(durationfmt(119), "01:59") self.assertEquals(bu.durationfmt(119), "01:59")
self.assertEquals(durationfmt(3600), "01:00:00") self.assertEquals(bu.durationfmt(3600), "01:00:00")
self.assertEquals(durationfmt(7265), "02:01:05") self.assertEquals(bu.durationfmt(7265), "02:01:05")
def test_execute(self): def test_execute(self):
execute(self.some_command_with_args) bu.execute(self.some_command_with_args)
self.assertTrue(self.popen.mock.popen.called) self.assertTrue(self.popen.mock.popen.called)
self.popen.mock.popen.assert_call(self.some_command_with_args) self.popen.mock.popen.assert_call(self.some_command_with_args)
self.assertTrue(self.popen.mock.communicate.called) self.assertTrue(self.popen.mock.communicate.called)
def test_execute_nowait(self): def test_execute_nowait(self):
execute(self.some_command_with_args, False) bu.execute(self.some_command_with_args, False)
self.assertTrue(self.popen.mock.popen.called) self.assertTrue(self.popen.mock.popen.called)
self.popen.mock.popen.assert_call(self.some_command_with_args) self.popen.mock.popen.assert_call(self.some_command_with_args)
self.assertFalse(self.popen.mock.communicate.called) self.assertFalse(self.popen.mock.communicate.called)
def test_execute_utf8(self): def test_execute_utf8(self):
self.popen.mock.communicate.return_value = [ self.some_utf8, None ] self.popen.mock.communicate.return_value = [self.some_utf8, None]
self.test_execute() self.test_execute()
def test_execute_error(self): def test_execute_error(self):
self.popen.mock.returncode = 1 self.popen.mock.returncode = 1
with self.assertRaises(RuntimeError): with self.assertRaises(RuntimeError):
execute(self.some_command_with_args) bu.execute(self.some_command_with_args)
def test_which(self): def test_which(self):
# test for a binary that has to be somewhere
print(bu.which("ls"))
self.assertTrue(re.search('/(ls)$', bu.which("ls")))
# test for a binary that is not necessarily there
program = "iwgetid" program = "iwgetid"
self.assertTrue( self.assertTrue(
which(program) is None or bu.which(program) is None or
re.search('/(' + program + ')$', which(program)) re.search('/(' + program + ')$', bu.which(program))
) )
# test if which also works with garbage input
self.assertTrue(bu.which("qwertygarbage") is None)
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4