2929 Rfc3164SyslogParser ,
3030 SyslogConsumer ,
3131)
32+ from simple_syslog .policy import AllowableDeviation
3233from simple_syslog .specification import SyslogSpecification
3334
3435expectedMessageOne = (
@@ -192,13 +193,55 @@ def er(line: str, err: Union[ParseError, DeviationError]) -> None:
192193 assert err_count == 1
193194
194195
196+ def test_parse_lines (file_of_3164_many_ise_txt ) -> None :
197+ """Test that we can parse many lines."""
198+ builder = DefaultBuilder (
199+ specification = SyslogSpecification .RFC_3164 ,
200+ key_provider = DefaultKeyProvider (),
201+ nil_policy = None ,
202+ allowed_deviations = None ,
203+ )
204+ parser = Rfc3164SyslogParser (builder )
205+ with file_of_3164_many_ise_txt .open ("r" ) as f :
206+ datasets = read_from_file (f , parser )
207+ assert len (datasets ) == 308
208+
209+
210+ def test_parse_lines_mixed_dates (file_of_3164_two_ise_mix_date ) -> None :
211+ """Test that we can parse lines with different date formats mixed in."""
212+ builder = DefaultBuilder (
213+ specification = SyslogSpecification .RFC_3164 ,
214+ key_provider = DefaultKeyProvider (),
215+ nil_policy = None ,
216+ allowed_deviations = None ,
217+ )
218+ parser = Rfc3164SyslogParser (builder )
219+ with file_of_3164_two_ise_mix_date .open ("r" ) as f :
220+ datasets = read_from_file (f , parser )
221+ assert len (datasets ) == 2
222+
223+
224+ def test_parse_lines_deviations (file_of_3164_many_ise_deviations_txt ) -> None :
225+ """Test that we can parse line with deviations."""
226+ builder = DefaultBuilder (
227+ specification = SyslogSpecification .RFC_3164 ,
228+ key_provider = DefaultKeyProvider (),
229+ nil_policy = None ,
230+ allowed_deviations = [AllowableDeviation .PRIORITY ],
231+ )
232+ parser = Rfc3164SyslogParser (builder )
233+ with file_of_3164_many_ise_deviations_txt .open ("r" ) as f :
234+ datasets = read_from_file (f , parser )
235+ assert len (datasets ) == 308
236+
237+
195238def consume_from_file (
196239 f : TextIOBase ,
197240 parser : AbstractSyslogParser [SyslogDataSet ],
198241 consumer : SyslogConsumer [SyslogDataSet ],
199242 error_consumer : Optional [ErrorConsumer ] = None ,
200243) -> None :
201- """Open parse with callback and optional error consumer."""
244+ """Parse a file with Callback and optional error consumer."""
202245 if error_consumer is not None :
203246 return parser .consume_stream_with_errors (f , consumer , error_consumer )
204247 return parser .consume_stream (f , consumer )
@@ -207,5 +250,15 @@ def consume_from_file(
207250def generate_from_file (
208251 f : TextIOBase , parser : AbstractSyslogParser [SyslogDataSet ]
209252) -> Generator [SyslogDataSet , None , None ]:
210- """Open a Path and return the generator ."""
253+ """Return the generator for a file ."""
211254 return parser .generate (f )
255+
256+
257+ def read_from_file (
258+ f : TextIOBase , parser : AbstractSyslogParser [SyslogDataSet ]
259+ ) -> List [SyslogDataSet ]:
260+ """Return the results of parsing each line of a file."""
261+ datasets = []
262+ for line in f .readlines ():
263+ datasets .append (parser .parse (line ))
264+ return datasets
0 commit comments