aboutsummaryrefslogtreecommitdiffstats
path: root/test/apps/test_main.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/apps/test_main.py')
-rw-r--r--test/apps/test_main.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/test/apps/test_main.py b/test/apps/test_main.py
new file mode 100644
index 0000000..4fa094b
--- /dev/null
+++ b/test/apps/test_main.py
@@ -0,0 +1,57 @@
+
+# standard imports
+import contextlib
+import io
+import json
+import os
+import tempfile
+import unittest
+import yaml
+
+# objects to test
+from bsie.apps import main
+
+
+## code ##
+
+class TestMain(unittest.TestCase):
+ def setUp(self):
+ config = {
+ 'ReaderBuilder': {},
+ 'ExtractorBuilder': [
+ {'bsie.extractor.generic.stat.Stat': {}},
+ {'bsie.extractor.generic.path.Path': {}},
+ ]
+ }
+ # create config file
+ _, self.config_path = tempfile.mkstemp(prefix='bsie-test-', suffix='.yaml')
+ with open(self.config_path, 'wt') as cfile:
+ yaml.dump(config, cfile)
+
+ def tearDown(self):
+ if os.path.exists(self.config_path):
+ os.unlink(self.config_path)
+
+ def test_main(self):
+ # must at least pass an app
+ with contextlib.redirect_stderr(io.StringIO()):
+ self.assertRaises(SystemExit, main, [])
+ # app takes over
+ with contextlib.redirect_stderr(io.StringIO()):
+ self.assertRaises(SystemExit, main, ['info'])
+ outbuf = io.StringIO()
+ with contextlib.redirect_stdout(outbuf):
+ main(['info', '--config', self.config_path, 'predicates'])
+ self.assertEqual(set(outbuf.getvalue().strip().split('\n')), {
+ 'https://schema.bsfs.io/ie/Node/Entity#filename',
+ 'https://schema.bsfs.io/ie/Node/Entity#filesize',
+ 'https://schema.bsfs.io/core/Predicate',
+ })
+
+
+## main ##
+
+if __name__ == '__main__':
+ unittest.main()
+
+## EOF ##