| import os |
| |
| import pytest |
| import py |
| |
| ufoLib2 = pytest.importorskip("ufoLib2") |
| |
| from fontTools.cu2qu.ufo import CURVE_TYPE_LIB_KEY |
| from fontTools.cu2qu.cli import main |
| |
| |
| DATADIR = os.path.join(os.path.dirname(__file__), 'data') |
| |
| TEST_UFOS = [ |
| py.path.local(DATADIR).join("RobotoSubset-Regular.ufo"), |
| py.path.local(DATADIR).join("RobotoSubset-Bold.ufo"), |
| ] |
| |
| |
| @pytest.fixture |
| def test_paths(tmpdir): |
| result = [] |
| for path in TEST_UFOS: |
| new_path = tmpdir / path.basename |
| path.copy(new_path) |
| result.append(new_path) |
| return result |
| |
| |
| class MainTest(object): |
| |
| @staticmethod |
| def run_main(*args): |
| main([str(p) for p in args if p]) |
| |
| def test_single_input_no_output(self, test_paths): |
| ufo_path = test_paths[0] |
| |
| self.run_main(ufo_path) |
| |
| font = ufoLib2.Font.open(ufo_path) |
| assert font.lib[CURVE_TYPE_LIB_KEY] == "quadratic" |
| |
| def test_single_input_output_file(self, tmpdir): |
| input_path = TEST_UFOS[0] |
| output_path = tmpdir / input_path.basename |
| self.run_main('-o', output_path, input_path) |
| |
| assert output_path.check(dir=1) |
| |
| def test_multiple_inputs_output_dir(self, tmpdir): |
| output_dir = tmpdir / "output_dir" |
| self.run_main('-d', output_dir, *TEST_UFOS) |
| |
| assert output_dir.check(dir=1) |
| outputs = set(p.basename for p in output_dir.listdir()) |
| assert "RobotoSubset-Regular.ufo" in outputs |
| assert "RobotoSubset-Bold.ufo" in outputs |
| |
| def test_interpolatable_inplace(self, test_paths): |
| self.run_main('-i', *test_paths) |
| self.run_main('-i', *test_paths) # idempotent |
| |
| @pytest.mark.parametrize( |
| "mode", ["", "-i"], ids=["normal", "interpolatable"]) |
| def test_copytree(self, mode, tmpdir): |
| output_dir = tmpdir / "output_dir" |
| self.run_main(mode, '-d', output_dir, *TEST_UFOS) |
| |
| output_dir_2 = tmpdir / "output_dir_2" |
| # no conversion when curves are already quadratic, just copy |
| self.run_main(mode, '-d', output_dir_2, *output_dir.listdir()) |
| # running again overwrites existing with the copy |
| self.run_main(mode, '-d', output_dir_2, *output_dir.listdir()) |
| |
| def test_multiprocessing(self, tmpdir, test_paths): |
| self.run_main(*(test_paths + ["-j"])) |
| |
| def test_keep_direction(self, test_paths): |
| self.run_main('--keep-direction', *test_paths) |
| |
| def test_conversion_error(self, test_paths): |
| self.run_main('--conversion-error', 0.002, *test_paths) |
| |
| def test_conversion_error_short(self, test_paths): |
| self.run_main('-e', 0.003, test_paths[0]) |