aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'cvs2svn_rcsparse/run-tests.py')
-rw-r--r--cvs2svn_rcsparse/run-tests.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/cvs2svn_rcsparse/run-tests.py b/cvs2svn_rcsparse/run-tests.py
new file mode 100644
index 0000000..eb9c3ea
--- /dev/null
+++ b/cvs2svn_rcsparse/run-tests.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python2
+
+# (Be in -*- python -*- mode.)
+#
+# ====================================================================
+# Copyright (c) 2007 CollabNet. All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://subversion.tigris.org/license-1.html.
+# If newer versions of this license are posted there, you may use a
+# newer version instead, at your option.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For exact contribution history, see the revision
+# history and logs, available at http://viewvc.tigris.org/.
+# ====================================================================
+
+"""Run tests of rcsparse code."""
+
+import sys
+import os
+import glob
+from cStringIO import StringIO
+from difflib import Differ
+
+# Since there is nontrivial logic in __init__.py, we have to import
+# parse() via that file. First make sure that the directory
+# containing this script is in the path:
+script_dir = os.path.dirname(sys.argv[0])
+sys.path.insert(0, script_dir)
+
+from __init__ import parse
+from parse_rcs_file import LoggingSink
+
+
+test_dir = os.path.join(script_dir, 'test-data')
+
+filelist = glob.glob(os.path.join(test_dir, '*,v'))
+filelist.sort()
+
+all_tests_ok = 1
+
+for filename in filelist:
+ sys.stderr.write('%s: ' % (filename,))
+ f = StringIO()
+ try:
+ parse(open(filename, 'rb'), LoggingSink(f))
+ except Exception, e:
+ sys.stderr.write('Error parsing file: %s!\n' % (e,))
+ all_tests_ok = 0
+ else:
+ output = f.getvalue()
+
+ expected_output_filename = filename[:-2] + '.out'
+ expected_output = open(expected_output_filename, 'rb').read()
+
+ if output == expected_output:
+ sys.stderr.write('OK\n')
+ else:
+ sys.stderr.write('Output does not match expected output!\n')
+ differ = Differ()
+ for diffline in differ.compare(
+ expected_output.splitlines(1), output.splitlines(1)
+ ):
+ sys.stderr.write(diffline)
+ all_tests_ok = 0
+
+if all_tests_ok:
+ sys.exit(0)
+else:
+ sys.exit(1)
+