Add more unittypes tests.
This commit is contained in:
parent
a6375a8065
commit
3b93f6121b
@ -18,6 +18,8 @@
|
||||
"""Tests for qutebrowser.config.conftypes."""
|
||||
|
||||
import unittest
|
||||
import unittest.mock as mock
|
||||
import re
|
||||
|
||||
import qutebrowser.config.conftypes as conftypes
|
||||
from qutebrowser.test.stubs import FakeCmdUtils, FakeCommand
|
||||
@ -281,11 +283,6 @@ class ListTests(unittest.TestCase):
|
||||
self.assertEqual(self.t.transform('foo,,baz'),
|
||||
['foo', None, 'baz'])
|
||||
|
||||
def test_transform_empty_none_ok(self):
|
||||
"""Test transform with an empty value and none_ok = True."""
|
||||
t = conftypes.List(none_ok=True)
|
||||
self.assertEqual(t.transform('foo,,baz'), ['foo', None, 'baz'])
|
||||
|
||||
|
||||
class BoolTests(unittest.TestCase):
|
||||
|
||||
@ -1096,8 +1093,8 @@ class FontTests(unittest.TestCase):
|
||||
|
||||
def test_validate_empty_none_ok(self):
|
||||
"""Test validate with an empty string and none_ok=True."""
|
||||
t = conftypes.QssColor(none_ok=True)
|
||||
t2 = conftypes.QtColor(none_ok=True)
|
||||
t = conftypes.Font(none_ok=True)
|
||||
t2 = conftypes.QtFont(none_ok=True)
|
||||
t.validate('')
|
||||
t2.validate('')
|
||||
|
||||
@ -1132,6 +1129,280 @@ class FontTests(unittest.TestCase):
|
||||
self.assertIsNone(self.t2.transform(''))
|
||||
|
||||
|
||||
class RegexTests(unittest.TestCase):
|
||||
|
||||
"""Test Regex."""
|
||||
|
||||
def setUp(self):
|
||||
self.t = conftypes.Regex()
|
||||
|
||||
def test_validate_empty(self):
|
||||
"""Test validate with an empty string."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('')
|
||||
|
||||
def test_validate_empty_none_ok(self):
|
||||
"""Test validate with an empty string and none_ok=True."""
|
||||
t = conftypes.Regex(none_ok=True)
|
||||
t.validate('')
|
||||
|
||||
def test_validate(self):
|
||||
"""Test validate with a valid regex."""
|
||||
self.t.validate(r'(foo|bar)?baz[fis]h')
|
||||
|
||||
def test_validate_invalid(self):
|
||||
"""Test validate with an invalid regex."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate(r'(foo|bar))?baz[fis]h')
|
||||
|
||||
def test_transform_empty(self):
|
||||
"""Test transform with an empty value."""
|
||||
self.assertIsNone(self.t.transform(''))
|
||||
|
||||
def test_transform_empty(self):
|
||||
"""Test transform."""
|
||||
self.assertEqual(self.t.transform(r'foobar'), re.compile(r'foobar'))
|
||||
|
||||
|
||||
class RegexListTests(unittest.TestCase):
|
||||
|
||||
"""Test RegexList."""
|
||||
|
||||
def setUp(self):
|
||||
self.t = conftypes.RegexList()
|
||||
|
||||
def test_validate_good(self):
|
||||
"""Test validate with good values."""
|
||||
self.t.validate(r'(foo|bar),[abcd]?,1337{42}')
|
||||
|
||||
def test_validate_empty(self):
|
||||
"""Test validate with an empty value."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate(r'(foo|bar),,1337{42}')
|
||||
|
||||
def test_validate_empty_none_ok(self):
|
||||
"""Test validate with an empty value and none_ok=True."""
|
||||
t = conftypes.RegexList(none_ok=True)
|
||||
t.validate(r'(foo|bar),,1337{42}')
|
||||
|
||||
def test_validate_bad(self):
|
||||
"""Test validate with bad values."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate(r'(foo|bar),((),1337{42}')
|
||||
|
||||
def test_transform_single(self):
|
||||
"""Test transform with a single value."""
|
||||
self.assertEqual(self.t.transform('foo'), [re.compile('foo')])
|
||||
|
||||
def test_transform_more(self):
|
||||
"""Test transform with multiple values."""
|
||||
self.assertEqual(self.t.transform('foo,bar,baz'),
|
||||
[re.compile('foo'), re.compile('bar'),
|
||||
re.compile('baz')])
|
||||
|
||||
def test_transform_empty(self):
|
||||
"""Test transform with an empty value."""
|
||||
self.assertEqual(self.t.transform('foo,,bar'),
|
||||
[re.compile('foo'), None, re.compile('bar')])
|
||||
|
||||
|
||||
@mock.patch('qutebrowser.config.conftypes.os.path', autospec=True)
|
||||
class FileTests(unittest.TestCase):
|
||||
|
||||
"""Test File."""
|
||||
|
||||
def setUp(self):
|
||||
self.t = conftypes.File()
|
||||
|
||||
def test_validate_empty(self, _os_path):
|
||||
"""Test validate with empty string and none_ok = False."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate("")
|
||||
|
||||
def test_validate_empty_none_ok(self, _os_path):
|
||||
"""Test validate with empty string and none_ok = True."""
|
||||
t = conftypes.File(none_ok=True)
|
||||
t.validate("")
|
||||
|
||||
def test_validate_does_not_exist(self, os_path):
|
||||
"""Test validate with a file which does not exist."""
|
||||
os_path.expanduser.side_effect = lambda x: x
|
||||
os_path.isfile.return_value = False
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('foobar')
|
||||
|
||||
def test_validate_exists_abs(self, os_path):
|
||||
"""Test validate with a file which does exist."""
|
||||
os_path.expanduser.side_effect = lambda x: x
|
||||
os_path.isfile.return_value = True
|
||||
os_path.isabs.return_value = True
|
||||
self.t.validate('foobar')
|
||||
|
||||
def test_validate_exists_not_abs(self, os_path):
|
||||
"""Test validate with a file which does exist but is not absolute."""
|
||||
os_path.expanduser.side_effect = lambda x: x
|
||||
os_path.isfile.return_value = True
|
||||
os_path.isabs.return_value = False
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('foobar')
|
||||
|
||||
def test_validate_expanduser(self, os_path):
|
||||
"""Test if validate expands the user correctly."""
|
||||
os_path.expanduser.side_effect = lambda x: x.replace('~', '/home/foo')
|
||||
os_path.isfile.side_effect = lambda path: path == '/home/foo/foobar'
|
||||
os_path.isabs.return_value = True
|
||||
self.t.validate('~/foobar')
|
||||
os_path.expanduser.assert_called_once_with('~/foobar')
|
||||
|
||||
def test_transform(self, os_path):
|
||||
"""Test transform."""
|
||||
os_path.expanduser.side_effect = lambda x: x.replace('~', '/home/foo')
|
||||
self.assertEqual(self.t.transform('~/foobar'), '/home/foo/foobar')
|
||||
os_path.expanduser.assert_called_once_with('~/foobar')
|
||||
|
||||
def test_transform_empty(self, _os_path):
|
||||
"""Test transform with none_ok = False and an empty value."""
|
||||
self.assertIsNone(self.t.transform(''))
|
||||
|
||||
|
||||
@mock.patch('qutebrowser.config.conftypes.os.path', autospec=True)
|
||||
class DirectoryTests(unittest.TestCase):
|
||||
|
||||
"""Test Directory."""
|
||||
|
||||
def setUp(self):
|
||||
self.t = conftypes.Directory()
|
||||
|
||||
def test_validate_empty(self, _os_path):
|
||||
"""Test validate with empty string and none_ok = False."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate("")
|
||||
|
||||
def test_validate_empty_none_ok(self, _os_path):
|
||||
"""Test validate with empty string and none_ok = True."""
|
||||
t = conftypes.Directory(none_ok=True)
|
||||
t.validate("")
|
||||
|
||||
def test_validate_does_not_exist(self, os_path):
|
||||
"""Test validate with a directory which does not exist."""
|
||||
os_path.expanduser.side_effect = lambda x: x
|
||||
os_path.isdir.return_value = False
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('foobar')
|
||||
|
||||
def test_validate_exists_abs(self, os_path):
|
||||
"""Test validate with a directory which does exist."""
|
||||
os_path.expanduser.side_effect = lambda x: x
|
||||
os_path.isdir.return_value = True
|
||||
os_path.isabs.return_value = True
|
||||
self.t.validate('foobar')
|
||||
|
||||
def test_validate_exists_not_abs(self, os_path):
|
||||
"""Test validate with a dir which does exist but is not absolute."""
|
||||
os_path.expanduser.side_effect = lambda x: x
|
||||
os_path.isdir.return_value = True
|
||||
os_path.isabs.return_value = False
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('foobar')
|
||||
|
||||
def test_validate_expanduser(self, os_path):
|
||||
"""Test if validate expands the user correctly."""
|
||||
os_path.expanduser.side_effect = lambda x: x.replace('~', '/home/foo')
|
||||
os_path.isdir.side_effect = lambda path: path == '/home/foo/foobar'
|
||||
os_path.isabs.return_value = True
|
||||
self.t.validate('~/foobar')
|
||||
os_path.expanduser.assert_called_once_with('~/foobar')
|
||||
|
||||
def test_transform(self, os_path):
|
||||
"""Test transform."""
|
||||
os_path.expanduser.side_effect = lambda x: x.replace('~', '/home/foo')
|
||||
self.assertEqual(self.t.transform('~/foobar'), '/home/foo/foobar')
|
||||
os_path.expanduser.assert_called_once_with('~/foobar')
|
||||
|
||||
def test_transform_empty(self, _os_path):
|
||||
"""Test transform with none_ok = False and an empty value."""
|
||||
self.assertIsNone(self.t.transform(''))
|
||||
|
||||
|
||||
class WebKitByteTests(unittest.TestCase):
|
||||
|
||||
"""Test WebKitBytes."""
|
||||
|
||||
def setUp(self):
|
||||
self.t = conftypes.WebKitBytes()
|
||||
|
||||
def test_validate_empty(self):
|
||||
"""Test validate with empty string and none_ok = False."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('')
|
||||
|
||||
def test_validate_empty_none_ok(self):
|
||||
"""Test validate with empty string and none_ok = True."""
|
||||
t = conftypes.WebKitBytes(none_ok=True)
|
||||
t.validate('')
|
||||
|
||||
def test_validate_int(self):
|
||||
"""Test validate with a normal int."""
|
||||
self.t.validate('42')
|
||||
|
||||
def test_validate_int_suffix(self):
|
||||
"""Test validate with an int with a suffix."""
|
||||
self.t.validate('56k')
|
||||
|
||||
def test_validate_int_caps_suffix(self):
|
||||
"""Test validate with an int with a capital suffix."""
|
||||
self.t.validate('56K')
|
||||
|
||||
def test_validate_int_negative(self):
|
||||
"""Test validate with a negative int."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('-1')
|
||||
|
||||
def test_validate_int_negative_suffix(self):
|
||||
"""Test validate with a negative int with suffix."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('-1k')
|
||||
|
||||
def test_validate_int_toobig(self):
|
||||
"""Test validate with an int which is too big."""
|
||||
t = conftypes.WebKitBytes(maxsize=10)
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
t.validate('11')
|
||||
|
||||
def test_validate_int_not_toobig(self):
|
||||
"""Test validate with an int which is not too big."""
|
||||
t = conftypes.WebKitBytes(maxsize=10)
|
||||
t.validate('10')
|
||||
|
||||
def test_validate_int_toobig_suffix(self):
|
||||
"""Test validate with an int which is too big with suffix."""
|
||||
t = conftypes.WebKitBytes(maxsize=10)
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('1k')
|
||||
|
||||
def test_validate_int_invalid_suffix(self):
|
||||
"""Test validate with an int with an invalid suffix."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('56x')
|
||||
|
||||
def test_validate_int_double_suffix(self):
|
||||
"""Test validate with an int with a double suffix."""
|
||||
with self.assertRaises(conftypes.ValidationError):
|
||||
self.t.validate('56kk')
|
||||
|
||||
def test_transform_empty(self):
|
||||
"""Test transform with none_ok = False and an empty value."""
|
||||
self.assertIsNone(self.t.transform(''))
|
||||
|
||||
def test_transform_int(self):
|
||||
"""Test transform with a simple value."""
|
||||
self.assertEqual(self.t.transform('10'), 10)
|
||||
|
||||
def test_transform_int_suffix(self):
|
||||
"""Test transform with a value with suffix."""
|
||||
self.assertEqual(self.t.transform('1k'), 1024)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
Loading…
Reference in New Issue
Block a user