fonttools 4.34.4-1 causes an autopkgtest regression in glyphslib, see log excerpt below and the linked Debian bug.
=================================== FAILURES ===================================
_________ test_designspace_generation_regular_same_family_name[defcon] _________
tmpdir = local('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_re0')
ufo_module = <module 'defcon' from '/usr/lib/python3/dist-packages/defcon/__init__.py'>
def test_designspace_generation_regular_same_family_name(tmpdir, ufo_module):
ufo_Lt = ufo_module.Font()
ufo_Lt.info.familyName = "CoolFoundry Examplary Serif"
ufo_Lt.info.styleName = "Light"
ufo_Lt.info.openTypeOS2WeightClass = 300
ufo_Rg = ufo_module.Font()
ufo_Rg.info.familyName = "CoolFoundry Examplary Serif"
ufo_Rg.info.styleName = "Regular"
ufo_Rg.info.openTypeOS2WeightClass = 400
ufo_Md = ufo_module.Font()
ufo_Md.info.familyName = "CoolFoundry Examplary Serif"
ufo_Md.info.styleName = "Medium"
ufo_Md.info.openTypeOS2WeightClass = 500
ufo_Bd = ufo_module.Font()
ufo_Bd.info.familyName = "CoolFoundry Examplary Serif"
ufo_Bd.info.styleName = "Bold"
ufo_Bd.info.openTypeOS2WeightClass = 700
ufo_ExBd = ufo_module.Font()
ufo_ExBd.info.familyName = "CoolFoundry Examplary Serif"
ufo_ExBd.info.styleName = "XBold"
ufo_ExBd.info.openTypeOS2WeightClass = 800
font = to_glyphs([ufo_Lt, ufo_Rg, ufo_Md, ufo_Bd, ufo_ExBd])
designspace = to_designspace(font, ufo_module=ufo_module)
path = os.path.join(str(tmpdir), "actual.designspace")
designspace.write(path)
expected_path = os.path.join(
os.path.dirname(__file__), "..", "data", "DesignspaceGenTestRegular.designspace"
)
> assert (
len(main.diff_files(path, expected_path, formatter=formatting.DiffFormatter()))
== 0
)
E assert 50 == 0
E + where 50 = len('[update-attribute, /designspace[1], format, "4.1"]')
E + where '[update-attribute, /designspace[1], format, "4.1"]' = <function diff_files at 0x7f6f7dccf640>('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_re0/actual.designspace', '/tmp/autopkgtest.jwpGVo/build.fFi/src/tests/builder/../data/DesignspaceGenTestRegular.designspace', formatter=<xmldiff.formatting.DiffFormatter object at 0x7f6f7d78cf10>)
E + where <function diff_files at 0x7f6f7dccf640> = main.diff_files
E + and <xmldiff.formatting.DiffFormatter object at 0x7f6f7d78cf10> = <class 'xmldiff.formatting.DiffFormatter'>()
E + where <class 'xmldiff.formatting.DiffFormatter'> = formatting.DiffFormatter
tests/builder/designspace_gen_test.py:69: AssertionError
_________ test_designspace_generation_italic_same_family_name[defcon] __________
tmpdir = local('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_it0')
ufo_module = <module 'defcon' from '/usr/lib/python3/dist-packages/defcon/__init__.py'>
def test_designspace_generation_italic_same_family_name(tmpdir, ufo_module):
ufo_Lt = ufo_module.Font()
ufo_Lt.info.familyName = "CoolFoundry Examplary Serif"
ufo_Lt.info.styleName = "Light Italic"
ufo_Lt.info.openTypeOS2WeightClass = 300
ufo_Lt.info.italicAngle = -11
ufo_Rg = ufo_module.Font()
ufo_Rg.info.familyName = "CoolFoundry Examplary Serif"
ufo_Rg.info.styleName = "Regular Italic"
ufo_Rg.info.openTypeOS2WeightClass = 400
ufo_Rg.info.italicAngle = -11
ufo_Md = ufo_module.Font()
ufo_Md.info.familyName = "CoolFoundry Examplary Serif"
ufo_Md.info.styleName = "Medium Italic"
ufo_Md.info.openTypeOS2WeightClass = 500
ufo_Md.info.italicAngle = -11
ufo_Bd = ufo_module.Font()
ufo_Bd.info.familyName = "CoolFoundry Examplary Serif"
ufo_Bd.info.styleName = "Bold Italic"
ufo_Bd.info.openTypeOS2WeightClass = 700
ufo_Bd.info.italicAngle = -11
ufo_ExBd = ufo_module.Font()
ufo_ExBd.info.familyName = "CoolFoundry Examplary Serif"
ufo_ExBd.info.styleName = "XBold Italic"
ufo_ExBd.info.openTypeOS2WeightClass = 800
ufo_ExBd.info.italicAngle = -11
font = to_glyphs([ufo_Lt, ufo_Rg, ufo_Md, ufo_Bd, ufo_ExBd])
designspace = to_designspace(font, ufo_module=ufo_module)
path = os.path.join(str(tmpdir), "actual.designspace")
designspace.write(path)
expected_path = os.path.join(
os.path.dirname(__file__), "..", "data", "DesignspaceGenTestItalic.designspace"
)
> assert (
len(main.diff_files(path, expected_path, formatter=formatting.DiffFormatter()))
== 0
)
E assert 50 == 0
E + where 50 = len('[update-attribute, /designspace[1], format, "4.1"]')
E + where '[update-attribute, /designspace[1], format, "4.1"]' = <function diff_files at 0x7f6f7dccf640>('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_it0/actual.designspace', '/tmp/autopkgtest.jwpGVo/build.fFi/src/tests/builder/../data/DesignspaceGenTestItalic.designspace', formatter=<xmldiff.formatting.DiffFormatter object at 0x7f6f7d35c910>)
E + where <function diff_files at 0x7f6f7dccf640> = main.diff_files
E + and <xmldiff.formatting.DiffFormatter object at 0x7f6f7d35c910> = <class 'xmldiff.formatting.DiffFormatter'>()
E + where <class 'xmldiff.formatting.DiffFormatter'> = formatting.DiffFormatter
tests/builder/designspace_gen_test.py:116: AssertionError
________ test_designspace_generation_regular_same_family_name[ufoLib2] _________
tmpdir = local('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_re2')
ufo_module = <module 'ufoLib2' from '/usr/lib/python3/dist-packages/ufoLib2/__init__.py'>
def test_designspace_generation_regular_same_family_name(tmpdir, ufo_module):
ufo_Lt = ufo_module.Font()
ufo_Lt.info.familyName = "CoolFoundry Examplary Serif"
ufo_Lt.info.styleName = "Light"
ufo_Lt.info.openTypeOS2WeightClass = 300
ufo_Rg = ufo_module.Font()
ufo_Rg.info.familyName = "CoolFoundry Examplary Serif"
ufo_Rg.info.styleName = "Regular"
ufo_Rg.info.openTypeOS2WeightClass = 400
ufo_Md = ufo_module.Font()
ufo_Md.info.familyName = "CoolFoundry Examplary Serif"
ufo_Md.info.styleName = "Medium"
ufo_Md.info.openTypeOS2WeightClass = 500
ufo_Bd = ufo_module.Font()
ufo_Bd.info.familyName = "CoolFoundry Examplary Serif"
ufo_Bd.info.styleName = "Bold"
ufo_Bd.info.openTypeOS2WeightClass = 700
ufo_ExBd = ufo_module.Font()
ufo_ExBd.info.familyName = "CoolFoundry Examplary Serif"
ufo_ExBd.info.styleName = "XBold"
ufo_ExBd.info.openTypeOS2WeightClass = 800
font = to_glyphs([ufo_Lt, ufo_Rg, ufo_Md, ufo_Bd, ufo_ExBd])
designspace = to_designspace(font, ufo_module=ufo_module)
path = os.path.join(str(tmpdir), "actual.designspace")
designspace.write(path)
expected_path = os.path.join(
os.path.dirname(__file__), "..", "data", "DesignspaceGenTestRegular.designspace"
)
> assert (
len(main.diff_files(path, expected_path, formatter=formatting.DiffFormatter()))
== 0
)
E assert 50 == 0
E + where 50 = len('[update-attribute, /designspace[1], format, "4.1"]')
E + where '[update-attribute, /designspace[1], format, "4.1"]' = <function diff_files at 0x7f6f7dccf640>('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_re2/actual.designspace', '/tmp/autopkgtest.jwpGVo/build.fFi/src/tests/builder/../data/DesignspaceGenTestRegular.designspace', formatter=<xmldiff.formatting.DiffFormatter object at 0x7f6f7dd523e0>)
E + where <function diff_files at 0x7f6f7dccf640> = main.diff_files
E + and <xmldiff.formatting.DiffFormatter object at 0x7f6f7dd523e0> = <class 'xmldiff.formatting.DiffFormatter'>()
E + where <class 'xmldiff.formatting.DiffFormatter'> = formatting.DiffFormatter
tests/builder/designspace_gen_test.py:69: AssertionError
_________ test_designspace_generation_italic_same_family_name[ufoLib2] _________
tmpdir = local('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_it1')
ufo_module = <module 'ufoLib2' from '/usr/lib/python3/dist-packages/ufoLib2/__init__.py'>
def test_designspace_generation_italic_same_family_name(tmpdir, ufo_module):
ufo_Lt = ufo_module.Font()
ufo_Lt.info.familyName = "CoolFoundry Examplary Serif"
ufo_Lt.info.styleName = "Light Italic"
ufo_Lt.info.openTypeOS2WeightClass = 300
ufo_Lt.info.italicAngle = -11
ufo_Rg = ufo_module.Font()
ufo_Rg.info.familyName = "CoolFoundry Examplary Serif"
ufo_Rg.info.styleName = "Regular Italic"
ufo_Rg.info.openTypeOS2WeightClass = 400
ufo_Rg.info.italicAngle = -11
ufo_Md = ufo_module.Font()
ufo_Md.info.familyName = "CoolFoundry Examplary Serif"
ufo_Md.info.styleName = "Medium Italic"
ufo_Md.info.openTypeOS2WeightClass = 500
ufo_Md.info.italicAngle = -11
ufo_Bd = ufo_module.Font()
ufo_Bd.info.familyName = "CoolFoundry Examplary Serif"
ufo_Bd.info.styleName = "Bold Italic"
ufo_Bd.info.openTypeOS2WeightClass = 700
ufo_Bd.info.italicAngle = -11
ufo_ExBd = ufo_module.Font()
ufo_ExBd.info.familyName = "CoolFoundry Examplary Serif"
ufo_ExBd.info.styleName = "XBold Italic"
ufo_ExBd.info.openTypeOS2WeightClass = 800
ufo_ExBd.info.italicAngle = -11
font = to_glyphs([ufo_Lt, ufo_Rg, ufo_Md, ufo_Bd, ufo_ExBd])
designspace = to_designspace(font, ufo_module=ufo_module)
path = os.path.join(str(tmpdir), "actual.designspace")
designspace.write(path)
expected_path = os.path.join(
os.path.dirname(__file__), "..", "data", "DesignspaceGenTestItalic.designspace"
)
> assert (
len(main.diff_files(path, expected_path, formatter=formatting.DiffFormatter()))
== 0
)
E assert 50 == 0
E + where 50 = len('[update-attribute, /designspace[1], format, "4.1"]')
E + where '[update-attribute, /designspace[1], format, "4.1"]' = <function diff_files at 0x7f6f7dccf640>('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_it1/actual.designspace', '/tmp/autopkgtest.jwpGVo/build.fFi/src/tests/builder/../data/DesignspaceGenTestItalic.designspace', formatter=<xmldiff.formatting.DiffFormatter object at 0x7f6f7df70d00>)
E + where <function diff_files at 0x7f6f7dccf640> = main.diff_files
E + and <xmldiff.formatting.DiffFormatter object at 0x7f6f7df70d00> = <class 'xmldiff.formatting.DiffFormatter'>()
E + where <class 'xmldiff.formatting.DiffFormatter'> = formatting.DiffFormatter
tests/builder/designspace_gen_test.py:116: AssertionError
__________________________ DesignspaceTest.test_basic __________________________
self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_basic>
def test_basic(self):
masters, instances = makeFamily()
font = makeFont(masters, instances, "DesignspaceTest Basic")
doc = to_designspace(font, instance_dir="out")
> self.expect_designspace(doc, "DesignspaceTestBasic.designspace")
tests/builder/interpolation_test.py:179:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/builder/interpolation_test.py:155: in expect_designspace
return self._expect_designspace(doc, expected_path)
tests/builder/interpolation_test.py:167: in _expect_designspace
self.fail("*.designspace file is different from expected")
E AssertionError: *.designspace file is different from expected
----------------------------- Captured stderr call -----------------------------
DesignspaceTestBasic.designspace discrepancies (per xmldiff):
[update-attribute, /designspace[1], format, "4.1"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] [insert, /designspace/instances/instance[2], kerning, 1] [insert, /designspace/instances/instance[2], info, 2] [insert, /designspace/instances/instance[3], kerning, 1] [insert, /designspace/instances/instance[3], info, 2] [insert, /designspace/instances/instance[4], kerning, 1] [insert, /designspace/instances/instance[4], info, 2]
_______________________ DesignspaceTest.test_familyName ________________________
self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_familyName>
def test_familyName(self):
masters, _ = makeFamily()
customFamily = makeInstance("Regular", weight=("Bold", 600, 151))
customFamily.customParameters["familyName"] = "Custom Family"
instances = [makeInstance("Regular", weight=("Regular", 400, 90)), customFamily]
font = makeFont(masters, instances, "DesignspaceTest FamilyName")
doc = to_designspace(font, instance_dir="out")
> self.expect_designspace(doc, "DesignspaceTestFamilyName.designspace")
tests/builder/interpolation_test.py:206:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/builder/interpolation_test.py:155: in expect_designspace
return self._expect_designspace(doc, expected_path)
tests/builder/interpolation_test.py:167: in _expect_designspace
self.fail("*.designspace file is different from expected")
E AssertionError: *.designspace file is different from expected
----------------------------- Captured stderr call -----------------------------
DesignspaceTestFamilyName.designspace discrepancies (per xmldiff):
[update-attribute, /designspace[1], format, "4.1"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] [insert, /designspace/instances/instance[2], kerning, 1] [insert, /designspace/instances/instance[2], info, 2]
________________________ DesignspaceTest.test_fileName _________________________
self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_fileName>
def test_fileName(self):
masters, _ = makeFamily()
customFileName = makeInstance("Regular", weight=("Bold", 600, 151))
customFileName.customParameters["fileName"] = "Custom FileName"
instances = [
makeInstance("Regular", weight=("Regular", 400, 90)),
customFileName,
]
font = makeFont(masters, instances, "DesignspaceTest FamilyName")
doc = to_designspace(font, instance_dir="out")
> self.expect_designspace(doc, "DesignspaceTestFileName.designspace")
tests/builder/interpolation_test.py:219:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/builder/interpolation_test.py:155: in expect_designspace
return self._expect_designspace(doc, expected_path)
tests/builder/interpolation_test.py:167: in _expect_designspace
self.fail("*.designspace file is different from expected")
E AssertionError: *.designspace file is different from expected
----------------------------- Captured stderr call -----------------------------
DesignspaceTestFileName.designspace discrepancies (per xmldiff):
[update-attribute, /designspace[1], format, "4.1"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] [insert, /designspace/instances/instance[2], kerning, 1] [insert, /designspace/instances/instance[2], info, 2]
__________________ DesignspaceTest.test_inactive_from_exports __________________
self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_inactive_from_exports>
def test_inactive_from_exports(self):
# Glyphs.app recognizes exports=0 as a flag for inactive instances.
# https://github.com/googlefonts/glyphsLib/issues/129
masters, instances = makeFamily()
for inst in instances:
if inst.name != "Semibold":
inst.exports = False
font = makeFont(masters, instances, "DesignspaceTest Inactive")
doc = to_designspace(font, instance_dir="out")
> self.expect_designspace(doc, "DesignspaceTestInactive.designspace")
tests/builder/interpolation_test.py:191:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/builder/interpolation_test.py:155: in expect_designspace
return self._expect_designspace(doc, expected_path)
tests/builder/interpolation_test.py:167: in _expect_designspace
self.fail("*.designspace file is different from expected")
E AssertionError: *.designspace file is different from expected
----------------------------- Captured stderr call -----------------------------
DesignspaceTestInactive.designspace discrepancies (per xmldiff):
[update-attribute, /designspace[1], format, "4.1"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2]
______________________ DesignspaceTest.test_instanceOrder ______________________
self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_instanceOrder>
def test_instanceOrder(self):
# The generated *.designspace file should place instances
# in the same order as they appear in the original source.
# https://github.com/googlefonts/glyphsLib/issues/113
masters, _ = makeFamily()
instances = [
makeInstance("Black", weight=("Black", 900, 190)),
makeInstance("Regular", weight=("Regular", 400, 90)),
makeInstance("Bold", weight=("Bold", 700, 151), is_bold=True),
]
font = makeFont(masters, instances, "DesignspaceTest InstanceOrder")
doc = to_designspace(font, instance_dir="out")
> self.expect_designspace(doc, "DesignspaceTestInstanceOrder.designspace")
tests/builder/interpolation_test.py:274:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/builder/interpolation_test.py:155: in expect_designspace
return self._expect_designspace(doc, expected_path)
tests/builder/interpolation_test.py:167: in _expect_designspace
self.fail("*.designspace file is different from expected")
E AssertionError: *.designspace file is different from expected
----------------------------- Captured stderr call -----------------------------
DesignspaceTestInstanceOrder.designspace discrepancies (per xmldiff):
[update-attribute, /designspace[1], format, "4.1"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] [insert, /designspace/instances/instance[2], kerning, 1] [insert, /designspace/instances/instance[2], info, 2] [insert, /designspace/instances/instance[3], kerning, 1] [insert, /designspace/instances/instance[3], info, 2]
_________________________ DesignspaceTest.test_twoAxes _________________________
self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_twoAxes>
def test_twoAxes(self):
# In NotoSansArabic-MM.glyphs, the regular width only contains
# parameters for the weight axis. For the width axis, glyphsLib
# should use 100 as default value (just like Glyphs.app does).
familyName = "DesignspaceTest TwoAxes"
masters = [
makeMaster("Regular", weight=90),
makeMaster("Black", weight=190),
makeMaster("Thin", weight=26),
makeMaster("ExtraCond", weight=90, width=70),
makeMaster("ExtraCond Black", weight=190, width=70),
makeMaster("ExtraCond Thin", weight=26, width=70),
]
instances = [
makeInstance("Thin", weight=("Thin", 100, 26)),
makeInstance("Regular", weight=("Regular", 400, 90)),
makeInstance("Semibold", weight=("SemiBold", 600, 128)),
makeInstance("Black", weight=("Black", 900, 190)),
makeInstance(
"ExtraCondensed Thin",
weight=("Thin", 100, 26),
width=("Extra Condensed", 2, 70),
),
makeInstance(
"ExtraCondensed",
weight=("Regular", 400, 90),
width=("Extra Condensed", 2, 70),
),
makeInstance(
"ExtraCondensed Black",
weight=("Black", 900, 190),
width=("Extra Condensed", 2, 70),
),
]
font = makeFont(masters, instances, familyName)
doc = to_designspace(font, instance_dir="out")
> self.expect_designspace(doc, "DesignspaceTestTwoAxes.designspace")
tests/builder/interpolation_test.py:313:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/builder/interpolation_test.py:155: in expect_designspace
return self._expect_designspace(doc, expected_path)
tests/builder/interpolation_test.py:167: in _expect_designspace
self.fail("*.designspace file is different from expected")
E AssertionError: *.designspace file is different from expected
----------------------------- Captured stderr call -----------------------------
DesignspaceTestTwoAxes.designspace discrepancies (per xmldiff):
[update-attribute, /designspace[1], format, "4.1"] [update-attribute, /designspace/axes/axis[2], minimum, "62.500000"] [update-attribute, /designspace/axes/axis[2]/map[1], input, "62.500000"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] [insert, /designspace/instances/instance[2], kerning, 1] [insert, /designspace/instances/instance[2], info, 2] [insert, /designspace/instances/instance[3], kerning, 1] [insert, /designspace/instances/instance[3], info, 2] [insert, /designspace/instances/instance[4], kerning, 1] [insert, /designspace/instances/instance[4], info, 2] [insert, /designspace/instances/instance[5], kerning, 1] [insert, /designspace/instances/instance[5], info, 2] [insert, /designspace/instances/instance[6], kerning, 1] [insert, /designspace/instances/instance[6], info, 2] [insert, /designspace/instances/instance[7], kerning, 1] [insert, /designspace/instances/instance[7], info, 2]
=========================== short test summary info ============================
FAILED tests/builder/designspace_gen_test.py::test_designspace_generation_regular_same_family_name[defcon]
FAILED tests/builder/designspace_gen_test.py::test_designspace_generation_italic_same_family_name[defcon]
FAILED tests/builder/designspace_gen_test.py::test_designspace_generation_regular_same_family_name[ufoLib2]
FAILED tests/builder/designspace_gen_test.py::test_designspace_generation_italic_same_family_name[ufoLib2]
FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_basic - Ass...
FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_familyName
FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_fileName - ...
FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_inactive_from_exports
FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_instanceOrder
FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_twoAxes - A...
================= 10 failed, 578 passed, 12 skipped in 14.94s ==================