[feaLib] Reject duplicate languagesystem declarations

This commit is contained in:
Sascha Brawer 2015-09-08 10:56:07 +02:00
parent b0bbce88b1
commit 683a8f5dbc
2 changed files with 10 additions and 0 deletions

View File

@ -145,6 +145,10 @@ class Builder(object):
raise FeatureLibError(
'If "languagesystem DFLT dflt" is present, it must be '
'the first of the languagesystem statements', location)
if (script, language) in self.default_language_systems_:
raise FeatureLibError(
'"languagesystem %s %s" has already been specified' %
(script.strip(), language.strip()), location)
self.default_language_systems_.add((script, language))
def get_default_language_systems_(self):

View File

@ -124,6 +124,12 @@ class BuilderTest(unittest.TestCase):
self.assertEqual(builder.language_systems,
{('latn', 'FRA'), ('cyrl', 'RUS')})
def test_languagesystem_duplicate(self):
self.assertRaisesRegex(
FeatureLibError,
'"languagesystem cyrl RUS" has already been specified',
self.build, "languagesystem cyrl RUS; languagesystem cyrl RUS;")
def test_languagesystem_none_specified(self):
builder = Builder(None, TTFont())
builder.start_feature(location=None, name='test')