From 7c6337facf79232f6a3a6c8bbc32a8f4af4b71d8 Mon Sep 17 00:00:00 2001 From: Tom Archer Date: Tue, 19 Jan 2021 17:53:53 +0000 Subject: [PATCH] Add exception and test --- Lib/fontTools/otlLib/builder.py | 3 ++- Tests/otlLib/builder_test.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Lib/fontTools/otlLib/builder.py b/Lib/fontTools/otlLib/builder.py index 7e1444518..7711fa4c5 100644 --- a/Lib/fontTools/otlLib/builder.py +++ b/Lib/fontTools/otlLib/builder.py @@ -2574,7 +2574,8 @@ class ClassDefBuilder(object): return self.classes_.add(glyphs) for glyph in glyphs: - assert glyph not in self.glyphs_ + if glyph in self.glyphs_: + raise TypeError(f"Glyph {glyph} already present in class.") self.glyphs_[glyph] = glyphs def classes(self): diff --git a/Tests/otlLib/builder_test.py b/Tests/otlLib/builder_test.py index bdfc64509..a2c51331d 100644 --- a/Tests/otlLib/builder_test.py +++ b/Tests/otlLib/builder_test.py @@ -1101,6 +1101,18 @@ class ClassDefBuilderTest(object): assert not b.canAdd({"d", "e", "f"}) assert not b.canAdd({"f"}) + def test_add_exception(self): + b = builder.ClassDefBuilder(useClass0=True) + b.add({"a", "b", "c", "d"}) + with pytest.raises(TypeError): + b.add({"a"}) + with pytest.raises(TypeError): + b.add({"b"}) + with pytest.raises(TypeError): + b.add({"c"}) + with pytest.raises(TypeError): + b.add({"d"}) + buildStatTable_test_data = [ ([