fonttools/Tests/ttLib/main_test.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

106 lines
2.9 KiB
Python
Raw Permalink Normal View History

import subprocess
import sys
import tempfile
from pathlib import Path
from fontTools.ttLib import __main__, TTFont, TTCollection
import pytest
TEST_DATA = Path(__file__).parent / "data"
@pytest.fixture
def ttfont_path():
font = TTFont()
font.importXML(TEST_DATA / "TestTTF-Regular.ttx")
with tempfile.NamedTemporaryFile(suffix=".ttf", delete=False) as fp:
font_path = Path(fp.name)
font.save(font_path)
yield font_path
font_path.unlink()
@pytest.fixture
def ttcollection_path():
font1 = TTFont()
font1.importXML(TEST_DATA / "TestTTF-Regular.ttx")
font2 = TTFont()
font2.importXML(TEST_DATA / "TestTTF-Regular.ttx")
coll = TTCollection()
coll.fonts = [font1, font2]
with tempfile.NamedTemporaryFile(suffix=".ttf", delete=False) as fp:
collection_path = Path(fp.name)
coll.save(collection_path)
yield collection_path
collection_path.unlink()
@pytest.fixture(params=[None, "woff"])
def flavor(request):
return request.param
def test_ttLib_main_as_subprocess(ttfont_path):
subprocess.run(
[sys.executable, "-m", "fontTools.ttLib", str(ttfont_path)], check=True
)
def test_ttLib_open_ttfont(ttfont_path):
__main__.main([str(ttfont_path)])
def test_ttLib_open_save_ttfont(tmp_path, ttfont_path, flavor):
output_path = tmp_path / "TestTTF-Regular.ttf"
args = ["-o", str(output_path), str(ttfont_path)]
if flavor is not None:
args.extend(["--flavor", flavor])
__main__.main(args)
assert output_path.exists()
assert TTFont(output_path).getGlyphOrder() == TTFont(ttfont_path).getGlyphOrder()
def test_ttLib_open_ttcollection(ttcollection_path):
__main__.main(["-y", "0", str(ttcollection_path)])
def test_ttLib_open_ttcollection_save_single_font(tmp_path, ttcollection_path, flavor):
for i in range(2):
output_path = tmp_path / f"TestTTF-Regular#{i}.ttf"
args = ["-y", str(i), "-o", str(output_path), str(ttcollection_path)]
if flavor is not None:
args.extend(["--flavor", flavor])
__main__.main(args)
assert output_path.exists()
assert (
TTFont(output_path).getGlyphOrder()
== TTCollection(ttcollection_path)[i].getGlyphOrder()
)
def test_ttLib_open_ttcollection_save_ttcollection(tmp_path, ttcollection_path):
output_path = tmp_path / "TestTTF.ttc"
__main__.main(["-o", str(output_path), str(ttcollection_path)])
assert output_path.exists()
assert len(TTCollection(output_path)) == len(TTCollection(ttcollection_path))
def test_ttLib_open_multiple_fonts_save_ttcollection(tmp_path, ttfont_path):
output_path = tmp_path / "TestTTF.ttc"
__main__.main(["-o", str(output_path), str(ttfont_path), str(ttfont_path)])
assert output_path.exists()
coll = TTCollection(output_path)
assert len(coll) == 2
assert coll[0].getGlyphOrder() == coll[1].getGlyphOrder()