aboutsummaryrefslogtreecommitdiffstats
path: root/tests/files_test.py
diff options
context:
space:
mode:
authorMartin Vilcans <martin@librador.com>2012-01-31 22:43:41 +0100
committerMartin Vilcans <martin@librador.com>2012-01-31 22:43:41 +0100
commitc58355251be5d92892163f13bc927c28a65ad30b (patch)
tree013ede9b612f2d28c3b2b4c934c38c1d55103c62 /tests/files_test.py
parent193b478bb82bf13a35ba775b4321e294f89ea5f7 (diff)
downloadscreenplain-c58355251be5d92892163f13bc927c28a65ad30b.tar.gz
Added tests on actual input/output files.
This is to make sure everything works from the command-line level to avoid silly mistakes like the last bug.
Diffstat (limited to 'tests/files_test.py')
-rw-r--r--tests/files_test.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/files_test.py b/tests/files_test.py
new file mode 100644
index 0000000..38f8892
--- /dev/null
+++ b/tests/files_test.py
@@ -0,0 +1,59 @@
+# Copyright (c) 2012 Martin Vilcans
+# Licensed under the MIT license:
+# http://www.opensource.org/licenses/mit-license.php
+
+from __future__ import with_statement
+
+import unittest2
+import tempfile
+import os.path
+import shutil
+
+from screenplain.main import main
+
+source_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'files'))
+
+def read_file(path):
+ with open(path) as stream:
+ return stream.read()
+
+
+class ParseTests(unittest2.TestCase):
+ """High level tests that runs Screenplain using command line arguments.
+ """
+
+ maxDiff = None
+
+ def setUp(self):
+ self.dir = tempfile.mkdtemp()
+
+ def tearDown(self):
+ shutil.rmtree(self.dir)
+
+ def source(self, filename):
+ return os.path.join(source_dir, filename)
+
+ def target(self, name):
+ return os.path.join(self.dir, name)
+
+ def convert(
+ self,
+ input_file, output_file, expected_results_file,
+ *options
+ ):
+ input_path = self.source(input_file)
+ output_path = self.target(output_file)
+ main(list(options) + [input_path, output_path])
+ actual = read_file(output_path)
+ expected = read_file(self.source(expected_results_file))
+ return actual, expected
+
+ def test_spmd_to_fdx(self):
+ actual, expected = self.convert(
+ 'simple.spmd', 'simple.fdx', 'simple.spmd.fdx')
+ self.assertMultiLineEqual(expected, actual)
+
+ def test_spmd_to_html(self):
+ actual, expected = self.convert(
+ 'simple.spmd', 'simple.html', 'simple.spmd.html', '--bare')
+ self.assertMultiLineEqual(expected, actual)