diff options
author | Ilya Etingof <etingof@gmail.com> | 2017-08-31 01:22:28 +0200 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2017-08-31 01:28:59 +0200 |
commit | 976d8c90f5f0c8b22c43a13d8aa624c16fd5685a (patch) | |
tree | 8d7b6fcc59a9b20a1828cddb81400e3821bec4be | |
parent | ce47a38480a4c33a20d4d6f616290dbb34ab2c87 (diff) | |
download | pyasn1-976d8c90f5f0c8b22c43a13d8aa624c16fd5685a.tar.gz |
fixed stray duplicate tags detection at NamedTypes.tagMap
-rw-r--r-- | CHANGES.rst | 1 | ||||
-rw-r--r-- | pyasn1/type/namedtype.py | 2 | ||||
-rw-r--r-- | tests/type/test_namedtype.py | 10 |
3 files changed, 12 insertions, 1 deletions
diff --git a/CHANGES.rst b/CHANGES.rst index c0fae44..1c39c14 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -2,6 +2,7 @@ Revision 0.3.4, released XX-08-2017 ----------------------------------- +- Fixed unnecessary duplicate tags detection at NamesType.tagMap - Fixed crash at SEQUENCE and SEQUENCE OF CER encoder when running in schemaless mode - Fixed Character types instantiation from OctetString type -- double diff --git a/pyasn1/type/namedtype.py b/pyasn1/type/namedtype.py index 4d69856..7a51f18 100644 --- a/pyasn1/type/namedtype.py +++ b/pyasn1/type/namedtype.py @@ -438,7 +438,7 @@ class NamedTypes(object): if defaultType is None: defaultType = tagMap.defaultType elif tagMap.defaultType is not None: - raise error.PyAsn1Error('Duplicate default ASN.1 type at %s' % (self,)) + return NamedTypes.PostponedError('Duplicate default ASN.1 type at %s' % (self,)) return tagmap.TagMap(presentTypes, skipTypes, defaultType) diff --git a/tests/type/test_namedtype.py b/tests/type/test_namedtype.py index be46e3c..4991876 100644 --- a/tests/type/test_namedtype.py +++ b/tests/type/test_namedtype.py @@ -116,6 +116,16 @@ class OrderedNamedTypesCaseBase(unittest.TestCase): 'getTypeByPosition() fails' +class DuplicateNamedTypesCaseBase(unittest.TestCase): + def testDuplicateDefaultTags(self): + nt = namedtype.NamedTypes( + namedtype.NamedType('first-name', univ.Any()), + namedtype.NamedType('age', univ.Any()) + ) + + assert isinstance(nt.tagMap, namedtype.NamedTypes.PostponedError) + + suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) if __name__ == '__main__': |