From 07219685d01f803dc46c8d5465fa542c1d822cb4 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Sat, 24 Dec 2022 10:39:51 +0100 Subject: documentation: standard vs external import --- bsie.app | 4 +- bsie/__init__.py | 2 +- bsie/apps/__init__.py | 2 +- bsie/extractor/base.py | 2 +- bsie/extractor/generic/__init__.py | 2 +- bsie/reader/base.py | 2 +- bsie/utils/bsfs.py | 2 +- bsie/utils/errors.py | 2 +- bsie/utils/filematcher/__init__.py | 2 +- bsie/utils/filematcher/matcher.py | 4 +- bsie/utils/namespaces.py | 2 +- bsie/utils/node.py | 2 +- test/apps/test_index.py | 6 +- test/apps/test_info.py | 2 +- test/extractor/generic/test_constant.py | 2 +- test/reader/test_path.py | 2 +- test/utils/filematcher/test_ast.py | 232 -------------------------------- test/utils/filematcher/test_matcher.py | 232 ++++++++++++++++++++++++++++++++ test/utils/test_node.py | 2 +- 19 files changed, 255 insertions(+), 251 deletions(-) delete mode 100644 test/utils/filematcher/test_ast.py create mode 100644 test/utils/filematcher/test_matcher.py diff --git a/bsie.app b/bsie.app index ba9cee7..d5808e7 100755 --- a/bsie.app +++ b/bsie.app @@ -4,11 +4,11 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import argparse import typing -# module imports +# bsie imports import bsie import bsie.apps diff --git a/bsie/__init__.py b/bsie/__init__.py index 8d2308c..c253f39 100644 --- a/bsie/__init__.py +++ b/bsie/__init__.py @@ -4,7 +4,7 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import collections import typing diff --git a/bsie/apps/__init__.py b/bsie/apps/__init__.py index a548c3c..1c3d0f9 100644 --- a/bsie/apps/__init__.py +++ b/bsie/apps/__init__.py @@ -4,7 +4,7 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import typing # inner-module imports diff --git a/bsie/extractor/base.py b/bsie/extractor/base.py index c44021b..95689a5 100644 --- a/bsie/extractor/base.py +++ b/bsie/extractor/base.py @@ -4,7 +4,7 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import abc import typing diff --git a/bsie/extractor/generic/__init__.py b/bsie/extractor/generic/__init__.py index 0cb7e7f..4783949 100644 --- a/bsie/extractor/generic/__init__.py +++ b/bsie/extractor/generic/__init__.py @@ -7,7 +7,7 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import typing # exports diff --git a/bsie/reader/base.py b/bsie/reader/base.py index cbabd36..08d6cc6 100644 --- a/bsie/reader/base.py +++ b/bsie/reader/base.py @@ -8,7 +8,7 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import abc import typing diff --git a/bsie/utils/bsfs.py b/bsie/utils/bsfs.py index 0b88479..ef5db31 100644 --- a/bsie/utils/bsfs.py +++ b/bsie/utils/bsfs.py @@ -4,7 +4,7 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import typing # bsfs imports diff --git a/bsie/utils/errors.py b/bsie/utils/errors.py index 5fafd5b..fbc16f7 100644 --- a/bsie/utils/errors.py +++ b/bsie/utils/errors.py @@ -4,7 +4,7 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import typing # exports diff --git a/bsie/utils/filematcher/__init__.py b/bsie/utils/filematcher/__init__.py index b1c1b45..1e23e4e 100644 --- a/bsie/utils/filematcher/__init__.py +++ b/bsie/utils/filematcher/__init__.py @@ -4,7 +4,7 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import typing # inner-module imports diff --git a/bsie/utils/filematcher/matcher.py b/bsie/utils/filematcher/matcher.py index 164beeb..a279a4b 100644 --- a/bsie/utils/filematcher/matcher.py +++ b/bsie/utils/filematcher/matcher.py @@ -4,11 +4,13 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2021 """ -# imports +# standard imports from collections.abc import Callable, Collection, Hashable import abc import os import typing + +# external imports import magic # exports diff --git a/bsie/utils/namespaces.py b/bsie/utils/namespaces.py index a29fc1b..2d0b535 100644 --- a/bsie/utils/namespaces.py +++ b/bsie/utils/namespaces.py @@ -4,7 +4,7 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import typing # inner-module imports diff --git a/bsie/utils/node.py b/bsie/utils/node.py index ecf39cd..91e4f37 100644 --- a/bsie/utils/node.py +++ b/bsie/utils/node.py @@ -4,7 +4,7 @@ Part of the bsie module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import typing # bsie imports diff --git a/test/apps/test_index.py b/test/apps/test_index.py index 9cdc656..6fc3335 100644 --- a/test/apps/test_index.py +++ b/test/apps/test_index.py @@ -4,13 +4,15 @@ Part of the bsie test suite. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import contextlib import io import os -import rdflib import unittest +# external imports +import rdflib + # bsie imports from bsie.utils import ns diff --git a/test/apps/test_info.py b/test/apps/test_info.py index 6f4d98f..f52c581 100644 --- a/test/apps/test_info.py +++ b/test/apps/test_info.py @@ -4,7 +4,7 @@ Part of the bsie test suite. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import argparse import contextlib import io diff --git a/test/extractor/generic/test_constant.py b/test/extractor/generic/test_constant.py index 9dbaced..a49345b 100644 --- a/test/extractor/generic/test_constant.py +++ b/test/extractor/generic/test_constant.py @@ -4,7 +4,7 @@ Part of the bsie test suite. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import unittest # bsie imports diff --git a/test/reader/test_path.py b/test/reader/test_path.py index fd7bc5a..95e447f 100644 --- a/test/reader/test_path.py +++ b/test/reader/test_path.py @@ -4,7 +4,7 @@ Part of the bsie test suite. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import unittest # objects to test diff --git a/test/utils/filematcher/test_ast.py b/test/utils/filematcher/test_ast.py deleted file mode 100644 index ff4b86d..0000000 --- a/test/utils/filematcher/test_ast.py +++ /dev/null @@ -1,232 +0,0 @@ -""" - -Part of the bsie test suite. -A copy of the license is provided with the project. -Author: Matthias Baumgartner, 2022 -""" -# imports -import os -import stat -import tempfile -import unittest - -# objects to test -from bsie.utils.filematcher import matcher - - -## code ## - -class FakeMatcher(matcher.Matcher): - def __call__(self, *args, **kwargs): - pass - -class FakeCriterion(matcher.Criterion): - def __call__(self, *args, **kwargs): - pass - -class FakeAggregate(matcher.Aggregate): - def __call__(self, *args, **kwargs): - pass - -class TestMatcher(unittest.TestCase): - def setUp(self): - # paths - self.image = os.path.join(os.path.dirname(__file__), 'testimage.jpg') - self.text= os.path.join(os.path.dirname(__file__), 'textfile.t') - self.empty = os.path.join(os.path.dirname(__file__), 'empty') - self.missing = os.path.join(os.path.dirname(__file__), 'missing.jpg') - - def test_matcher_skeleton(self): - # node: iteration and length - self.assertSetEqual(set(iter(FakeMatcher(1,2,3))), {1,2,3}) - self.assertSetEqual(set(iter(FakeMatcher([1,2,3]))), {1,2,3}) - self.assertEqual(len(FakeMatcher([1,2,3])), 3) - self.assertEqual(len(FakeMatcher(1,2,3)), 3) - self.assertEqual(len(FakeMatcher()), 0) - self.assertIn(1, FakeMatcher(1,2,3)) - self.assertIn(3, FakeMatcher([1,2,3])) - self.assertNotIn(0, FakeMatcher(1,2,3)) - self.assertNotIn(4, FakeMatcher([1,2,3])) - # node: comparison - self.assertEqual(FakeMatcher([1,2,3]), FakeMatcher([1,2,3])) - self.assertEqual(FakeMatcher(1,2,3), FakeMatcher(1,2,3)) - self.assertEqual(FakeMatcher(1,2,3), FakeMatcher([1,2,3])) - self.assertEqual(FakeMatcher(1,2,3), FakeMatcher((1,2,3))) - self.assertNotEqual(FakeMatcher(1,2,3), FakeMatcher(1,2,4)) - self.assertNotEqual(FakeMatcher(1,2,3), FakeMatcher(1,2,3,4)) - self.assertNotEqual(FakeMatcher(1,2,3), FakeMatcher(1,2)) - self.assertEqual(hash(FakeMatcher([1,2,3])), hash(FakeMatcher([1,2,3]))) - self.assertEqual(hash(FakeMatcher(1,2,3)), hash(FakeMatcher(1,2,3))) - self.assertEqual(hash(FakeMatcher(1,2,3)), hash(FakeMatcher([1,2,3]))) - self.assertEqual(hash(FakeMatcher(1,2,3)), hash(FakeMatcher((1,2,3)))) - # node: representation - self.assertEqual(repr(FakeMatcher(1,2,3)), 'FakeMatcher({1, 2, 3})') - - # criterion - self.assertEqual(repr(FakeCriterion(1,2,3)), 'FakeCriterion({1, 2, 3})') - self.assertEqual(hash(FakeCriterion(1,2,3)), hash(FakeCriterion(1,2,3))) - self.assertEqual(FakeCriterion(1,2,3), FakeCriterion([1,2,3])) - self.assertNotEqual(FakeCriterion(1,2,3), FakeCriterion(1,2)) - self.assertNotEqual(FakeCriterion(1,2,3), FakeMatcher(1,2,3)) - self.assertSetEqual(FakeCriterion(1,2,3).accepted(), {1,2,3}) - - # aggregate - self.assertEqual(repr(FakeAggregate(1,2,3)), 'FakeAggregate({1, 2, 3})') - self.assertNotEqual(FakeAggregate(1,2,3), FakeMatcher(1,2,3)) - - def test_any(self): - self.assertTrue(matcher.Any()(self.image)) - self.assertTrue(matcher.Any()(self.text)) - self.assertTrue(matcher.Any()(self.missing)) - self.assertTrue(matcher.Any()(self.empty)) - - def test_nothing(self): - self.assertFalse(matcher.Nothing()(self.image)) - self.assertFalse(matcher.Nothing()(self.text)) - self.assertFalse(matcher.Nothing()(self.missing)) - self.assertFalse(matcher.Nothing()(self.empty)) - - def test_exists(self): - self.assertTrue(matcher.Exists()(self.image)) - self.assertTrue(matcher.Exists()(self.text)) - self.assertTrue(matcher.Exists()(self.empty)) - self.assertFalse(matcher.Exists()(self.missing)) - - def test_isfile(self): - self.assertTrue(matcher.IsFile()(self.image)) - self.assertTrue(matcher.IsFile()(self.text)) - self.assertFalse(matcher.IsFile()(self.missing)) - self.assertFalse(matcher.IsFile()(os.path.dirname(self.image))) - - def test_isdir(self): - self.assertTrue(matcher.IsDir()(os.path.dirname(self.image))) - self.assertFalse(matcher.IsDir()(self.image)) - self.assertFalse(matcher.IsDir()(self.text)) - self.assertFalse(matcher.IsDir()(self.missing)) - - def test_islink(self): - self.assertFalse(matcher.IsLink()(os.path.dirname(self.image))) - self.assertFalse(matcher.IsLink()(self.image)) - self.assertFalse(matcher.IsLink()(self.text)) - _, temp = tempfile.mkstemp(prefix='bsie-test-') - templink = temp + '-link' - os.symlink(temp, templink) - self.assertTrue(matcher.IsLink()(templink)) - os.unlink(templink) - os.unlink(temp) - - def test_isabs(self): - self.assertTrue(matcher.IsAbs()(os.path.abspath(self.image))) - self.assertTrue(matcher.IsAbs()(os.path.abspath(self.text))) - self.assertFalse(matcher.IsAbs()(os.path.relpath(self.text, os.path.dirname(self.text)))) - - def test_isrel(self): - self.assertFalse(matcher.IsRel()(os.path.abspath(self.image))) - self.assertFalse(matcher.IsRel()(os.path.abspath(self.text))) - self.assertTrue(matcher.IsRel()(os.path.relpath(self.text, os.path.dirname(self.text)))) - self.assertTrue(matcher.IsRel()(os.path.basename(self.text))) - - def test_ismount(self): - self.assertFalse(matcher.IsMount()(self.image)) - self.assertFalse(matcher.IsMount()(self.text)) - self.assertFalse(matcher.IsMount()(self.missing)) - # there's no reasonable way to test a positive case - - def test_isempty(self): - self.assertTrue(matcher.IsEmpty()(self.empty)) - self.assertFalse(matcher.IsEmpty()(self.image)) - self.assertFalse(matcher.IsEmpty()(self.text)) - self.assertFalse(matcher.IsEmpty()(self.missing)) - - def test_isreadable(self): - self.assertTrue(matcher.IsReadable()(self.empty)) - self.assertTrue(matcher.IsReadable()(self.image)) - self.assertFalse(matcher.IsReadable()(self.missing)) - _, temp = tempfile.mkstemp(prefix='bsie-test-') - os.chmod(temp, 0) - self.assertFalse(matcher.IsReadable()(temp)) - os.unlink(temp) - - def test_iswritable(self): - self.assertTrue(matcher.IsWritable()(self.empty)) - self.assertTrue(matcher.IsWritable()(self.image)) - self.assertFalse(matcher.IsWritable()(self.missing)) - _, temp = tempfile.mkstemp(prefix='bsie-test-') - os.chmod(temp, 0) - self.assertFalse(matcher.IsWritable()(temp)) - os.unlink(temp) - - def test_isexecutable(self): - self.assertFalse(matcher.IsExecutable()(self.empty)) - self.assertFalse(matcher.IsExecutable()(self.image)) - self.assertFalse(matcher.IsExecutable()(self.missing)) - _, temp = tempfile.mkstemp(prefix='bsie-test-') - os.chmod(temp, stat.S_IEXEC) - self.assertTrue(matcher.IsExecutable()(temp)) - os.unlink(temp) - - def test_extension(self): - self.assertTrue(matcher.Extension('jpg')(self.image)) - self.assertTrue(matcher.Extension('jpg', 'png')(self.image)) - self.assertTrue(matcher.Extension('jpg', 't')(self.text)) - self.assertTrue(matcher.Extension('jpg', 'png', 't')(self.missing)) - self.assertTrue(matcher.Extension('')(self.empty)) - - self.assertFalse(matcher.Extension()(self.image)) - self.assertFalse(matcher.Extension('jpeg')(self.image)) - self.assertFalse(matcher.Extension('.t')(self.text)) - self.assertFalse(matcher.Extension('png', 't')(self.missing)) - self.assertFalse(matcher.Extension('tiff')(self.empty)) - - def test_mime(self): - self.assertTrue(matcher.Mime('image/jpeg')(self.image)) - self.assertTrue(matcher.Mime('image/tiff', 'image/jpeg')(self.image)) - self.assertTrue(matcher.Mime('text/plain', 'image/jpeg')(self.text)) - self.assertTrue(matcher.Mime('inode/x-empty')(self.empty)) - - self.assertFalse(matcher.Mime()(self.image)) - self.assertFalse(matcher.Mime('image')(self.image)) - self.assertFalse(matcher.Mime('image/tiff', 'image/png')(self.image)) - self.assertFalse(matcher.Mime('')(self.text)) - self.assertFalse(matcher.Mime('text')(self.text)) - self.assertFalse(matcher.Mime('tiff')(self.empty)) - self.assertFalse(matcher.Mime()(self.empty)) - self.assertFalse(matcher.Mime('')(self.empty)) - self.assertFalse(matcher.Mime()(self.missing)) - self.assertFalse(matcher.Mime('')(self.missing)) - self.assertFalse(matcher.Mime('inode/x-empty')(self.missing)) - - def test_not(self): - self.assertFalse(matcher.NOT(matcher.Mime('image/jpeg'))(self.image)) - self.assertTrue(matcher.NOT(matcher.Mime('text/plain'))(self.image)) - - def test_and(self): - self.assertTrue(matcher.And(matcher.Mime('image/jpeg'), matcher.Extension('jpg'))(self.image)) - self.assertTrue(matcher.And(matcher.Mime('image/jpeg'), matcher.Extension('jpg', 'tiff'))(self.image)) - self.assertTrue(matcher.And(matcher.Mime('text/plain'), matcher.Extension('t', 'tiff'))(self.text)) - - self.assertFalse(matcher.And(matcher.Mime('image/jpeg'), matcher.Extension('tiff'))(self.image)) - self.assertFalse(matcher.And(matcher.Mime('text/plain'), matcher.Extension('jpg'))(self.image)) - self.assertFalse(matcher.And(matcher.Mime('inode/x-empty'), matcher.Extension('jpg'))(self.missing)) - self.assertFalse(matcher.And(matcher.Mime('image/jpeg'), matcher.Extension('jpg', 't'))(self.text)) - - def test_or(self): - self.assertTrue(matcher.Or(matcher.Mime('image/jpeg'))(self.image)) - self.assertFalse(matcher.Or(matcher.Mime('text/plain'))(self.image)) - - self.assertTrue(matcher.Or(matcher.Mime('image/jpeg'), matcher.Extension('jpg'))(self.image)) - self.assertTrue(matcher.Or(matcher.Mime('image/jpeg'), matcher.Extension('t'))(self.image)) - self.assertTrue(matcher.Or(matcher.Mime('text/plain'), matcher.Extension('jpg', 'tiff'))(self.image)) - self.assertTrue(matcher.Or(matcher.Mime('text/plain'), matcher.Extension('tiff'))(self.text)) - self.assertTrue(matcher.Or(matcher.Mime('image/jpeg'), matcher.Extension('jpg'))(self.missing)) - - self.assertFalse(matcher.Or(matcher.Mime('text/plain'), matcher.Extension('tiff'))(self.image)) - self.assertFalse(matcher.Or(matcher.Mime('inode/x-empty'), matcher.Extension('jpg', 'tiff'))(self.text)) - - -## main ## - -if __name__ == '__main__': - unittest.main() - -## EOF ## diff --git a/test/utils/filematcher/test_matcher.py b/test/utils/filematcher/test_matcher.py new file mode 100644 index 0000000..c3cccee --- /dev/null +++ b/test/utils/filematcher/test_matcher.py @@ -0,0 +1,232 @@ +""" + +Part of the bsie test suite. +A copy of the license is provided with the project. +Author: Matthias Baumgartner, 2022 +""" +# standard imports +import os +import stat +import tempfile +import unittest + +# objects to test +from bsie.utils.filematcher import matcher + + +## code ## + +class FakeMatcher(matcher.Matcher): + def __call__(self, *args, **kwargs): + pass + +class FakeCriterion(matcher.Criterion): + def __call__(self, *args, **kwargs): + pass + +class FakeAggregate(matcher.Aggregate): + def __call__(self, *args, **kwargs): + pass + +class TestMatcher(unittest.TestCase): + def setUp(self): + # paths + self.image = os.path.join(os.path.dirname(__file__), 'testimage.jpg') + self.text= os.path.join(os.path.dirname(__file__), 'textfile.t') + self.empty = os.path.join(os.path.dirname(__file__), 'empty') + self.missing = os.path.join(os.path.dirname(__file__), 'missing.jpg') + + def test_matcher_skeleton(self): + # node: iteration and length + self.assertSetEqual(set(iter(FakeMatcher(1,2,3))), {1,2,3}) + self.assertSetEqual(set(iter(FakeMatcher([1,2,3]))), {1,2,3}) + self.assertEqual(len(FakeMatcher([1,2,3])), 3) + self.assertEqual(len(FakeMatcher(1,2,3)), 3) + self.assertEqual(len(FakeMatcher()), 0) + self.assertIn(1, FakeMatcher(1,2,3)) + self.assertIn(3, FakeMatcher([1,2,3])) + self.assertNotIn(0, FakeMatcher(1,2,3)) + self.assertNotIn(4, FakeMatcher([1,2,3])) + # node: comparison + self.assertEqual(FakeMatcher([1,2,3]), FakeMatcher([1,2,3])) + self.assertEqual(FakeMatcher(1,2,3), FakeMatcher(1,2,3)) + self.assertEqual(FakeMatcher(1,2,3), FakeMatcher([1,2,3])) + self.assertEqual(FakeMatcher(1,2,3), FakeMatcher((1,2,3))) + self.assertNotEqual(FakeMatcher(1,2,3), FakeMatcher(1,2,4)) + self.assertNotEqual(FakeMatcher(1,2,3), FakeMatcher(1,2,3,4)) + self.assertNotEqual(FakeMatcher(1,2,3), FakeMatcher(1,2)) + self.assertEqual(hash(FakeMatcher([1,2,3])), hash(FakeMatcher([1,2,3]))) + self.assertEqual(hash(FakeMatcher(1,2,3)), hash(FakeMatcher(1,2,3))) + self.assertEqual(hash(FakeMatcher(1,2,3)), hash(FakeMatcher([1,2,3]))) + self.assertEqual(hash(FakeMatcher(1,2,3)), hash(FakeMatcher((1,2,3)))) + # node: representation + self.assertEqual(repr(FakeMatcher(1,2,3)), 'FakeMatcher({1, 2, 3})') + + # criterion + self.assertEqual(repr(FakeCriterion(1,2,3)), 'FakeCriterion({1, 2, 3})') + self.assertEqual(hash(FakeCriterion(1,2,3)), hash(FakeCriterion(1,2,3))) + self.assertEqual(FakeCriterion(1,2,3), FakeCriterion([1,2,3])) + self.assertNotEqual(FakeCriterion(1,2,3), FakeCriterion(1,2)) + self.assertNotEqual(FakeCriterion(1,2,3), FakeMatcher(1,2,3)) + self.assertSetEqual(FakeCriterion(1,2,3).accepted(), {1,2,3}) + + # aggregate + self.assertEqual(repr(FakeAggregate(1,2,3)), 'FakeAggregate({1, 2, 3})') + self.assertNotEqual(FakeAggregate(1,2,3), FakeMatcher(1,2,3)) + + def test_any(self): + self.assertTrue(matcher.Any()(self.image)) + self.assertTrue(matcher.Any()(self.text)) + self.assertTrue(matcher.Any()(self.missing)) + self.assertTrue(matcher.Any()(self.empty)) + + def test_nothing(self): + self.assertFalse(matcher.Nothing()(self.image)) + self.assertFalse(matcher.Nothing()(self.text)) + self.assertFalse(matcher.Nothing()(self.missing)) + self.assertFalse(matcher.Nothing()(self.empty)) + + def test_exists(self): + self.assertTrue(matcher.Exists()(self.image)) + self.assertTrue(matcher.Exists()(self.text)) + self.assertTrue(matcher.Exists()(self.empty)) + self.assertFalse(matcher.Exists()(self.missing)) + + def test_isfile(self): + self.assertTrue(matcher.IsFile()(self.image)) + self.assertTrue(matcher.IsFile()(self.text)) + self.assertFalse(matcher.IsFile()(self.missing)) + self.assertFalse(matcher.IsFile()(os.path.dirname(self.image))) + + def test_isdir(self): + self.assertTrue(matcher.IsDir()(os.path.dirname(self.image))) + self.assertFalse(matcher.IsDir()(self.image)) + self.assertFalse(matcher.IsDir()(self.text)) + self.assertFalse(matcher.IsDir()(self.missing)) + + def test_islink(self): + self.assertFalse(matcher.IsLink()(os.path.dirname(self.image))) + self.assertFalse(matcher.IsLink()(self.image)) + self.assertFalse(matcher.IsLink()(self.text)) + _, temp = tempfile.mkstemp(prefix='bsie-test-') + templink = temp + '-link' + os.symlink(temp, templink) + self.assertTrue(matcher.IsLink()(templink)) + os.unlink(templink) + os.unlink(temp) + + def test_isabs(self): + self.assertTrue(matcher.IsAbs()(os.path.abspath(self.image))) + self.assertTrue(matcher.IsAbs()(os.path.abspath(self.text))) + self.assertFalse(matcher.IsAbs()(os.path.relpath(self.text, os.path.dirname(self.text)))) + + def test_isrel(self): + self.assertFalse(matcher.IsRel()(os.path.abspath(self.image))) + self.assertFalse(matcher.IsRel()(os.path.abspath(self.text))) + self.assertTrue(matcher.IsRel()(os.path.relpath(self.text, os.path.dirname(self.text)))) + self.assertTrue(matcher.IsRel()(os.path.basename(self.text))) + + def test_ismount(self): + self.assertFalse(matcher.IsMount()(self.image)) + self.assertFalse(matcher.IsMount()(self.text)) + self.assertFalse(matcher.IsMount()(self.missing)) + # there's no reasonable way to test a positive case + + def test_isempty(self): + self.assertTrue(matcher.IsEmpty()(self.empty)) + self.assertFalse(matcher.IsEmpty()(self.image)) + self.assertFalse(matcher.IsEmpty()(self.text)) + self.assertFalse(matcher.IsEmpty()(self.missing)) + + def test_isreadable(self): + self.assertTrue(matcher.IsReadable()(self.empty)) + self.assertTrue(matcher.IsReadable()(self.image)) + self.assertFalse(matcher.IsReadable()(self.missing)) + _, temp = tempfile.mkstemp(prefix='bsie-test-') + os.chmod(temp, 0) + self.assertFalse(matcher.IsReadable()(temp)) + os.unlink(temp) + + def test_iswritable(self): + self.assertTrue(matcher.IsWritable()(self.empty)) + self.assertTrue(matcher.IsWritable()(self.image)) + self.assertFalse(matcher.IsWritable()(self.missing)) + _, temp = tempfile.mkstemp(prefix='bsie-test-') + os.chmod(temp, 0) + self.assertFalse(matcher.IsWritable()(temp)) + os.unlink(temp) + + def test_isexecutable(self): + self.assertFalse(matcher.IsExecutable()(self.empty)) + self.assertFalse(matcher.IsExecutable()(self.image)) + self.assertFalse(matcher.IsExecutable()(self.missing)) + _, temp = tempfile.mkstemp(prefix='bsie-test-') + os.chmod(temp, stat.S_IEXEC) + self.assertTrue(matcher.IsExecutable()(temp)) + os.unlink(temp) + + def test_extension(self): + self.assertTrue(matcher.Extension('jpg')(self.image)) + self.assertTrue(matcher.Extension('jpg', 'png')(self.image)) + self.assertTrue(matcher.Extension('jpg', 't')(self.text)) + self.assertTrue(matcher.Extension('jpg', 'png', 't')(self.missing)) + self.assertTrue(matcher.Extension('')(self.empty)) + + self.assertFalse(matcher.Extension()(self.image)) + self.assertFalse(matcher.Extension('jpeg')(self.image)) + self.assertFalse(matcher.Extension('.t')(self.text)) + self.assertFalse(matcher.Extension('png', 't')(self.missing)) + self.assertFalse(matcher.Extension('tiff')(self.empty)) + + def test_mime(self): + self.assertTrue(matcher.Mime('image/jpeg')(self.image)) + self.assertTrue(matcher.Mime('image/tiff', 'image/jpeg')(self.image)) + self.assertTrue(matcher.Mime('text/plain', 'image/jpeg')(self.text)) + self.assertTrue(matcher.Mime('inode/x-empty')(self.empty)) + + self.assertFalse(matcher.Mime()(self.image)) + self.assertFalse(matcher.Mime('image')(self.image)) + self.assertFalse(matcher.Mime('image/tiff', 'image/png')(self.image)) + self.assertFalse(matcher.Mime('')(self.text)) + self.assertFalse(matcher.Mime('text')(self.text)) + self.assertFalse(matcher.Mime('tiff')(self.empty)) + self.assertFalse(matcher.Mime()(self.empty)) + self.assertFalse(matcher.Mime('')(self.empty)) + self.assertFalse(matcher.Mime()(self.missing)) + self.assertFalse(matcher.Mime('')(self.missing)) + self.assertFalse(matcher.Mime('inode/x-empty')(self.missing)) + + def test_not(self): + self.assertFalse(matcher.NOT(matcher.Mime('image/jpeg'))(self.image)) + self.assertTrue(matcher.NOT(matcher.Mime('text/plain'))(self.image)) + + def test_and(self): + self.assertTrue(matcher.And(matcher.Mime('image/jpeg'), matcher.Extension('jpg'))(self.image)) + self.assertTrue(matcher.And(matcher.Mime('image/jpeg'), matcher.Extension('jpg', 'tiff'))(self.image)) + self.assertTrue(matcher.And(matcher.Mime('text/plain'), matcher.Extension('t', 'tiff'))(self.text)) + + self.assertFalse(matcher.And(matcher.Mime('image/jpeg'), matcher.Extension('tiff'))(self.image)) + self.assertFalse(matcher.And(matcher.Mime('text/plain'), matcher.Extension('jpg'))(self.image)) + self.assertFalse(matcher.And(matcher.Mime('inode/x-empty'), matcher.Extension('jpg'))(self.missing)) + self.assertFalse(matcher.And(matcher.Mime('image/jpeg'), matcher.Extension('jpg', 't'))(self.text)) + + def test_or(self): + self.assertTrue(matcher.Or(matcher.Mime('image/jpeg'))(self.image)) + self.assertFalse(matcher.Or(matcher.Mime('text/plain'))(self.image)) + + self.assertTrue(matcher.Or(matcher.Mime('image/jpeg'), matcher.Extension('jpg'))(self.image)) + self.assertTrue(matcher.Or(matcher.Mime('image/jpeg'), matcher.Extension('t'))(self.image)) + self.assertTrue(matcher.Or(matcher.Mime('text/plain'), matcher.Extension('jpg', 'tiff'))(self.image)) + self.assertTrue(matcher.Or(matcher.Mime('text/plain'), matcher.Extension('tiff'))(self.text)) + self.assertTrue(matcher.Or(matcher.Mime('image/jpeg'), matcher.Extension('jpg'))(self.missing)) + + self.assertFalse(matcher.Or(matcher.Mime('text/plain'), matcher.Extension('tiff'))(self.image)) + self.assertFalse(matcher.Or(matcher.Mime('inode/x-empty'), matcher.Extension('jpg', 'tiff'))(self.text)) + + +## main ## + +if __name__ == '__main__': + unittest.main() + +## EOF ## diff --git a/test/utils/test_node.py b/test/utils/test_node.py index c70f0b8..9feb051 100644 --- a/test/utils/test_node.py +++ b/test/utils/test_node.py @@ -4,7 +4,7 @@ Part of the bsie test suite. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ -# imports +# standard imports import unittest # bsie imports -- cgit v1.2.3