about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorhut <hut@hut.pm>2018-01-26 16:02:23 +0100
committerhut <hut@hut.pm>2018-01-26 16:02:23 +0100
commita410d09312402d158322f324715d16a9f08caa5f (patch)
tree5b9909e8d12e97521367f5ccf492e8c57ed3c7ea
parente347b6cf556b4a39f5547ec9fd1ae5884d7820a9 (diff)
downloadranger-a410d09312402d158322f324715d16a9f08caa5f.tar.gz
added test script that checks for man page completeness
-rwxr-xr-xtests/manpage_completion_test.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/manpage_completion_test.py b/tests/manpage_completion_test.py
new file mode 100755
index 00000000..bfc8fa22
--- /dev/null
+++ b/tests/manpage_completion_test.py
@@ -0,0 +1,54 @@
+#!/usr/bin/python
+
+import os.path
+import re
+import sys
+
+
+# Add relevant ranger module to PATH... there surely is a better way to do this...
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
+
+
+def test(boolean, errormessage):
+    if not boolean:
+        sys.stderr.write('TEST FAILURE: ')
+        sys.stderr.write(errormessage)
+        sys.stderr.write('\n')
+        sys.stderr.flush()
+
+
+def get_path_of_man_page():
+    dirpath_of_this_file = os.path.dirname(__file__)
+    return os.path.join(dirpath_of_this_file, '..', 'doc', 'ranger.pod')
+
+
+def read_manpage():
+    path = get_path_of_man_page()
+    return open(path, 'r').read()
+
+
+def get_sections():
+    manpage = read_manpage()
+    parts = manpage.split('=head1 ')
+    sections = dict()
+    for part in parts:
+        if '\n' in part:
+            section_name, section_content = part.split('\n', 1)
+            sections[section_name] = section_content
+        else:
+            pass
+    return sections
+
+
+def check_if_settings_are_documented():
+    from ranger.container.settings import ALLOWED_SETTINGS
+    sections = get_sections()
+    setting_section = sections['SETTINGS']
+    matcher_pattern = r'^=item [\w\d_, ]*{setting}'
+    for setting in ALLOWED_SETTINGS:
+        matcher = re.compile(matcher_pattern.format(setting=setting), re.M)
+        test(matcher.search(setting_section), ('Setting %s is not documented in the man page!' % setting))
+
+
+if __name__ == '__main__':
+    check_if_settings_are_documented()