Bug#1058338: ufo2ft: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.11" returned exit code 13
Source: ufo2ft
Version: 2.30.0-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lucas@debian.org
Usertags: ftbfs-20231212 ftbfs-trixie
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> dh_auto_test
> I: pybuild base:310: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ufo2ft/build; python3.12 -m pytest tests
> ============================= test session starts ==============================
> platform linux -- Python 3.12.1, pytest-7.4.3, pluggy-1.3.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> collected 663 items
>
> tests/featureCompiler_test.py ............... [ 2%]
> tests/fontInfoData_test.py ............... [ 4%]
> tests/integration_test.py ......s.s........F...FFFFFFF...FF.....FF [ 10%]
> tests/outlineCompiler_test.py .......................................... [ 16%]
> ............................................... [ 23%]
> tests/preProcessor_test.py ....s.....s........... [ 27%]
> tests/featureWriters/cursFeatureWriter_test.py ... [ 27%]
> tests/featureWriters/featureWriters_test.py ........ [ 28%]
> tests/featureWriters/gdefFeatureWriter_test.py .......... [ 30%]
> tests/featureWriters/kernFeatureWriter_test.py ..........F.............. [ 34%]
> [ 34%]
> tests/featureWriters/markFeatureWriter_test.py ......................... [ 38%]
> .. [ 38%]
> tests/filters/decomposeComponents_test.py .. [ 38%]
> tests/filters/decomposeTransformedComponents_test.py ... [ 39%]
> tests/filters/dottedCircle_test.py . [ 39%]
> tests/filters/flattenComponents_test.py ........ [ 40%]
> tests/filters/propagateAnchors_test.py ............. [ 42%]
> tests/filters/sortContours_test.py .... [ 42%]
> tests/filters/transformations_test.py ............................... [ 47%]
> tests/featureCompiler_test.py ............... [ 49%]
> tests/fontInfoData_test.py ............... [ 52%]
> tests/integration_test.py ......s.s........F...FFFFFFF...FF.....FF [ 58%]
> tests/outlineCompiler_test.py .......................................... [ 64%]
> ............................................... [ 71%]
> tests/preProcessor_test.py ....s.....s........... [ 74%]
> tests/featureWriters/cursFeatureWriter_test.py ... [ 75%]
> tests/featureWriters/featureWriters_test.py ........ [ 76%]
> tests/featureWriters/gdefFeatureWriter_test.py .......... [ 78%]
> tests/featureWriters/kernFeatureWriter_test.py ..........F.............. [ 81%]
> [ 81%]
> tests/featureWriters/markFeatureWriter_test.py ......................... [ 85%]
> .. [ 85%]
> tests/filters/decomposeComponents_test.py .. [ 86%]
> tests/filters/decomposeTransformedComponents_test.py ... [ 86%]
> tests/filters/dottedCircle_test.py . [ 86%]
> tests/filters/flattenComponents_test.py ........ [ 88%]
> tests/filters/propagateAnchors_test.py ............. [ 90%]
> tests/filters/sortContours_test.py .... [ 90%]
> tests/filters/transformations_test.py ............................... [ 95%]
> tests/fontInfoData_test.py .. [ 95%]
> tests/featureWriters/markFeatureWriter_test.py ......... [ 96%]
> tests/filters/filters_test.py ................... [ 99%]
> tests/filters/transformations_test.py . [100%]
>
> =================================== FAILURES ===================================
> ____ IntegrationTest.test_optimizeCFF_subroutinize[defcon-compreffor-cff1] _____
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8de9c0>
> testufo = <defcon.objects.font.Font object at 0x7fa59a6dc320>, cff_version = 1
> subroutinizer = 'compreffor', expected_ttx = 'TestFont-CFF-compreffor.ttx'
>
> @pytest.mark.parametrize(
> "subroutinizer, cff_version, expected_ttx",
> [
> (None, 1, "TestFont-CFF.ttx"),
> ("compreffor", 1, "TestFont-CFF-compreffor.ttx"),
> ("cffsubr", 1, "TestFont-CFF.ttx"),
> (None, 2, "TestFont-CFF2-cffsubr.ttx"),
> # ("compreffor", 2, "TestFont-CFF2-compreffor.ttx"),
> ("cffsubr", 2, "TestFont-CFF2-cffsubr.ttx"),
> ],
> ids=[
> "default-cff1",
> "compreffor-cff1",
> "cffsubr-cff1",
> "default-cff2",
> # "compreffor-cff2",
> "cffsubr-cff2",
> ],
> )
> def test_optimizeCFF_subroutinize(
> self, testufo, cff_version, subroutinizer, expected_ttx
> ):
> > otf = compileOTF(
> testufo, optimizeCFF=2, cffVersion=cff_version, subroutinizer=subroutinizer
> )
>
> tests/integration_test.py:206:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ufo2ft/__init__.py:201: in compileOTF
> return call_postprocessor(
> ufo2ft/__init__.py:88: in call_postprocessor
> otf = postProcessor.process(**kwargs)
> ufo2ft/postProcessor.py:98: in process
> self.process_cff(
> ufo2ft/postProcessor.py:123: in process_cff
> self._subroutinize(backend, self.otf, cffOutputVersion)
> ufo2ft/postProcessor.py:331: in _subroutinize
> subroutinize(otf, cffVersion)
> ufo2ft/postProcessor.py:335: in _subroutinize_with_compreffor
> from compreffor import compress
> /usr/lib/python3/dist-packages/compreffor/__init__.py:68: in <module>
> from compreffor import cxxCompressor, pyCompressor
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> #!/usr/bin/env python
> #
> # Copyright 2015 Google Inc. All Rights Reserved.
> #
> # Licensed under the Apache License, Version 2.0 (the "License");
> # you may not use this file except in compliance with the License.
> # You may obtain a copy of the License at
> #
> # http://www.apache.org/licenses/LICENSE-2.0
> #
> # Unless required by applicable law or agreed to in writing, software
> # distributed under the License is distributed on an "AS IS" BASIS,
> # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> # See the License for the specific language governing permissions and
> # limitations under the License.
>
> """
> Tool to subroutinize a CFF OpenType font. Backed by a C++ binary.
>
> This file is a bootstrap for the C++ edition of the FontTools compreffor.
> It prepares the input data for the extension and reads back in the results,
> applying them to the input font.
>
> Usage (command line):
> >> ./cxxCompressor.py /path/to/font.otf
> # font written to /path/to/font.compressed.otf
>
> Usage (python):
> >> font = TTFont("/path/to/font.otf")
> >> cxxCompressor.compreff(font)
> >> font.save("/path/to/output.otf")
> """
>
> import array
> from io import BytesIO
> import struct
> import logging
> from compreffor.pyCompressor import (
> Compreffor, CandidateSubr, tokenCost)
> > from compreffor import _compreffor as lib, timer
> E ImportError: cannot import name '_compreffor' from partially initialized module 'compreffor' (most likely due to a circular import) (/usr/lib/python3/dist-packages/compreffor/__init__.py)
>
> /usr/lib/python3/dist-packages/compreffor/cxxCompressor.py:40: ImportError
> _____________ IntegrationTest.test_compileVariableTTF[defcon-None] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8def90>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a6ba6f0>
> useProductionNames = None
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a6dd610>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _____________ IntegrationTest.test_compileVariableTTF[defcon-True] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df2c0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a6bb9e0>
> useProductionNames = True
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a2e4a10>
> expectedTTX = 'TestVariableFont-TTF-useProductionNames.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-useProductionNames.ttx
> +++ <generated>
> @@ -464,28 +464,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[defcon-False] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df1d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a6b9790>
> useProductionNames = False
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a6bad80>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-None] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8de630>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a7b3d10>
> useProductionNames = None
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a7b1e20>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-True] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df7d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a7a30e0>
> useProductionNames = True
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59bd76d80>
> expectedTTX = 'TestVariableFont-CFF2-useProductionNames.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-useProductionNames.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-False] ____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df6e0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a189430>
> useProductionNames = False
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a75a2a0>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ________ IntegrationTest.test_compileVariableCFF2_subroutinized[defcon] ________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8dfbc0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a7a38c0>
>
> def test_compileVariableCFF2_subroutinized(self, designspace):
> varfont = compileVariableCFF2(designspace, optimizeCFF=2)
> > expectTTX(varfont, "TestVariableFont-CFF2-cffsubr.ttx")
>
> tests/integration_test.py:233:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a7a2f60>
> expectedTTX = 'TestVariableFont-CFF2-cffsubr.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-cffsubr.ttx
> +++ <generated>
> @@ -467,28 +467,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[defcon-VariableTTF-options0-TestVariableFont-TTF-post3.ttx] _
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a924b00>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a69b770>
> output_format = 'VariableTTF', options = {}
> expected_ttx = 'TestVariableFont-TTF-post3.ttx'
>
> @pytest.mark.parametrize(
> "output_format, options, expected_ttx",
> [
> ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
> ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
> ],
> )
> def test_drop_glyph_names_variable(
> self, designspace, output_format, options, expected_ttx
> ):
> # set keepGlyphNames in the default UFO.lib where postProcessor finds it
> designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
> compile_func = globals()[f"compile{output_format}"]
> ttf = compile_func(designspace, **options)
> > expectTTX(ttf, expected_ttx)
>
> tests/integration_test.py:270:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a6e87d0>
> expectedTTX = 'TestVariableFont-TTF-post3.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-post3.ttx
> +++ <generated>
> @@ -447,28 +447,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[defcon-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx] _
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a924b90>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a17d790>
> output_format = 'VariableCFF2', options = {}
> expected_ttx = 'TestVariableFont-CFF2-post3.ttx'
>
> @pytest.mark.parametrize(
> "output_format, options, expected_ttx",
> [
> ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
> ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
> ],
> )
> def test_drop_glyph_names_variable(
> self, designspace, output_format, options, expected_ttx
> ):
> # set keepGlyphNames in the default UFO.lib where postProcessor finds it
> designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
> compile_func = globals()[f"compile{output_format}"]
> ttf = compile_func(designspace, **options)
> > expectTTX(ttf, expected_ttx)
>
> tests/integration_test.py:270:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a747e60>
> expectedTTX = 'TestVariableFont-CFF2-post3.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-post3.ttx
> +++ <generated>
> @@ -444,28 +444,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _______________ IntegrationTest.test_compileVariableTTFs[defcon] _______________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a9258b0>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a7427b0>
>
> def test_compileVariableTTFs(self, designspace_v5):
> fonts = compileVariableTTFs(designspace_v5)
>
> # NOTE: Test dumps were generated like this:
> # for k, font in fonts.items():
> # font.recalcTimestamp = False
> # font["head"].created, font["head"].modified = 3570196637, 3601822698
> # font["head"].checkSumAdjustment = 0x12345678
> # font.saveXML(f"tests/data/DSv5/{k}-TTF.ttx")
>
> assert set(fonts.keys()) == {
> "MutatorSansVariable_Weight_Width",
> "MutatorSansVariable_Weight",
> "MutatorSansVariable_Width",
> "MutatorSerifVariable_Width",
> }
> # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> > expectTTX(
> fonts["MutatorSansVariable_Weight_Width"],
> "DSv5/MutatorSansVariable_Weight_Width-TTF.ttx",
> )
>
> tests/integration_test.py:364:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a698d10>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-TTF.ttx
> +++ <generated>
> @@ -576,103 +576,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=2 -->
> - <!-- RegionCount=8 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="3">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="4">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="5">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.5691"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="6">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="7">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> @@ -808,6 +712,7 @@
> </STAT>
>
> <avar>
> + <version major="1" minor="0"/>
> <segment axis="wght">
> <mapping from="-1.0" to="-1.0"/>
> <mapping from="0.0" to="0.0"/>
> ______________ IntegrationTest.test_compileVariableCFF2s[defcon] _______________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a925bb0>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a7423f0>
>
> def test_compileVariableCFF2s(self, designspace_v5):
> fonts = compileVariableCFF2s(designspace_v5)
>
> # NOTE: Test dumps were generated like this:
> # for k, font in fonts.items():
> # font.recalcTimestamp = False
> # font["head"].created, font["head"].modified = 3570196637, 3601822698
> # font["head"].checkSumAdjustment = 0x12345678
> # font.saveXML(f"tests/data/DSv5/{k}-CFF2.ttx")
>
> assert set(fonts.keys()) == {
> "MutatorSansVariable_Weight_Width",
> "MutatorSansVariable_Weight",
> "MutatorSansVariable_Width",
> "MutatorSerifVariable_Width",
> }
> # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> > expectTTX(
> fonts["MutatorSansVariable_Weight_Width"],
> "DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx",
> )
>
> tests/integration_test.py:401:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a7b3650>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx
> +++ <generated>
> @@ -665,103 +665,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=2 -->
> - <!-- RegionCount=8 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="3">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="4">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="5">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.5691"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="6">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="7">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> @@ -897,6 +801,7 @@
> </STAT>
>
> <avar>
> + <version major="1" minor="0"/>
> <segment axis="wght">
> <mapping from="-1.0" to="-1.0"/>
> <mapping from="0.0" to="0.0"/>
> ______ KernFeatureWriterTest.test__groupScriptsByTagAndDirection[defcon] _______
>
> self = <tests.featureWriters.kernFeatureWriter_test.KernFeatureWriterTest object at 0x7fa59a949dc0>
> FontClass = <class 'defcon.objects.font.Font'>
>
> def test__groupScriptsByTagAndDirection(self, FontClass):
> font = FontClass()
> font.features.text = dedent(
> """
> languagesystem DFLT dflt;
> languagesystem latn dflt;
> languagesystem latn TRK;
> languagesystem arab dflt;
> languagesystem arab URD;
> languagesystem deva dflt;
> languagesystem dev2 dflt;
> languagesystem math dflt;
> """
> )
>
> feaFile = parseLayoutFeatures(font)
> scripts = ast.getScriptLanguageSystems(feaFile)
> > scriptGroups = KernFeatureWriter._groupScriptsByTagAndDirection(scripts)
>
> tests/featureWriters/kernFeatureWriter_test.py:508:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ufo2ft/featureWriters/kernFeatureWriter.py:260: in _groupScriptsByTagAndDirection
> direction = unicodedata.script_horizontal_direction(scriptCode)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> script_code = 'Zmth', default = <class 'KeyError'>
>
> def script_horizontal_direction(
> script_code: str, default: T | type[KeyError] = KeyError
> ) -> HorizDirection | T:
> """Return "RTL" for scripts that contain right-to-left characters
> according to the Bidi_Class property. Otherwise return "LTR".
> """
> if script_code not in Scripts.NAMES:
> if isinstance(default, type) and issubclass(default, KeyError):
> > raise default(script_code)
> E KeyError: 'Zmth'
>
> /usr/lib/python3/dist-packages/fontTools/unicodedata/__init__.py:223: KeyError
> ____ IntegrationTest.test_optimizeCFF_subroutinize[ufoLib2-compreffor-cff1] ____
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8decc0>
> testufo = <ufoLib2.objects.font.Font 'Some Font (Family Name) Regular (Style Name)' at 0x7fa59a0d76b0>
> cff_version = 1, subroutinizer = 'compreffor'
> expected_ttx = 'TestFont-CFF-compreffor.ttx'
>
> @pytest.mark.parametrize(
> "subroutinizer, cff_version, expected_ttx",
> [
> (None, 1, "TestFont-CFF.ttx"),
> ("compreffor", 1, "TestFont-CFF-compreffor.ttx"),
> ("cffsubr", 1, "TestFont-CFF.ttx"),
> (None, 2, "TestFont-CFF2-cffsubr.ttx"),
> # ("compreffor", 2, "TestFont-CFF2-compreffor.ttx"),
> ("cffsubr", 2, "TestFont-CFF2-cffsubr.ttx"),
> ],
> ids=[
> "default-cff1",
> "compreffor-cff1",
> "cffsubr-cff1",
> "default-cff2",
> # "compreffor-cff2",
> "cffsubr-cff2",
> ],
> )
> def test_optimizeCFF_subroutinize(
> self, testufo, cff_version, subroutinizer, expected_ttx
> ):
> > otf = compileOTF(
> testufo, optimizeCFF=2, cffVersion=cff_version, subroutinizer=subroutinizer
> )
>
> tests/integration_test.py:206:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ufo2ft/__init__.py:201: in compileOTF
> return call_postprocessor(
> ufo2ft/__init__.py:88: in call_postprocessor
> otf = postProcessor.process(**kwargs)
> ufo2ft/postProcessor.py:98: in process
> self.process_cff(
> ufo2ft/postProcessor.py:123: in process_cff
> self._subroutinize(backend, self.otf, cffOutputVersion)
> ufo2ft/postProcessor.py:331: in _subroutinize
> subroutinize(otf, cffVersion)
> ufo2ft/postProcessor.py:335: in _subroutinize_with_compreffor
> from compreffor import compress
> /usr/lib/python3/dist-packages/compreffor/__init__.py:68: in <module>
> from compreffor import cxxCompressor, pyCompressor
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> #!/usr/bin/env python
> #
> # Copyright 2015 Google Inc. All Rights Reserved.
> #
> # Licensed under the Apache License, Version 2.0 (the "License");
> # you may not use this file except in compliance with the License.
> # You may obtain a copy of the License at
> #
> # http://www.apache.org/licenses/LICENSE-2.0
> #
> # Unless required by applicable law or agreed to in writing, software
> # distributed under the License is distributed on an "AS IS" BASIS,
> # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> # See the License for the specific language governing permissions and
> # limitations under the License.
>
> """
> Tool to subroutinize a CFF OpenType font. Backed by a C++ binary.
>
> This file is a bootstrap for the C++ edition of the FontTools compreffor.
> It prepares the input data for the extension and reads back in the results,
> applying them to the input font.
>
> Usage (command line):
> >> ./cxxCompressor.py /path/to/font.otf
> # font written to /path/to/font.compressed.otf
>
> Usage (python):
> >> font = TTFont("/path/to/font.otf")
> >> cxxCompressor.compreff(font)
> >> font.save("/path/to/output.otf")
> """
>
> import array
> from io import BytesIO
> import struct
> import logging
> from compreffor.pyCompressor import (
> Compreffor, CandidateSubr, tokenCost)
> > from compreffor import _compreffor as lib, timer
> E ImportError: cannot import name '_compreffor' from partially initialized module 'compreffor' (most likely due to a circular import) (/usr/lib/python3/dist-packages/compreffor/__init__.py)
>
> /usr/lib/python3/dist-packages/compreffor/cxxCompressor.py:40: ImportError
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-None] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df440>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a0e6840>
> useProductionNames = None
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f00f80>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-True] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df500>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f52300>
> useProductionNames = True
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f51d30>
> expectedTTX = 'TestVariableFont-TTF-useProductionNames.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-useProductionNames.ttx
> +++ <generated>
> @@ -464,28 +464,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-False] ____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df5c0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f79580>
> useProductionNames = False
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f79e20>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[ufoLib2-None] ____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df9b0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f27800>
> useProductionNames = None
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f266f0>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[ufoLib2-True] ____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8dfa40>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f94350>
> useProductionNames = True
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a0d1910>
> expectedTTX = 'TestVariableFont-CFF2-useProductionNames.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-useProductionNames.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ___________ IntegrationTest.test_compileVariableCFF2[ufoLib2-False] ____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8dfad0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f26990>
> useProductionNames = False
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f26c00>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _______ IntegrationTest.test_compileVariableCFF2_subroutinized[ufoLib2] ________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8dfe00>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f51640>
>
> def test_compileVariableCFF2_subroutinized(self, designspace):
> varfont = compileVariableCFF2(designspace, optimizeCFF=2)
> > expectTTX(varfont, "TestVariableFont-CFF2-cffsubr.ttx")
>
> tests/integration_test.py:233:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f51c70>
> expectedTTX = 'TestVariableFont-CFF2-cffsubr.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-cffsubr.ttx
> +++ <generated>
> @@ -467,28 +467,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[ufoLib2-VariableTTF-options0-TestVariableFont-TTF-post3.ttx] _
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a924c80>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a0f7200>
> output_format = 'VariableTTF', options = {}
> expected_ttx = 'TestVariableFont-TTF-post3.ttx'
>
> @pytest.mark.parametrize(
> "output_format, options, expected_ttx",
> [
> ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
> ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
> ],
> )
> def test_drop_glyph_names_variable(
> self, designspace, output_format, options, expected_ttx
> ):
> # set keepGlyphNames in the default UFO.lib where postProcessor finds it
> designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
> compile_func = globals()[f"compile{output_format}"]
> ttf = compile_func(designspace, **options)
> > expectTTX(ttf, expected_ttx)
>
> tests/integration_test.py:270:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a17c8c0>
> expectedTTX = 'TestVariableFont-TTF-post3.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-post3.ttx
> +++ <generated>
> @@ -447,28 +447,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[ufoLib2-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx] _
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a924d10>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a0f7ce0>
> output_format = 'VariableCFF2', options = {}
> expected_ttx = 'TestVariableFont-CFF2-post3.ttx'
>
> @pytest.mark.parametrize(
> "output_format, options, expected_ttx",
> [
> ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
> ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
> ],
> )
> def test_drop_glyph_names_variable(
> self, designspace, output_format, options, expected_ttx
> ):
> # set keepGlyphNames in the default UFO.lib where postProcessor finds it
> designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
> compile_func = globals()[f"compile{output_format}"]
> ttf = compile_func(designspace, **options)
> > expectTTX(ttf, expected_ttx)
>
> tests/integration_test.py:270:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f50410>
> expectedTTX = 'TestVariableFont-CFF2-post3.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-post3.ttx
> +++ <generated>
> @@ -444,28 +444,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ______________ IntegrationTest.test_compileVariableTTFs[ufoLib2] _______________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a925a30>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f87a70>
>
> def test_compileVariableTTFs(self, designspace_v5):
> fonts = compileVariableTTFs(designspace_v5)
>
> # NOTE: Test dumps were generated like this:
> # for k, font in fonts.items():
> # font.recalcTimestamp = False
> # font["head"].created, font["head"].modified = 3570196637, 3601822698
> # font["head"].checkSumAdjustment = 0x12345678
> # font.saveXML(f"tests/data/DSv5/{k}-TTF.ttx")
>
> assert set(fonts.keys()) == {
> "MutatorSansVariable_Weight_Width",
> "MutatorSansVariable_Weight",
> "MutatorSansVariable_Width",
> "MutatorSerifVariable_Width",
> }
> # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> > expectTTX(
> fonts["MutatorSansVariable_Weight_Width"],
> "DSv5/MutatorSansVariable_Weight_Width-TTF.ttx",
> )
>
> tests/integration_test.py:364:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f7a2a0>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-TTF.ttx
> +++ <generated>
> @@ -576,103 +576,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=2 -->
> - <!-- RegionCount=8 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="3">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="4">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="5">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.5691"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="6">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="7">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> @@ -808,6 +712,7 @@
> </STAT>
>
> <avar>
> + <version major="1" minor="0"/>
> <segment axis="wght">
> <mapping from="-1.0" to="-1.0"/>
> <mapping from="0.0" to="0.0"/>
> ______________ IntegrationTest.test_compileVariableCFF2s[ufoLib2] ______________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a925d30>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a0e7860>
>
> def test_compileVariableCFF2s(self, designspace_v5):
> fonts = compileVariableCFF2s(designspace_v5)
>
> # NOTE: Test dumps were generated like this:
> # for k, font in fonts.items():
> # font.recalcTimestamp = False
> # font["head"].created, font["head"].modified = 3570196637, 3601822698
> # font["head"].checkSumAdjustment = 0x12345678
> # font.saveXML(f"tests/data/DSv5/{k}-CFF2.ttx")
>
> assert set(fonts.keys()) == {
> "MutatorSansVariable_Weight_Width",
> "MutatorSansVariable_Weight",
> "MutatorSansVariable_Width",
> "MutatorSerifVariable_Width",
> }
> # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> > expectTTX(
> fonts["MutatorSansVariable_Weight_Width"],
> "DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx",
> )
>
> tests/integration_test.py:401:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a0f4bc0>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx
> +++ <generated>
> @@ -665,103 +665,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=2 -->
> - <!-- RegionCount=8 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="3">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="4">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="5">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.5691"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="6">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="7">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> @@ -897,6 +801,7 @@
> </STAT>
>
> <avar>
> + <version major="1" minor="0"/>
> <segment axis="wght">
> <mapping from="-1.0" to="-1.0"/>
> <mapping from="0.0" to="0.0"/>
> ______ KernFeatureWriterTest.test__groupScriptsByTagAndDirection[ufoLib2] ______
>
> self = <tests.featureWriters.kernFeatureWriter_test.KernFeatureWriterTest object at 0x7fa59a94a900>
> FontClass = <function FontClass.<locals>.ctor at 0x7fa59a6f4900>
>
> def test__groupScriptsByTagAndDirection(self, FontClass):
> font = FontClass()
> font.features.text = dedent(
> """
> languagesystem DFLT dflt;
> languagesystem latn dflt;
> languagesystem latn TRK;
> languagesystem arab dflt;
> languagesystem arab URD;
> languagesystem deva dflt;
> languagesystem dev2 dflt;
> languagesystem math dflt;
> """
> )
>
> feaFile = parseLayoutFeatures(font)
> scripts = ast.getScriptLanguageSystems(feaFile)
> > scriptGroups = KernFeatureWriter._groupScriptsByTagAndDirection(scripts)
>
> tests/featureWriters/kernFeatureWriter_test.py:508:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ufo2ft/featureWriters/kernFeatureWriter.py:260: in _groupScriptsByTagAndDirection
> direction = unicodedata.script_horizontal_direction(scriptCode)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> script_code = 'Zmth', default = <class 'KeyError'>
>
> def script_horizontal_direction(
> script_code: str, default: T | type[KeyError] = KeyError
> ) -> HorizDirection | T:
> """Return "RTL" for scripts that contain right-to-left characters
> according to the Bidi_Class property. Otherwise return "LTR".
> """
> if script_code not in Scripts.NAMES:
> if isinstance(default, type) and issubclass(default, KeyError):
> > raise default(script_code)
> E KeyError: 'Zmth'
>
> /usr/lib/python3/dist-packages/fontTools/unicodedata/__init__.py:223: KeyError
> =============================== warnings summary ===============================
> ../../../../../../usr/lib/python3/dist-packages/fs/__init__.py:4
> /usr/lib/python3/dist-packages/fs/__init__.py:4: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
> __import__("pkg_resources").declare_namespace(__name__) # type: ignore
>
> ../../../../../../usr/lib/python3/dist-packages/fs/__init__.py:4
> /usr/lib/python3/dist-packages/fs/__init__.py:4: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs')`.
> Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
> __import__("pkg_resources").declare_namespace(__name__) # type: ignore
>
> ../../../../../../usr/lib/python3/dist-packages/fs/opener/__init__.py:6
> /usr/lib/python3/dist-packages/fs/opener/__init__.py:6: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs.opener')`.
> Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
> __import__("pkg_resources").declare_namespace(__name__) # type: ignore
>
> ../../../../../../usr/lib/python3/dist-packages/pkg_resources/__init__.py:2350
> /usr/lib/python3/dist-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs')`.
> Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
> declare_namespace(parent)
>
> .pybuild/cpython3_3.12_ufo2ft/build/tests/fontInfoData_test.py::GetAttrWithFallbackTest::test_head_created[defcon]
> .pybuild/cpython3_3.12_ufo2ft/build/tests/fontInfoData_test.py::GetAttrWithFallbackTest::test_head_created[ufoLib2]
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ufo2ft/build/ufo2ft/fontInfoData.py:108: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
> t = datetime.utcfromtimestamp(int(os.environ["SOURCE_DATE_EPOCH"]))
>
> .pybuild/cpython3_3.12_ufo2ft/build/tests/integration_test.py: 18 warnings
> .pybuild/cpython3_3.12_ufo2ft/build/tests/outlineCompiler_test.py: 6 warnings
> /usr/lib/python3/dist-packages/cffsubr/__init__.py:63: DeprecationWarning: path is deprecated. Use files() instead. Refer to https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy for migration advice.
> with path(__name__, TX_EXE) as tx_cli:
>
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info ============================
> SKIPPED [2] tests/integration_test.py:126: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/integration_test.py:135: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/preProcessor_test.py:94: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/preProcessor_test.py:200: skia-pathops is unavailable in debian yet
> FAILED tests/integration_test.py::IntegrationTest::test_optimizeCFF_subroutinize[defcon-compreffor-cff1]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2_subroutinized[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[defcon-VariableTTF-options0-TestVariableFont-TTF-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[defcon-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[defcon]
> FAILED tests/featureWriters/kernFeatureWriter_test.py::KernFeatureWriterTest::test__groupScriptsByTagAndDirection[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_optimizeCFF_subroutinize[ufoLib2-compreffor-cff1]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2_subroutinized[ufoLib2]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[ufoLib2-VariableTTF-options0-TestVariableFont-TTF-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[ufoLib2-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[ufoLib2]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[ufoLib2]
> FAILED tests/featureWriters/kernFeatureWriter_test.py::KernFeatureWriterTest::test__groupScriptsByTagAndDirection[ufoLib2]
> ============ 26 failed, 629 passed, 8 skipped, 30 warnings in 7.25s ============
> E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ufo2ft/build; python3.12 -m pytest tests
> I: pybuild base:310: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ufo2ft/build; python3.11 -m pytest tests
> ============================= test session starts ==============================
> platform linux -- Python 3.11.7, pytest-7.4.3, pluggy-1.3.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> collected 663 items
>
> tests/featureCompiler_test.py ............... [ 2%]
> tests/fontInfoData_test.py ............... [ 4%]
> tests/integration_test.py ......s.s............FFFFFFF...FF.....FF [ 10%]
> tests/outlineCompiler_test.py .......................................... [ 16%]
> ............................................... [ 23%]
> tests/preProcessor_test.py ....s.....s........... [ 27%]
> tests/featureWriters/cursFeatureWriter_test.py ... [ 27%]
> tests/featureWriters/featureWriters_test.py ........ [ 28%]
> tests/featureWriters/gdefFeatureWriter_test.py .......... [ 30%]
> tests/featureWriters/kernFeatureWriter_test.py ..........F.............. [ 34%]
> [ 34%]
> tests/featureWriters/markFeatureWriter_test.py ......................... [ 38%]
> .. [ 38%]
> tests/filters/decomposeComponents_test.py .. [ 38%]
> tests/filters/decomposeTransformedComponents_test.py ... [ 39%]
> tests/filters/dottedCircle_test.py . [ 39%]
> tests/filters/flattenComponents_test.py ........ [ 40%]
> tests/filters/propagateAnchors_test.py ............. [ 42%]
> tests/filters/sortContours_test.py .... [ 42%]
> tests/filters/transformations_test.py ............................... [ 47%]
> tests/featureCompiler_test.py ............... [ 49%]
> tests/fontInfoData_test.py ............... [ 52%]
> tests/integration_test.py ......s.s............FFFFFFF...FF.....FF [ 58%]
> tests/outlineCompiler_test.py .......................................... [ 64%]
> ............................................... [ 71%]
> tests/preProcessor_test.py ....s.....s........... [ 74%]
> tests/featureWriters/cursFeatureWriter_test.py ... [ 75%]
> tests/featureWriters/featureWriters_test.py ........ [ 76%]
> tests/featureWriters/gdefFeatureWriter_test.py .......... [ 78%]
> tests/featureWriters/kernFeatureWriter_test.py ..........F.............. [ 81%]
> [ 81%]
> tests/featureWriters/markFeatureWriter_test.py ......................... [ 85%]
> .. [ 85%]
> tests/filters/decomposeComponents_test.py .. [ 86%]
> tests/filters/decomposeTransformedComponents_test.py ... [ 86%]
> tests/filters/dottedCircle_test.py . [ 86%]
> tests/filters/flattenComponents_test.py ........ [ 88%]
> tests/filters/propagateAnchors_test.py ............. [ 90%]
> tests/filters/sortContours_test.py .... [ 90%]
> tests/filters/transformations_test.py ............................... [ 95%]
> tests/fontInfoData_test.py .. [ 95%]
> tests/featureWriters/markFeatureWriter_test.py ......... [ 96%]
> tests/filters/filters_test.py ................... [ 99%]
> tests/filters/transformations_test.py . [100%]
>
> =================================== FAILURES ===================================
> _____________ IntegrationTest.test_compileVariableTTF[defcon-None] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836e1d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f81e5350>
> useProductionNames = None
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f8278290>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _____________ IntegrationTest.test_compileVariableTTF[defcon-True] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836e990>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f816ae90>
> useProductionNames = True
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f8268c10>
> expectedTTX = 'TestVariableFont-TTF-useProductionNames.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-useProductionNames.ttx
> +++ <generated>
> @@ -464,28 +464,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[defcon-False] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836fa10>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c55a50>
> useProductionNames = False
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f8384590>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-None] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836f190>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7ca0d90>
> useProductionNames = None
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7c19710>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-True] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836da10>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f816ab50>
> useProductionNames = True
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f81de750>
> expectedTTX = 'TestVariableFont-CFF2-useProductionNames.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-useProductionNames.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-False] ____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836f990>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c8b950>
> useProductionNames = False
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f82d4c10>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ________ IntegrationTest.test_compileVariableCFF2_subroutinized[defcon] ________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83b8050>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c1bcd0>
>
> def test_compileVariableCFF2_subroutinized(self, designspace):
> varfont = compileVariableCFF2(designspace, optimizeCFF=2)
> > expectTTX(varfont, "TestVariableFont-CFF2-cffsubr.ttx")
>
> tests/integration_test.py:233:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f82ac8d0>
> expectedTTX = 'TestVariableFont-CFF2-cffsubr.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-cffsubr.ttx
> +++ <generated>
> @@ -467,28 +467,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[defcon-VariableTTF-options0-TestVariableFont-TTF-post3.ttx] _
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f82302d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c18c50>
> output_format = 'VariableTTF', options = {}
> expected_ttx = 'TestVariableFont-TTF-post3.ttx'
>
> @pytest.mark.parametrize(
> "output_format, options, expected_ttx",
> [
> ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
> ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
> ],
> )
> def test_drop_glyph_names_variable(
> self, designspace, output_format, options, expected_ttx
> ):
> # set keepGlyphNames in the default UFO.lib where postProcessor finds it
> designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
> compile_func = globals()[f"compile{output_format}"]
> ttf = compile_func(designspace, **options)
> > expectTTX(ttf, expected_ttx)
>
> tests/integration_test.py:270:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f829f790>
> expectedTTX = 'TestVariableFont-TTF-post3.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-post3.ttx
> +++ <generated>
> @@ -447,28 +447,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[defcon-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx] _
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f8230190>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f82acd50>
> output_format = 'VariableCFF2', options = {}
> expected_ttx = 'TestVariableFont-CFF2-post3.ttx'
>
> @pytest.mark.parametrize(
> "output_format, options, expected_ttx",
> [
> ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
> ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
> ],
> )
> def test_drop_glyph_names_variable(
> self, designspace, output_format, options, expected_ttx
> ):
> # set keepGlyphNames in the default UFO.lib where postProcessor finds it
> designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
> compile_func = globals()[f"compile{output_format}"]
> ttf = compile_func(designspace, **options)
> > expectTTX(ttf, expected_ttx)
>
> tests/integration_test.py:270:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7c88a10>
> expectedTTX = 'TestVariableFont-CFF2-post3.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-post3.ttx
> +++ <generated>
> @@ -444,28 +444,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _______________ IntegrationTest.test_compileVariableTTFs[defcon] _______________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83a4ed0>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f82af950>
>
> def test_compileVariableTTFs(self, designspace_v5):
> fonts = compileVariableTTFs(designspace_v5)
>
> # NOTE: Test dumps were generated like this:
> # for k, font in fonts.items():
> # font.recalcTimestamp = False
> # font["head"].created, font["head"].modified = 3570196637, 3601822698
> # font["head"].checkSumAdjustment = 0x12345678
> # font.saveXML(f"tests/data/DSv5/{k}-TTF.ttx")
>
> assert set(fonts.keys()) == {
> "MutatorSansVariable_Weight_Width",
> "MutatorSansVariable_Weight",
> "MutatorSansVariable_Width",
> "MutatorSerifVariable_Width",
> }
> # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> > expectTTX(
> fonts["MutatorSansVariable_Weight_Width"],
> "DSv5/MutatorSansVariable_Weight_Width-TTF.ttx",
> )
>
> tests/integration_test.py:364:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7be99d0>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-TTF.ttx
> +++ <generated>
> @@ -576,103 +576,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=2 -->
> - <!-- RegionCount=8 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="3">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="4">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="5">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.5691"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="6">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="7">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> @@ -808,6 +712,7 @@
> </STAT>
>
> <avar>
> + <version major="1" minor="0"/>
> <segment axis="wght">
> <mapping from="-1.0" to="-1.0"/>
> <mapping from="0.0" to="0.0"/>
> ______________ IntegrationTest.test_compileVariableCFF2s[defcon] _______________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83a6b10>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7beaa50>
>
> def test_compileVariableCFF2s(self, designspace_v5):
> fonts = compileVariableCFF2s(designspace_v5)
>
> # NOTE: Test dumps were generated like this:
> # for k, font in fonts.items():
> # font.recalcTimestamp = False
> # font["head"].created, font["head"].modified = 3570196637, 3601822698
> # font["head"].checkSumAdjustment = 0x12345678
> # font.saveXML(f"tests/data/DSv5/{k}-CFF2.ttx")
>
> assert set(fonts.keys()) == {
> "MutatorSansVariable_Weight_Width",
> "MutatorSansVariable_Weight",
> "MutatorSansVariable_Width",
> "MutatorSerifVariable_Width",
> }
> # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> > expectTTX(
> fonts["MutatorSansVariable_Weight_Width"],
> "DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx",
> )
>
> tests/integration_test.py:401:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7b11f10>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx
> +++ <generated>
> @@ -665,103 +665,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=2 -->
> - <!-- RegionCount=8 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="3">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="4">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="5">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.5691"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="6">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="7">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> @@ -897,6 +801,7 @@
> </STAT>
>
> <avar>
> + <version major="1" minor="0"/>
> <segment axis="wght">
> <mapping from="-1.0" to="-1.0"/>
> <mapping from="0.0" to="0.0"/>
> ______ KernFeatureWriterTest.test__groupScriptsByTagAndDirection[defcon] _______
>
> self = <tests.featureWriters.kernFeatureWriter_test.KernFeatureWriterTest object at 0x7fd2f7da8e10>
> FontClass = <class 'defcon.objects.font.Font'>
>
> def test__groupScriptsByTagAndDirection(self, FontClass):
> font = FontClass()
> font.features.text = dedent(
> """
> languagesystem DFLT dflt;
> languagesystem latn dflt;
> languagesystem latn TRK;
> languagesystem arab dflt;
> languagesystem arab URD;
> languagesystem deva dflt;
> languagesystem dev2 dflt;
> languagesystem math dflt;
> """
> )
>
> feaFile = parseLayoutFeatures(font)
> scripts = ast.getScriptLanguageSystems(feaFile)
> > scriptGroups = KernFeatureWriter._groupScriptsByTagAndDirection(scripts)
>
> tests/featureWriters/kernFeatureWriter_test.py:508:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ufo2ft/featureWriters/kernFeatureWriter.py:260: in _groupScriptsByTagAndDirection
> direction = unicodedata.script_horizontal_direction(scriptCode)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> script_code = 'Zmth', default = <class 'KeyError'>
>
> def script_horizontal_direction(
> script_code: str, default: T | type[KeyError] = KeyError
> ) -> HorizDirection | T:
> """Return "RTL" for scripts that contain right-to-left characters
> according to the Bidi_Class property. Otherwise return "LTR".
> """
> if script_code not in Scripts.NAMES:
> if isinstance(default, type) and issubclass(default, KeyError):
> > raise default(script_code)
> E KeyError: 'Zmth'
>
> /usr/lib/python3/dist-packages/fontTools/unicodedata/__init__.py:223: KeyError
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-None] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836f090>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7951d10>
> useProductionNames = None
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f82f49d0>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-True] _____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836f110>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c97ed0>
> useProductionNames = True
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7a71650>
> expectedTTX = 'TestVariableFont-TTF-useProductionNames.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-useProductionNames.ttx
> +++ <generated>
> @@ -464,28 +464,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-False] ____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836ef10>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f8168bd0>
> useProductionNames = False
>
> def test_compileVariableTTF(self, designspace, useProductionNames):
> varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> > expectTTX(
> varfont,
> "TestVariableFont-TTF{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:213:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7dab190>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[ufoLib2-None] ____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836d110>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c77790>
> useProductionNames = None
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7b371d0>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[ufoLib2-True] ____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836c190>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f79f7610>
> useProductionNames = True
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7bf6690>
> expectedTTX = 'TestVariableFont-CFF2-useProductionNames.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-useProductionNames.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ___________ IntegrationTest.test_compileVariableCFF2[ufoLib2-False] ____________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836c5d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f8114f90>
> useProductionNames = False
>
> def test_compileVariableCFF2(self, designspace, useProductionNames):
> varfont = compileVariableCFF2(
> designspace, useProductionNames=useProductionNames
> )
> > expectTTX(
> varfont,
> "TestVariableFont-CFF2{}.ttx".format(
> "-useProductionNames" if useProductionNames else ""
> ),
> )
>
> tests/integration_test.py:224:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f79524d0>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _______ IntegrationTest.test_compileVariableCFF2_subroutinized[ufoLib2] ________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83b8250>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f8169c90>
>
> def test_compileVariableCFF2_subroutinized(self, designspace):
> varfont = compileVariableCFF2(designspace, optimizeCFF=2)
> > expectTTX(varfont, "TestVariableFont-CFF2-cffsubr.ttx")
>
> tests/integration_test.py:233:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7939cd0>
> expectedTTX = 'TestVariableFont-CFF2-cffsubr.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-cffsubr.ttx
> +++ <generated>
> @@ -467,28 +467,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[ufoLib2-VariableTTF-options0-TestVariableFont-TTF-post3.ttx] _
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f8231790>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f6836510>
> output_format = 'VariableTTF', options = {}
> expected_ttx = 'TestVariableFont-TTF-post3.ttx'
>
> @pytest.mark.parametrize(
> "output_format, options, expected_ttx",
> [
> ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
> ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
> ],
> )
> def test_drop_glyph_names_variable(
> self, designspace, output_format, options, expected_ttx
> ):
> # set keepGlyphNames in the default UFO.lib where postProcessor finds it
> designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
> compile_func = globals()[f"compile{output_format}"]
> ttf = compile_func(designspace, **options)
> > expectTTX(ttf, expected_ttx)
>
> tests/integration_test.py:270:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7cd8910>
> expectedTTX = 'TestVariableFont-TTF-post3.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-post3.ttx
> +++ <generated>
> @@ -447,28 +447,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[ufoLib2-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx] _
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f82306d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f79d7b90>
> output_format = 'VariableCFF2', options = {}
> expected_ttx = 'TestVariableFont-CFF2-post3.ttx'
>
> @pytest.mark.parametrize(
> "output_format, options, expected_ttx",
> [
> ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
> ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
> ],
> )
> def test_drop_glyph_names_variable(
> self, designspace, output_format, options, expected_ttx
> ):
> # set keepGlyphNames in the default UFO.lib where postProcessor finds it
> designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
> compile_func = globals()[f"compile{output_format}"]
> ttf = compile_func(designspace, **options)
> > expectTTX(ttf, expected_ttx)
>
> tests/integration_test.py:270:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f79d6710>
> expectedTTX = 'TestVariableFont-CFF2-post3.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-post3.ttx
> +++ <generated>
> @@ -444,28 +444,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=1 -->
> - <!-- RegionCount=3 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.36365"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.36365"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> ______________ IntegrationTest.test_compileVariableTTFs[ufoLib2] _______________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83a5510>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f68050d0>
>
> def test_compileVariableTTFs(self, designspace_v5):
> fonts = compileVariableTTFs(designspace_v5)
>
> # NOTE: Test dumps were generated like this:
> # for k, font in fonts.items():
> # font.recalcTimestamp = False
> # font["head"].created, font["head"].modified = 3570196637, 3601822698
> # font["head"].checkSumAdjustment = 0x12345678
> # font.saveXML(f"tests/data/DSv5/{k}-TTF.ttx")
>
> assert set(fonts.keys()) == {
> "MutatorSansVariable_Weight_Width",
> "MutatorSansVariable_Weight",
> "MutatorSansVariable_Width",
> "MutatorSerifVariable_Width",
> }
> # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> > expectTTX(
> fonts["MutatorSansVariable_Weight_Width"],
> "DSv5/MutatorSansVariable_Weight_Width-TTF.ttx",
> )
>
> tests/integration_test.py:364:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f68bec10>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-TTF.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-TTF.ttx
> +++ <generated>
> @@ -576,103 +576,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=2 -->
> - <!-- RegionCount=8 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="3">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="4">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="5">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.5691"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="6">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="7">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> @@ -808,6 +712,7 @@
> </STAT>
>
> <avar>
> + <version major="1" minor="0"/>
> <segment axis="wght">
> <mapping from="-1.0" to="-1.0"/>
> <mapping from="0.0" to="0.0"/>
> ______________ IntegrationTest.test_compileVariableCFF2s[ufoLib2] ______________
>
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83a6b90>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f682bc50>
>
> def test_compileVariableCFF2s(self, designspace_v5):
> fonts = compileVariableCFF2s(designspace_v5)
>
> # NOTE: Test dumps were generated like this:
> # for k, font in fonts.items():
> # font.recalcTimestamp = False
> # font["head"].created, font["head"].modified = 3570196637, 3601822698
> # font["head"].checkSumAdjustment = 0x12345678
> # font.saveXML(f"tests/data/DSv5/{k}-CFF2.ttx")
>
> assert set(fonts.keys()) == {
> "MutatorSansVariable_Weight_Width",
> "MutatorSansVariable_Weight",
> "MutatorSansVariable_Width",
> "MutatorSerifVariable_Width",
> }
> # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> > expectTTX(
> fonts["MutatorSansVariable_Weight_Width"],
> "DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx",
> )
>
> tests/integration_test.py:401:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f68f8610>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx', tables = None
>
> def expectTTX(font, expectedTTX, tables=None):
> with open(getpath(expectedTTX), encoding="utf-8") as f:
> expected = readLines(f)
> font.recalcTimestamp = False
> font["head"].created, font["head"].modified = 3570196637, 3601822698
> font["head"].checkSumAdjustment = 0x12345678
> f = io.StringIO()
> font.saveXML(f, tables=tables)
>
> actual = readLines(f)
> if actual != expected:
> for line in difflib.unified_diff(
> expected, actual, fromfile=expectedTTX, tofile="<generated>"
> ):
> sys.stderr.write(line)
> > pytest.fail("TTX output is different from expected")
> E Failed: TTX output is different from expected
>
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx
> +++ <generated>
> @@ -665,103 +665,7 @@
> <Format value="1"/>
> <VarRegionList>
> <!-- RegionAxisCount=2 -->
> - <!-- RegionCount=8 -->
> - <Region index="0">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="1">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="2">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="3">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="4">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.7"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="5">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.7"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.5691"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="6">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="0.0"/>
> - <EndCoord value="0.0"/>
> - </VarRegionAxis>
> - </Region>
> - <Region index="7">
> - <VarRegionAxis index="0">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - <VarRegionAxis index="1">
> - <StartCoord value="0.0"/>
> - <PeakCoord value="1.0"/>
> - <EndCoord value="1.0"/>
> - </VarRegionAxis>
> - </Region>
> + <!-- RegionCount=0 -->
> </VarRegionList>
> <!-- VarDataCount=1 -->
> <VarData index="0">
> @@ -897,6 +801,7 @@
> </STAT>
>
> <avar>
> + <version major="1" minor="0"/>
> <segment axis="wght">
> <mapping from="-1.0" to="-1.0"/>
> <mapping from="0.0" to="0.0"/>
> ______ KernFeatureWriterTest.test__groupScriptsByTagAndDirection[ufoLib2] ______
>
> self = <tests.featureWriters.kernFeatureWriter_test.KernFeatureWriterTest object at 0x7fd2f7da8650>
> FontClass = <function FontClass.<locals>.ctor at 0x7fd2f7a8f420>
>
> def test__groupScriptsByTagAndDirection(self, FontClass):
> font = FontClass()
> font.features.text = dedent(
> """
> languagesystem DFLT dflt;
> languagesystem latn dflt;
> languagesystem latn TRK;
> languagesystem arab dflt;
> languagesystem arab URD;
> languagesystem deva dflt;
> languagesystem dev2 dflt;
> languagesystem math dflt;
> """
> )
>
> feaFile = parseLayoutFeatures(font)
> scripts = ast.getScriptLanguageSystems(feaFile)
> > scriptGroups = KernFeatureWriter._groupScriptsByTagAndDirection(scripts)
>
> tests/featureWriters/kernFeatureWriter_test.py:508:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ufo2ft/featureWriters/kernFeatureWriter.py:260: in _groupScriptsByTagAndDirection
> direction = unicodedata.script_horizontal_direction(scriptCode)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> script_code = 'Zmth', default = <class 'KeyError'>
>
> def script_horizontal_direction(
> script_code: str, default: T | type[KeyError] = KeyError
> ) -> HorizDirection | T:
> """Return "RTL" for scripts that contain right-to-left characters
> according to the Bidi_Class property. Otherwise return "LTR".
> """
> if script_code not in Scripts.NAMES:
> if isinstance(default, type) and issubclass(default, KeyError):
> > raise default(script_code)
> E KeyError: 'Zmth'
>
> /usr/lib/python3/dist-packages/fontTools/unicodedata/__init__.py:223: KeyError
> =============================== warnings summary ===============================
> ../../../../../../usr/lib/python3/dist-packages/fs/__init__.py:4
> /usr/lib/python3/dist-packages/fs/__init__.py:4: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
> __import__("pkg_resources").declare_namespace(__name__) # type: ignore
>
> ../../../../../../usr/lib/python3/dist-packages/fs/__init__.py:4
> /usr/lib/python3/dist-packages/fs/__init__.py:4: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs')`.
> Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
> __import__("pkg_resources").declare_namespace(__name__) # type: ignore
>
> ../../../../../../usr/lib/python3/dist-packages/fs/opener/__init__.py:6
> /usr/lib/python3/dist-packages/fs/opener/__init__.py:6: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs.opener')`.
> Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
> __import__("pkg_resources").declare_namespace(__name__) # type: ignore
>
> ../../../../../../usr/lib/python3/dist-packages/pkg_resources/__init__.py:2350
> /usr/lib/python3/dist-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs')`.
> Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
> declare_namespace(parent)
>
> .pybuild/cpython3_3.11_ufo2ft/build/tests/integration_test.py: 18 warnings
> .pybuild/cpython3_3.11_ufo2ft/build/tests/outlineCompiler_test.py: 6 warnings
> /usr/lib/python3/dist-packages/cffsubr/__init__.py:63: DeprecationWarning: path is deprecated. Use files() instead. Refer to https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy for migration advice.
> with path(__name__, TX_EXE) as tx_cli:
>
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info ============================
> SKIPPED [2] tests/integration_test.py:126: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/integration_test.py:135: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/preProcessor_test.py:94: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/preProcessor_test.py:200: skia-pathops is unavailable in debian yet
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2_subroutinized[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[defcon-VariableTTF-options0-TestVariableFont-TTF-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[defcon-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[defcon]
> FAILED tests/featureWriters/kernFeatureWriter_test.py::KernFeatureWriterTest::test__groupScriptsByTagAndDirection[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2_subroutinized[ufoLib2]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[ufoLib2-VariableTTF-options0-TestVariableFont-TTF-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[ufoLib2-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[ufoLib2]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[ufoLib2]
> FAILED tests/featureWriters/kernFeatureWriter_test.py::KernFeatureWriterTest::test__groupScriptsByTagAndDirection[ufoLib2]
> ============ 24 failed, 631 passed, 8 skipped, 28 warnings in 6.74s ============
> E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ufo2ft/build; python3.11 -m pytest tests
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.11" returned exit code 13
The full build log is available from:
http://qa-logs.debian.net/2023/12/12/ufo2ft_2.30.0-1_unstable.log
All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20231212;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20231212&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.
Reply to: