diff options
-rw-r--r-- | WebappConfig/filetype.py | 79 | ||||
-rw-r--r-- | WebappConfig/tests/dtest.py | 2 | ||||
-rwxr-xr-x | WebappConfig/tests/external.py | 37 |
3 files changed, 37 insertions, 81 deletions
diff --git a/WebappConfig/filetype.py b/WebappConfig/filetype.py index 63d7e5f..d677189 100644 --- a/WebappConfig/filetype.py +++ b/WebappConfig/filetype.py @@ -36,80 +36,6 @@ class FileType: - a list of all files and directories owned by the config user - a list of all files and directories owned by the server user - - This creates such lists: - - >>> config_owned = [ 'a', 'a/b/c/d', '/e', '/f/', '/g/h/', 'i\\n'] - >>> server_owned = [ 'j', 'k/l/m/n', '/o', '/p/', '/q/r/', 's\\n'] - - The class is initialized with these two arrays: - - >>> a = FileType(config_owned, server_owned) - - This class provides three functions to retrieve information about - the file or directory type. - - File types - ---------- - - >>> a.filetype('a') - 'config-owned' - >>> a.filetype('a/b/c/d') - 'config-owned' - - >>> a.filetype('j') - 'server-owned' - >>> a.filetype('/o') - 'server-owned' - - File names - whether specified as input in the - {config,server}_owned lists or as key for retrieving the type - may - have leading or trailing whitespace. It will be removed. Trailing - - >>> a.filetype('\\n s') - 'server-owned' - >>> a.filetype('/g/h\\n') - 'config-owned' - - Unspecified files will result in a virtual type: - - >>> a.filetype('unspecified.txt') - 'virtual' - - This behaviour can be influenced by setting the 'virtual_files' - option for the class (which corresponds to the --virtual-files command - line option): - - >>> b = FileType(config_owned, server_owned, - ... virtual_files = 'server-owned') - >>> b.filetype('unspecified.txt') - 'server-owned' - - Directory types - --------------- - - The class does not know if the given keys are files or directories. - This is specified using the correct function for them. So the same - keys that were used above can also be used here: - - >>> a.dirtype('a') - 'config-owned' - >>> a.dirtype('j') - 'server-owned' - - The same whitespace and trailing slash fixing rules apply for - directory names: - - >>> a.dirtype('\\n s') - 'server-owned' - >>> a.dirtype('/g/h\\n') - 'config-owned' - - Unspecified directories are 'default-owned' and not marked 'virtual': - - >>> a.dirtype('unspecified.txt') - 'default-owned' - ''' def __init__(self, @@ -224,8 +150,3 @@ class FileType: filename = re.compile('/+').sub('/', filename) return filename - - -if __name__ == '__main__': - import doctest, sys - doctest.testmod(sys.modules[__name__]) diff --git a/WebappConfig/tests/dtest.py b/WebappConfig/tests/dtest.py index a46be2c..bfb82fa 100644 --- a/WebappConfig/tests/dtest.py +++ b/WebappConfig/tests/dtest.py @@ -8,13 +8,11 @@ import unittest, doctest, sys -import WebappConfig.filetype import WebappConfig.protect import WebappConfig.worker def test_suite(): return unittest.TestSuite(( - doctest.DocTestSuite(WebappConfig.filetype), doctest.DocTestSuite(WebappConfig.protect), doctest.DocTestSuite(WebappConfig.worker), )) diff --git a/WebappConfig/tests/external.py b/WebappConfig/tests/external.py index 88b98c8..c8b0646 100755 --- a/WebappConfig/tests/external.py +++ b/WebappConfig/tests/external.py @@ -28,6 +28,7 @@ from WebappConfig.db import WebappDB, WebappSource from WebappConfig.debug import OUT from WebappConfig.dotconfig import DotConfig from WebappConfig.ebuild import Ebuild +from WebappConfig.filetype import FileType from WebappConfig.server import Basic from warnings import filterwarnings, resetwarnings @@ -329,6 +330,42 @@ class EbuildTest(unittest.TestCase): 'hostroot'))) +class FileTypeTest(unittest.TestCase): + def test_filetypes(self): + config_owned = ('a', 'a/b/c/d', '/e', '/f/', '/g/h/', 'i\\n') + server_owned = ('j', 'k/l/m/n', '/o', '/p/', '/q/r/', 's\\n') + + types = FileType(config_owned, server_owned) + + self.assertEqual(types.filetype('a'), 'config-owned') + self.assertEqual(types.filetype('a/b/c/d'), 'config-owned') + self.assertEqual(types.filetype('j'), 'server-owned') + self.assertEqual(types.filetype('/o'), 'server-owned') + + # It will always remove leading spaces or whitespace: + self.assertEqual(types.filetype('\t s\\n'), 'server-owned') + # Unspecified files will be set as virtual: + self.assertEqual(types.filetype('foo.txt'), 'virtual') + # However, you can set what you want your virtual-files to be: + types = FileType(config_owned, server_owned, + virtual_files='server-owned') + self.assertEqual(types.filetype('foo.txt'), 'server-owned') + + def test_dirtypes(self): + config_owned = ('a', 'a/b/c/d', '/e', '/f/', '/g/h/', 'i\\n') + server_owned = ('j', 'k/l/m/n', '/o', '/p/', '/q/r/', 's\\n') + + types = FileType(config_owned, server_owned) + + self.assertEqual(types.dirtype('a'), 'config-owned') + self.assertEqual(types.dirtype('j'), 'server-owned') + + # Same whitespace rules apply for dirtype(): + self.assertEqual(types.dirtype('\t s\\n'), 'server-owned') + # Unspecified dirs will be set as default-owned: + self.assertEqual(types.dirtype('foo.txt'), 'default-owned') + + if __name__ == '__main__': filterwarnings('ignore') unittest.main(module=__name__, buffer=True) |