diff --git a/fitparse/base.py b/fitparse/base.py index b0ebf87..3c68939 100644 --- a/fitparse/base.py +++ b/fitparse/base.py @@ -574,6 +574,8 @@ def messages(self): return list(self.get_messages()) def parse(self): + if self._complete: + return while self._parse_message(): pass diff --git a/tests/test.py b/tests/test.py index e4851d5..6b776b4 100755 --- a/tests/test.py +++ b/tests/test.py @@ -74,6 +74,23 @@ def testfile(filename): class FitFileTestCase(unittest.TestCase): + def test_parse_can_be_called_after_parsing_completes(self): + fit_file = FitFile(testfile('activity-settings.fit')) + + fit_file.parse() + messages = fit_file.messages + fit_file.parse() + + self.assertEqual(messages, fit_file.messages) + + def test_parse_can_be_called_after_messages_property_completes_parsing(self): + fit_file = FitFile(testfile('activity-settings.fit')) + + messages = fit_file.messages + fit_file.parse() + + self.assertEqual(messages, fit_file.messages) + def test_basic_file_with_one_record(self, endian='<'): f = FitFile(generate_fitfile(endian=endian))