From 97573634a25eb9a0f9226f8bd02a3c8fc2a13dfc Mon Sep 17 00:00:00 2001 From: Alexandre Taillon-Desrochers Date: Tue, 21 Jan 2025 11:55:47 -0500 Subject: [PATCH] Prevent adding duplicate languages in metadata --- lgr/metadata.py | 3 ++- tests/unit/test_metadata.py | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lgr/metadata.py b/lgr/metadata.py index db00baa..2097fa2 100644 --- a/lgr/metadata.py +++ b/lgr/metadata.py @@ -216,7 +216,8 @@ def add_language(self, language, force=False): raise LGRFormatException(LGRFormatException. LGRFormatReason.INVALID_LANGUAGE_TAG) self.rfc7940_checks.tested('metadata_language') - self.languages.append(language) + if language not in self.languages: + self.languages.append(language) except UnicodeEncodeError: # Can't skip this one logger.error("Invalid non-ASCII language tag '%s'", language) diff --git a/tests/unit/test_metadata.py b/tests/unit/test_metadata.py index 6e150ce..d73c083 100644 --- a/tests/unit/test_metadata.py +++ b/tests/unit/test_metadata.py @@ -2,15 +2,13 @@ """ test_metadata.py - Unit testing of metadata module. """ -from __future__ import unicode_literals - import unittest -from lgr.metadata import Metadata, ReferenceManager from lgr.exceptions import (LGRFormatException, ReferenceAlreadyExists, ReferenceInvalidId, ReferenceNotDefined) +from lgr.metadata import Metadata, ReferenceManager class TestMetadata(unittest.TestCase): @@ -43,6 +41,12 @@ def test_add_language(self): self.assertEqual(the_exception.reason, LGRFormatException.LGRFormatReason.INVALID_LANGUAGE_TAG) + def test_add_language_does_not_add_duplicate(self): + self.metadata.add_language('fr') + self.metadata.add_language('fr') + + self.assertListEqual(self.metadata.languages, ['fr']) + def test_add_language_force(self): self.metadata.add_language('fr', force=True) self.metadata.add_language('de-419-DE', force=True) @@ -190,6 +194,7 @@ def test_update_inexsting_reference(self): self.manager.update_reference, 1, **{'value': 'The Unicode Standard 1.2'}) + if __name__ == '__main__': import logging logging.getLogger('lgr').addHandler(logging.NullHandler())