Mercurial > hg > auditok
changeset 279:87bb649f5d3a
Add test for CommandLineWorker
author | Amine Sehili <amine.sehili@gmail.com> |
---|---|
date | Sun, 29 Sep 2019 10:20:52 +0100 |
parents | b9d52cf32c89 |
children | 36b6d7abdfa9 |
files | tests/test_workers.py |
diffstat | 1 files changed, 46 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test_workers.py Sun Sep 29 10:03:24 2019 +0100 +++ b/tests/test_workers.py Sun Sep 29 10:20:52 2019 +0100 @@ -120,7 +120,7 @@ self.assertEqual(mock_calls, expected_save_calls) self.assertEqual(len(tokenizer.detections), len(self.expected)) - log_fmt = '[SAVE]: Detection {id} saved as "{filename}"' + log_fmt = "[SAVE]: Detection {id} saved as '{filename}'" for i, (det, exp, log_line) in enumerate( zip(tokenizer.detections, self.expected, log_lines), 1 ): @@ -134,6 +134,51 @@ # remove timestamp part and strip new line self.assertEqual(log_line[28:].strip(), exp_log_line) + def test_CommandLineWorker(self): + command_format = "do nothing with" + with TemporaryDirectory() as tmpdir: + file = os.path.join(tmpdir, "file.log") + logger = make_logger(file=file, name="test_CommandLineWorker") + observers = [CommandLineWorker(command_format, logger=logger)] + tokenizer = TokenizerWorker( + self.reader, + logger=logger, + observers=observers, + min_dur=0.3, + max_dur=2, + max_silence=0.2, + drop_trailing_silence=False, + strict_min_dur=False, + eth=50, + ) + with patch("auditok.workers.os.system") as patched_os_system: + tokenizer.start_all() + tokenizer.join() + tokenizer._observers[0].join() + # Get logged text + with open(file) as fp: + log_lines = [ + line + for line in fp.readlines() + if line.startswith("[COMMAND]") + ] + + # Asser PrintWorker ran as expected + expected_save_calls = [call(command_format) for _ in self.expected] + self.assertEqual(patched_os_system.mock_calls, expected_save_calls) + self.assertEqual(len(tokenizer.detections), len(self.expected)) + + log_fmt = "[COMMAND]: Detection {id} command '{command}'" + for i, (det, exp, log_line) in enumerate( + zip(tokenizer.detections, self.expected, log_lines), 1 + ): + start, end = exp + exp_log_line = log_fmt.format(i, command_format) + self.assertAlmostEqual(det.start, start) + self.assertAlmostEqual(det.end, end) + # remove timestamp part and strip new line + self.assertEqual(log_line[28:].strip(), exp_log_line) + def test_PrintWorker(self): observers = [ PrintWorker(print_format="[{id}] {start} {end}, dur: {duration}")