summaryrefslogtreecommitdiff
path: root/test/CheckTests.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/CheckTests.py')
-rwxr-xr-xtest/CheckTests.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/test/CheckTests.py b/test/CheckTests.py
new file mode 100755
index 00000000..1a364ff4
--- /dev/null
+++ b/test/CheckTests.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+
+import sys
+import re
+import os
+
+from os.path import *
+from subprocess import Popen, PIPE
+
+ledger_binary = sys.argv[1]
+source_topdir = sys.argv[2]
+
+documented_options = []
+for line in open(join(source_topdir, 'doc', 'ledger.1')):
+ match = re.match('\.It Fl \\\\-([-A-Za-z]+)', line)
+ if match:
+ option = match.group(1)
+ if option not in documented_options:
+ documented_options.append(option)
+
+pipe = Popen('%s --debug option.names parse true' % ledger_binary,
+ shell=True, stdout=PIPE, stderr=PIPE)
+errors = 0
+
+untested_options = [
+ 'anon',
+ 'args-only',
+ 'cache',
+ 'debug',
+ 'download',
+ 'file',
+ 'force-color',
+ 'force-pager',
+ 'full-help',
+ 'help',
+ 'help-calc',
+ 'help-comm',
+ 'help-disp',
+ 'import',
+ 'init-file',
+ 'no-color',
+ 'options',
+ 'price-db',
+ 'price-exp',
+ 'revalued-total',
+ 'script',
+ 'seed',
+ 'trace',
+ 'verbose',
+ 'verify',
+ 'version'
+]
+
+for line in pipe.stderr:
+ match = re.search('\[DEBUG\] Option: (.*)', line)
+ if match:
+ option = match.group(1)
+
+ option = re.sub('_', '-', option)
+ option = re.sub('-$', '', option)
+
+ if option not in untested_options and \
+ not exists(join(source_topdir, 'test', 'baseline',
+ 'opt-%s.test' % option)):
+ print "Baseline test missing for --%s" % option
+ errors += 1
+
+ if option not in documented_options:
+ print "Man page entry missing for --%s" % option
+ errors += 1
+ else:
+ documented_options.remove(option)
+
+known_alternates = [
+ 'cost',
+ 'first',
+ 'import',
+ 'last',
+ 'leeway',
+ 'period-sort'
+]
+
+for option in documented_options:
+ if option not in known_alternates:
+ print "Man page entry for unknown option --%s" % option
+
+sys.exit(errors)