blob: 9b8fcb1475f80062646464340af20528324250c6 [file] [log] [blame]
# Copyright (C) 2025 fontconfig Authors
# SPDX-License-Identifier: HPND
from fctest import FcTest, FcTestFont
from pathlib import Path
from tempfile import TemporaryDirectory
import hashlib
import os
import pytest
import shutil
@pytest.fixture
def fctest():
return FcTest()
@pytest.fixture
def fcfont():
return FcTestFont()
@pytest.mark.skipif(not not os.getenv('EXEEXT'), reason='not working on Win32')
def test_sysroot(fctest, fcfont):
basedir = TemporaryDirectory(prefix='fontconfig.',
suffix='.sysroot')
cachedir = Path(basedir.name) / Path(fctest.cachedir.name).relative_to('/')
cachedir.mkdir(parents=True, exist_ok=True)
fontdir = Path(basedir.name) / Path(fctest.fontdir.name).relative_to('/')
fontdir.mkdir(parents=True, exist_ok=True)
configdir = Path(basedir.name) / Path(fctest._conffile.name).parent.relative_to('/')
configdir.mkdir(parents=True, exist_ok=True)
fctest.setup()
fctest.install_font(fcfont.fonts[0], fontdir)
shutil.copy2(fctest._conffile.name, configdir / Path(fctest._conffile.name).name)
for ret, stdout, stderr in fctest.run_cache(['-y', basedir.name]):
assert ret == 0, stderr
font_files = [fn.name for fn in fontdir.glob('*.pcf')]
assert len(font_files) == 1, font_files
cache_files = [c.name for c in cachedir.glob('*cache*')]
assert len(cache_files) == 1, cache_files
md5 = hashlib.md5()
md5.update(fctest.fontdir.name.encode('utf-8'))
cache_files_based_on_md5 = [c.name for c in cachedir.glob(f'{md5.hexdigest()}*')]
assert len(cache_files_based_on_md5) == 1, cache_files_based_on_md5