diff --git a/fitparse/base.py b/fitparse/base.py index b0ebf87..ee3adb5 100644 --- a/fitparse/base.py +++ b/fitparse/base.py @@ -582,7 +582,8 @@ class DataProcessorMixin: """Add data processing to the FitFileDecoder""" def __init__(self, *args, **kwargs): - self._processor = kwargs.pop("data_processor", None) or FitFileDataProcessor() + processor = kwargs.pop("data_processor", None) + self._processor = FitFileDataProcessor() if processor is None else processor super().__init__(*args, **kwargs) def _parse_data_message(self, header): diff --git a/tests/test.py b/tests/test.py index e4851d5..0475f28 100755 --- a/tests/test.py +++ b/tests/test.py @@ -7,7 +7,7 @@ import warnings from fitparse import FitFile -from fitparse.processors import UTC_REFERENCE, StandardUnitsDataProcessor +from fitparse.processors import FitFileDataProcessor, UTC_REFERENCE, StandardUnitsDataProcessor from fitparse.records import BASE_TYPES, Crc from fitparse.utils import FitEOFError, FitCRCError, FitHeaderError, FitParseError @@ -74,6 +74,22 @@ def testfile(filename): class FitFileTestCase(unittest.TestCase): + def test_uses_falsey_custom_data_processor(self): + class FalseyProcessor(FitFileDataProcessor): + def __init__(self): + self.called = False + + def __bool__(self): + return False + + def run_message_processor(self, data_message): + self.called = True + + processor = FalseyProcessor() + FitFile(testfile('activity-settings.fit'), data_processor=processor).parse() + + self.assertTrue(processor.called) + def test_basic_file_with_one_record(self, endian='<'): f = FitFile(generate_fitfile(endian=endian))