From 8212916aa4336cf5b25b0e1a3ece15e881a7e7ba Mon Sep 17 00:00:00 2001 From: Miguel Sousa Date: Mon, 6 Mar 2017 02:52:06 -0800 Subject: [PATCH] [varLib tests] Test for interpolatable.py --- Tests/varLib/interpolatable_test.py | 78 +++++++++++++++++++++++++++++ setup.py | 1 + test-requirements.txt | 1 + tox.ini | 1 + 4 files changed, 81 insertions(+) create mode 100644 Tests/varLib/interpolatable_test.py create mode 100644 test-requirements.txt diff --git a/Tests/varLib/interpolatable_test.py b/Tests/varLib/interpolatable_test.py new file mode 100644 index 000000000..035f7cef6 --- /dev/null +++ b/Tests/varLib/interpolatable_test.py @@ -0,0 +1,78 @@ +from __future__ import print_function, division, absolute_import +from fontTools.misc.py23 import * +from fontTools.ttLib import TTFont +from fontTools.varLib.interpolatable import main as interpolatable_main +import os +import shutil +import sys +import tempfile +import unittest + + +class InterpolatableTest(unittest.TestCase): + def __init__(self, methodName): + unittest.TestCase.__init__(self, methodName) + # Python 3 renamed assertRaisesRegexp to assertRaisesRegex, + # and fires deprecation warnings if a program uses the old name. + if not hasattr(self, "assertRaisesRegex"): + self.assertRaisesRegex = self.assertRaisesRegexp + + def setUp(self): + self.tempdir = None + self.num_tempfiles = 0 + + def tearDown(self): + if self.tempdir: + shutil.rmtree(self.tempdir) + + @staticmethod + def get_test_input(test_file_or_folder): + path, _ = os.path.split(__file__) + return os.path.join(path, "data", test_file_or_folder) + + @staticmethod + def get_file_list(folder, suffix, prefix=''): + all_files = os.listdir(folder) + file_list = [] + for p in all_files: + if p.startswith(prefix) and p.endswith(suffix): + file_list.append(os.path.abspath(os.path.join(folder, p))) + return file_list + + def temp_path(self, suffix): + self.temp_dir() + self.num_tempfiles += 1 + return os.path.join(self.tempdir, + "tmp%d%s" % (self.num_tempfiles, suffix)) + + def temp_dir(self): + if not self.tempdir: + self.tempdir = tempfile.mkdtemp() + + def compile_font(self, path, suffix, temp_dir): + ttx_filename = os.path.basename(path) + savepath = os.path.join(temp_dir, ttx_filename.replace('.ttx', suffix)) + font = TTFont(recalcBBoxes=False, recalcTimestamp=False) + font.importXML(path) + font.save(savepath, reorderTables=None) + return font, savepath + +# ----- +# Tests +# ----- + + def test_interpolatable_ttf(self): + suffix = '.ttf' + ttx_dir = self.get_test_input('master_ttx_interpolatable_ttf') + + self.temp_dir() + ttx_paths = self.get_file_list(ttx_dir, '.ttx', 'TestFamily2-') + for path in ttx_paths: + self.compile_font(path, suffix, self.tempdir) + + ttf_paths = self.get_file_list(self.tempdir, suffix) + self.assertIsNone(interpolatable_main(ttf_paths)) + + +if __name__ == "__main__": + sys.exit(unittest.main()) diff --git a/setup.py b/setup.py index e1c99b825..adfca6af4 100755 --- a/setup.py +++ b/setup.py @@ -326,6 +326,7 @@ setup( setup_requires=pytest_runner + wheel + bumpversion, tests_require=[ 'pytest>=3.0', + 'munkres', ], entry_points={ 'console_scripts': [ diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 000000000..87b7de336 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1 @@ +munkres diff --git a/tox.ini b/tox.ini index 78c42a34b..45af3e4a0 100644 --- a/tox.ini +++ b/tox.ini @@ -11,6 +11,7 @@ basepython = deps = cov: coverage>=4.3 pytest + munkres -rrequirements.txt install_command = pip install -v {opts} {packages}