@@ -1,12 +1,47 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
import unittest.mock
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
from generator.__main__ import copy_runtime_fonts
|
||||
from generator.arrange.generate import arrange_document
|
||||
from generator.arrange.fretboard import chord_pitch_classes, pitches_for_voicing
|
||||
from generator.styles import BUILT_IN_STYLES
|
||||
from generator.transposition import mod12
|
||||
from generator.score import normalize_score_document
|
||||
from tools import generate_pico_font
|
||||
|
||||
|
||||
class FontAssetsTests(unittest.TestCase):
|
||||
def test_font_generator_requires_kerning_backend(self):
|
||||
with unittest.mock.patch.object(generate_pico_font.features, "check_feature", return_value=False):
|
||||
with self.assertRaisesRegex(RuntimeError, "Raqm"):
|
||||
generate_pico_font.generate()
|
||||
|
||||
def test_runtime_fonts_exclude_unused_assets(self):
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
output = Path(directory)
|
||||
copy_runtime_fonts(root / "package/assets", output)
|
||||
files = {path.name for path in (output / "fonts/petaluma").iterdir()}
|
||||
self.assertEqual(files, {"Petaluma.otf", "PetalumaScript.otf", "OFL.txt"})
|
||||
|
||||
def test_font_generator_uses_explicit_build_output(self):
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
output = Path(directory) / "generated/font.cpp"
|
||||
command = [sys.executable, str(root / "tools/generate_pico_font.py"), "--output", str(output)]
|
||||
subprocess.run(command, check=True, capture_output=True, text=True)
|
||||
self.assertNotIn("std::array<pair_adjustment, 0>", output.read_text(encoding="utf-8"))
|
||||
before = output.stat().st_mtime_ns
|
||||
subprocess.run([*command, "--check"], check=True, capture_output=True, text=True)
|
||||
self.assertEqual(before, output.stat().st_mtime_ns)
|
||||
output.write_text("stale", encoding="utf-8")
|
||||
self.assertNotEqual(subprocess.run([*command, "--check"], capture_output=True).returncode, 0)
|
||||
|
||||
|
||||
class CompactScoreJsonTests(unittest.TestCase):
|
||||
|
||||
Reference in New Issue
Block a user