Bug 2372184
Summary: | F43FailsToInstall: python3-ufo2ft+cffsubr, python3-ufo2ft+compreffor, python3-ufo2ft. Test failures with Python 3.14 | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Fedora Fails To Install <fti-bugs> |
Component: | python-ufo2ft | Assignee: | Benson Muite <benson_muite> |
Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | unspecified | Docs Contact: | |
Priority: | unspecified | ||
Version: | rawhide | CC: | benson_muite, mhroncok |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | python-ufo2ft-3.5.0-4.fc43 | Doc Type: | --- |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2025-06-16 11:29:03 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | 2336951, 2371858, 2372185 | ||
Bug Blocks: | 2322407, 2339432, 2339435, 2371716, 2371924 |
Description
Fedora Fails To Install
2025-06-11 08:20:23 UTC
=================================== FAILURES =================================== _________ FeatureCompilerTest.test_buildTables_FeatureLibError[defcon] _________ self = <tests.featureCompiler_test.FeatureCompilerTest object at 0x7fff98e3cc30> FontClass = <class 'defcon.objects.font.Font'> caplog = <_pytest.logging.LogCaptureFixture object at 0x7fff9a46b9d0> def test_buildTables_FeatureLibError(self, FontClass, caplog): caplog.set_level(logging.CRITICAL) ufo = FontClass() ufo.newGlyph("f") ufo.newGlyph("f.alt01") ufo.newGlyph("f_f") features = dedent( """\ feature BUGS { # invalid lookup MIXED_TYPE { sub f by f.alt01; sub f f by f_f; } MIXED_TYPE; } BUGS; """ ) ufo.features.text = features compiler = FeatureCompiler(ufo) tmpfile = None try: with caplog.at_level(logging.ERROR, logger=logger.name): > with pytest.raises(FeatureLibError): E Failed: DID NOT RAISE <class 'fontTools.feaLib.error.FeatureLibError'> tests/featureCompiler_test.py:301: Failed _______________ IntegrationTest.test_compileVariableTTFs[defcon] _______________ self = <tests.integration_test.IntegrationTest object at 0x7fff987de3f0> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fff98cedc50> 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", ) # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=50] > expectTTX( fonts["MutatorSansVariable_Weight"], "DSv5/MutatorSansVariable_Weight-TTF.ttx", ) tests/integration_test.py:400: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ font = <fontTools.ttLib.ttFont.TTFont object at 0x7fff98238210> expectedTTX = 'DSv5/MutatorSansVariable_Weight-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:73: Failed ----------------------------- Captured stderr call ----------------------------- --- DSv5/MutatorSansVariable_Weight-TTF.ttx +++ <generated> @@ -409,9 +409,6 @@ </FeatureTableSubstitution> </FeatureVariationRecord> <FeatureVariationRecord index="1"> - <ConditionSet> - <!-- ConditionCount=0 --> - </ConditionSet> <FeatureTableSubstitution> <Version value="0x00010000"/> <!-- SubstitutionCount=1 --> ______________ IntegrationTest.test_compileVariableCFF2s[defcon] _______________ self = <tests.integration_test.IntegrationTest object at 0x7fff987de530> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fff980d5e10> 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", ) # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=50] > expectTTX( fonts["MutatorSansVariable_Weight"], "DSv5/MutatorSansVariable_Weight-CFF2.ttx", ) tests/integration_test.py:437: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ font = <fontTools.ttLib.ttFont.TTFont object at 0x7fff97fe9c50> expectedTTX = 'DSv5/MutatorSansVariable_Weight-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:73: Failed ----------------------------- Captured stderr call ----------------------------- --- DSv5/MutatorSansVariable_Weight-CFF2.ttx +++ <generated> @@ -385,9 +385,6 @@ </FeatureTableSubstitution> </FeatureVariationRecord> <FeatureVariationRecord index="1"> - <ConditionSet> - <!-- ConditionCount=0 --> - </ConditionSet> <FeatureTableSubstitution> <Version value="0x00010000"/> <!-- SubstitutionCount=1 --> ________ FeatureCompilerTest.test_buildTables_FeatureLibError[ufoLib2] _________ self = <tests.featureCompiler_test.FeatureCompilerTest object at 0x7fff98e3ccd0> FontClass = <function FontClass.<locals>.ctor at 0x7fff9874fd70> caplog = <_pytest.logging.LogCaptureFixture object at 0x7fff98dffe70> def test_buildTables_FeatureLibError(self, FontClass, caplog): caplog.set_level(logging.CRITICAL) ufo = FontClass() ufo.newGlyph("f") ufo.newGlyph("f.alt01") ufo.newGlyph("f_f") features = dedent( """\ feature BUGS { # invalid lookup MIXED_TYPE { sub f by f.alt01; sub f f by f_f; } MIXED_TYPE; } BUGS; """ ) ufo.features.text = features compiler = FeatureCompiler(ufo) tmpfile = None try: with caplog.at_level(logging.ERROR, logger=logger.name): > with pytest.raises(FeatureLibError): E Failed: DID NOT RAISE <class 'fontTools.feaLib.error.FeatureLibError'> tests/featureCompiler_test.py:301: Failed ______________ IntegrationTest.test_compileVariableTTFs[ufoLib2] _______________ self = <tests.integration_test.IntegrationTest object at 0x7fff987de490> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fff98032890> 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", ) # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=50] > expectTTX( fonts["MutatorSansVariable_Weight"], "DSv5/MutatorSansVariable_Weight-TTF.ttx", ) tests/integration_test.py:400: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ font = <fontTools.ttLib.ttFont.TTFont object at 0x7fff98cedc50> expectedTTX = 'DSv5/MutatorSansVariable_Weight-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:73: Failed ----------------------------- Captured stderr call ----------------------------- --- DSv5/MutatorSansVariable_Weight-TTF.ttx +++ <generated> @@ -409,9 +409,6 @@ </FeatureTableSubstitution> </FeatureVariationRecord> <FeatureVariationRecord index="1"> - <ConditionSet> - <!-- ConditionCount=0 --> - </ConditionSet> <FeatureTableSubstitution> <Version value="0x00010000"/> <!-- SubstitutionCount=1 --> ______________ IntegrationTest.test_compileVariableCFF2s[ufoLib2] ______________ self = <tests.integration_test.IntegrationTest object at 0x7fff987de5d0> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fff980a7930> 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", ) # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=50] > expectTTX( fonts["MutatorSansVariable_Weight"], "DSv5/MutatorSansVariable_Weight-CFF2.ttx", ) tests/integration_test.py:437: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ font = <fontTools.ttLib.ttFont.TTFont object at 0x7fff97fea5f0> expectedTTX = 'DSv5/MutatorSansVariable_Weight-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:73: Failed ----------------------------- Captured stderr call ----------------------------- --- DSv5/MutatorSansVariable_Weight-CFF2.ttx +++ <generated> @@ -385,9 +385,6 @@ </FeatureTableSubstitution> </FeatureVariationRecord> <FeatureVariationRecord index="1"> - <ConditionSet> - <!-- ConditionCount=0 --> - </ConditionSet> <FeatureTableSubstitution> <Version value="0x00010000"/> <!-- SubstitutionCount=1 --> =============================== warnings summary =============================== tests/filters/dottedCircle_test.py::test_empty_font_deprecated[defcon] /builddir/build/BUILD/python-ufo2ft-3.4.2-build/BUILDROOT/usr/lib/python3.14/site-packages/ufo2ft/filters/dottedCircleFilter.py:8: UserWarning: The dottedCircleFilter module is deprecated, please import dottedCircle instead. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html --------------------------- snapshot report summary ---------------------------- 40 snapshots passed. =========================== short test summary info ============================ FAILED tests/featureCompiler_test.py::FeatureCompilerTest::test_buildTables_FeatureLibError[defcon] FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[defcon] FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[defcon] FAILED tests/featureCompiler_test.py::FeatureCompilerTest::test_buildTables_FeatureLibError[ufoLib2] FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[ufoLib2] FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[ufoLib2] ========== 6 failed, 1130 passed, 12 deselected, 1 warning in 43.78s =========== FEDORA-2025-c37a421fd1 (python-ufo2ft-3.5.0-4.fc43) has been submitted as an update to Fedora 43. https://bodhi.fedoraproject.org/updates/FEDORA-2025-c37a421fd1 FEDORA-2025-c37a421fd1 (python-ufo2ft-3.5.0-4.fc43) has been pushed to the Fedora 43 stable repository. If problem still persists, please make note of it in this bug report. |