From: Henryk Plötz Date: Sun, 26 Aug 2018 12:02:22 +0000 (+0200) Subject: Fix a parser bug found in real data X-Git-Tag: v2.0.0~1^2~79 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9c08ae0b062db116493c2533877e34031cd4c875;p=thirdparty%2Fpython-fints.git Fix a parser bug found in real data --- diff --git a/fints/parser.py b/fints/parser.py index d3edbca..d313253 100644 --- a/fints/parser.py +++ b/fints/parser.py @@ -293,6 +293,8 @@ class FinTS3Parser: if data and deg: deg.append(data) + + if deg: data = deg segment.append(data) diff --git a/fints/types.py b/fints/types.py index 689276f..54bd0bf 100644 --- a/fints/types.py +++ b/fints/types.py @@ -232,6 +232,8 @@ class Container(metaclass=ContainerMeta): @classmethod def naive_parse(cls, data): + if data is None: + raise TypeError("No data provided") retval = cls() for ((name, field), value) in zip(retval._fields.items(), data): setattr(retval, name, value) diff --git a/tests/test_message_parser.py b/tests/test_message_parser.py index a98c697..ea0ea5f 100644 --- a/tests/test_message_parser.py +++ b/tests/test_message_parser.py @@ -80,6 +80,17 @@ def test_parse_HIRMG2(): assert seg.responses[1].code == '0100' assert len(seg.responses) == 2 +# Regression test, bug found in the wild +def test_extra_colon(): + message1 = rb"""HIRMG:2:2:+3060::Teilweise liegen Warnungen/Hinweise vor.'""" + + m1 = FinTS3Parser().parse_message(message1) + seg = m1.segments[0] + + assert seg.header.type == 'HIRMG' + assert seg.header.version == 2 + assert seg.header.reference is None + def test_invalid(): message1 = rb"""12"""