aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-08-31 01:22:28 +0200
committerIlya Etingof <etingof@gmail.com>2017-08-31 01:28:59 +0200
commit976d8c90f5f0c8b22c43a13d8aa624c16fd5685a (patch)
tree8d7b6fcc59a9b20a1828cddb81400e3821bec4be
parentce47a38480a4c33a20d4d6f616290dbb34ab2c87 (diff)
downloadpyasn1-976d8c90f5f0c8b22c43a13d8aa624c16fd5685a.tar.gz
fixed stray duplicate tags detection at NamedTypes.tagMap
-rw-r--r--CHANGES.rst1
-rw-r--r--pyasn1/type/namedtype.py2
-rw-r--r--tests/type/test_namedtype.py10
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__':