From 305ab44132f86aff0af5af0ab9cfd8345bab8dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 28 Jan 2026 11:01:52 -0800 Subject: [PATCH] tests: add unittest.main() call --- tests/test_aggregators.py | 4 ++++ tests/test_audio_buffer_processor.py | 4 ++++ tests/test_context_aggregators.py | 4 ++++ tests/test_context_aggregators_universal.py | 4 ++++ tests/test_daily_transport_service.py | 4 ++++ tests/test_dtmf_aggregator.py | 4 ++++ tests/test_filters.py | 4 ++++ tests/test_frame_processor.py | 4 ++++ tests/test_function_calling_adapters.py | 4 ++++ tests/test_interruption_strategies.py | 4 ++++ tests/test_ivr_navigation.py | 4 ++++ tests/test_krisp_sdk_manager.py | 4 ++++ tests/test_langchain.py | 4 ++++ tests/test_llm_response.py | 4 ++++ tests/test_markdown_text_filter.py | 4 ++++ tests/test_pattern_pair_aggregator.py | 4 ++++ tests/test_pipeline.py | 4 ++++ tests/test_piper_tts.py | 5 +++++ tests/test_producer_consumer.py | 4 ++++ tests/test_protobuf_serializer.py | 4 ++++ tests/test_rnnoise_cancellation.py | 4 ++++ tests/test_rnnoise_filter.py | 4 ++++ tests/test_rnnoise_resampling.py | 4 ++++ tests/test_run_inference.py | 4 ++++ tests/test_simple_text_aggregator.py | 4 ++++ tests/test_skip_tags_aggregator.py | 4 ++++ tests/test_stt_mute_filter.py | 4 ++++ tests/test_transcript_processor.py | 4 ++++ tests/test_user_idle_controller.py | 4 ++++ tests/test_user_idle_processor.py | 4 ++++ tests/test_user_mute_strategy.py | 4 ++++ tests/test_user_turn_controller.py | 4 ++++ tests/test_user_turn_processor.py | 4 ++++ tests/test_user_turn_start_strategy.py | 4 ++++ tests/test_user_turn_stop_strategy.py | 4 ++++ tests/test_utils_network.py | 4 ++++ tests/test_utils_string.py | 4 ++++ 37 files changed, 149 insertions(+) diff --git a/tests/test_aggregators.py b/tests/test_aggregators.py index 73ccf6b04..6563d324c 100644 --- a/tests/test_aggregators.py +++ b/tests/test_aggregators.py @@ -74,3 +74,7 @@ class TestGatedAggregator(unittest.IsolatedAsyncioTestCase): frames_to_send=frames_to_send, expected_down_frames=expected_down_frames, ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_audio_buffer_processor.py b/tests/test_audio_buffer_processor.py index faebe4ef5..4d3c588bc 100644 --- a/tests/test_audio_buffer_processor.py +++ b/tests/test_audio_buffer_processor.py @@ -115,3 +115,7 @@ class TestAudioBufferProcessor(unittest.IsolatedAsyncioTestCase): self.assertEqual(merged_audio[6:8], bot_audio[2:4]) self.assertEqual(len(self.processor._user_audio_buffer), 0) self.assertEqual(len(self.processor._bot_audio_buffer), 0) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_context_aggregators.py b/tests/test_context_aggregators.py index 17a24113e..24dae0b4c 100644 --- a/tests/test_context_aggregators.py +++ b/tests/test_context_aggregators.py @@ -1055,3 +1055,7 @@ class TestLLMAssistantAggregator( 0, "Hello Pipecat. Here's some code: ```python\nprint('Hello, World!')\n``` ```javascript\nconsole.log('Hello, World!');\n``` And some more: ```html\n
Hello, World!
\n``` Hope that helps!", ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_context_aggregators_universal.py b/tests/test_context_aggregators_universal.py index 63f1fef9a..e840fd8f5 100644 --- a/tests/test_context_aggregators_universal.py +++ b/tests/test_context_aggregators_universal.py @@ -566,3 +566,7 @@ class TestLLMAssistantAggregator(unittest.IsolatedAsyncioTestCase): # The pending text should be emitted on EndFrame self.assertEqual(len(stop_messages), 1) self.assertEqual(stop_messages[0].content, "Hello from Pipecat!") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_daily_transport_service.py b/tests/test_daily_transport_service.py index 5ebf28b83..117c859ce 100644 --- a/tests/test_daily_transport_service.py +++ b/tests/test_daily_transport_service.py @@ -90,3 +90,7 @@ class TestDailyTransport(unittest.IsolatedAsyncioTestCase): camera.write_frame.assert_called_with(b"test") mic.write_frames.assert_called() """ + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_dtmf_aggregator.py b/tests/test_dtmf_aggregator.py index dd9f4d835..827720b9c 100644 --- a/tests/test_dtmf_aggregator.py +++ b/tests/test_dtmf_aggregator.py @@ -240,3 +240,7 @@ class TestDTMFAggregator(unittest.IsolatedAsyncioTestCase): ] self.assertEqual(len(transcription_frames), 1) self.assertEqual(transcription_frames[0].text, "DTMF: 0123456789*#") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_filters.py b/tests/test_filters.py index 1d56fab38..b62239aeb 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -118,3 +118,7 @@ class TestWakeCheckFilter(unittest.IsolatedAsyncioTestCase): expected_down_frames=expected_down_frames, ) assert received_down[-1].text == "Phrase 1" + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_frame_processor.py b/tests/test_frame_processor.py index 2df35a10e..f44181858 100644 --- a/tests/test_frame_processor.py +++ b/tests/test_frame_processor.py @@ -347,3 +347,7 @@ class TestFrameProcessor(unittest.IsolatedAsyncioTestCase): self.assertIs(up_frame.items, orig.items) self.assertIs(down_frame.metadata, orig.metadata) self.assertIs(up_frame.metadata, orig.metadata) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_function_calling_adapters.py b/tests/test_function_calling_adapters.py index 5df59ed79..348754f47 100644 --- a/tests/test_function_calling_adapters.py +++ b/tests/test_function_calling_adapters.py @@ -204,3 +204,7 @@ class TestFunctionAdapters(unittest.TestCase): } ] assert AWSBedrockLLMAdapter().to_provider_tools_format(self.tools_def) == expected + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_interruption_strategies.py b/tests/test_interruption_strategies.py index 220649a53..d4aff2a7a 100644 --- a/tests/test_interruption_strategies.py +++ b/tests/test_interruption_strategies.py @@ -22,3 +22,7 @@ class TestMinWordsInterruptionStrategy(unittest.IsolatedAsyncioTestCase): self.assertEqual(await strategy.should_interrupt(), False) await strategy.append_text(" How are you?") self.assertEqual(await strategy.should_interrupt(), True) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_ivr_navigation.py b/tests/test_ivr_navigation.py index 420ea2c2f..ee43bdf62 100644 --- a/tests/test_ivr_navigation.py +++ b/tests/test_ivr_navigation.py @@ -353,3 +353,7 @@ class TestIVRNavigation(unittest.IsolatedAsyncioTestCase): expected_down_frames=expected_down_frames, expected_up_frames=expected_up_frames, ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_krisp_sdk_manager.py b/tests/test_krisp_sdk_manager.py index 7c774ab85..78a4d955f 100644 --- a/tests/test_krisp_sdk_manager.py +++ b/tests/test_krisp_sdk_manager.py @@ -194,3 +194,7 @@ class TestSampleRateConversion: expected_rates = [8000, 16000, 24000, 32000, 44100, 48000] for rate in expected_rates: assert rate in KRISP_SAMPLE_RATES + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_langchain.py b/tests/test_langchain.py index 1a3e1fe7d..8ec8905b4 100644 --- a/tests/test_langchain.py +++ b/tests/test_langchain.py @@ -97,3 +97,7 @@ class TestLangchain(unittest.IsolatedAsyncioTestCase): self.assertEqual( context_aggregator.assistant().messages[-1]["content"], self.expected_response ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_llm_response.py b/tests/test_llm_response.py index 51296f40b..8de7dda2d 100644 --- a/tests/test_llm_response.py +++ b/tests/test_llm_response.py @@ -134,3 +134,7 @@ class TestLLMFullResponseAggregator(unittest.IsolatedAsyncioTestCase): expected_down_frames=expected_down_frames, ) assert completion_ok + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_markdown_text_filter.py b/tests/test_markdown_text_filter.py index 7f6268953..250bc685a 100644 --- a/tests/test_markdown_text_filter.py +++ b/tests/test_markdown_text_filter.py @@ -244,3 +244,7 @@ class TestMarkdownTextFilter(unittest.IsolatedAsyncioTestCase): "bold and italic", "Text filtering should be re-enabled", ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_pattern_pair_aggregator.py b/tests/test_pattern_pair_aggregator.py index f4b660feb..bcc8d18f7 100644 --- a/tests/test_pattern_pair_aggregator.py +++ b/tests/test_pattern_pair_aggregator.py @@ -192,3 +192,7 @@ class TestPatternPairAggregator(unittest.IsolatedAsyncioTestCase): # Buffer should be empty self.assertEqual(self.aggregator.text.text, "") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_pipeline.py b/tests/test_pipeline.py index 4b1b57e29..dda9e583d 100644 --- a/tests/test_pipeline.py +++ b/tests/test_pipeline.py @@ -528,3 +528,7 @@ class TestPipelineTask(unittest.IsolatedAsyncioTestCase): await task.run(PipelineTaskParams(loop=asyncio.get_event_loop())) except asyncio.CancelledError: assert error_received + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_piper_tts.py b/tests/test_piper_tts.py index 8d877099c..0ce14bd85 100644 --- a/tests/test_piper_tts.py +++ b/tests/test_piper_tts.py @@ -7,6 +7,7 @@ """Tests for PiperTTSService.""" import asyncio +import unittest import aiohttp import pytest @@ -143,3 +144,7 @@ async def test_run_piper_tts_error(aiohttp_client): assert "status: 404" in up_frames[0].error, ( "ErrorFrame should contain details about the 404" ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_producer_consumer.py b/tests/test_producer_consumer.py index 4e9804c1b..0fd3f862c 100644 --- a/tests/test_producer_consumer.py +++ b/tests/test_producer_consumer.py @@ -118,3 +118,7 @@ class TestProducerConsumerProcessor(unittest.IsolatedAsyncioTestCase): frames_to_send=frames_to_send, expected_down_frames=expected_down_frames, ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_protobuf_serializer.py b/tests/test_protobuf_serializer.py index 99df3f96b..14d7d1aa7 100644 --- a/tests/test_protobuf_serializer.py +++ b/tests/test_protobuf_serializer.py @@ -38,3 +38,7 @@ class TestProtobufFrameSerializer(unittest.IsolatedAsyncioTestCase): self.assertEqual(frame.audio, audio_frame.audio) self.assertEqual(frame.sample_rate, audio_frame.sample_rate) self.assertEqual(frame.num_channels, audio_frame.num_channels) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_rnnoise_cancellation.py b/tests/test_rnnoise_cancellation.py index 386dcd424..a90b4f1e9 100644 --- a/tests/test_rnnoise_cancellation.py +++ b/tests/test_rnnoise_cancellation.py @@ -171,3 +171,7 @@ class TestRNNoiseCancellation(unittest.IsolatedAsyncioTestCase): self.assertLess(mse_output, mse_input, "MSE did not improve") print("Test Passed: Noise cancellation verified.") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_rnnoise_filter.py b/tests/test_rnnoise_filter.py index db3ac7825..853ea0c77 100644 --- a/tests/test_rnnoise_filter.py +++ b/tests/test_rnnoise_filter.py @@ -143,3 +143,7 @@ class TestRNNoiseFilter(unittest.IsolatedAsyncioTestCase): ) await filter.stop() + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_rnnoise_resampling.py b/tests/test_rnnoise_resampling.py index 060c9e802..83bf65edc 100644 --- a/tests/test_rnnoise_resampling.py +++ b/tests/test_rnnoise_resampling.py @@ -132,3 +132,7 @@ class TestRNNoiseResampling(unittest.IsolatedAsyncioTestCase): ) print("Test Passed: Resampling logic verified (with mocked RNNoise).") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_run_inference.py b/tests/test_run_inference.py index ea08445a9..eb18a5fda 100644 --- a/tests/test_run_inference.py +++ b/tests/test_run_inference.py @@ -509,3 +509,7 @@ async def test_aws_bedrock_run_inference_client_exception(): with patch.object(service._aws_session, "client", return_value=mock_context_manager): with pytest.raises(Exception, match="Bedrock API Error"): await service.run_inference(mock_context) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_simple_text_aggregator.py b/tests/test_simple_text_aggregator.py index 6baab4f26..ef51cfc49 100644 --- a/tests/test_simple_text_aggregator.py +++ b/tests/test_simple_text_aggregator.py @@ -123,3 +123,7 @@ class TestSimpleTextAggregator(unittest.IsolatedAsyncioTestCase): # flush() returns any remaining text (the "W" in this case) result = await self.aggregator.flush() assert result.text == "W" + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_skip_tags_aggregator.py b/tests/test_skip_tags_aggregator.py index 1f550198d..c7fea22c3 100644 --- a/tests/test_skip_tags_aggregator.py +++ b/tests/test_skip_tags_aggregator.py @@ -62,3 +62,7 @@ class TestSkipTagsAggregator(unittest.IsolatedAsyncioTestCase): self.assertEqual(result.text, text) self.assertEqual(self.aggregator.text.text, "") self.assertEqual(self.aggregator.text.type, "sentence") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_stt_mute_filter.py b/tests/test_stt_mute_filter.py index 39631d7e8..5682aaf22 100644 --- a/tests/test_stt_mute_filter.py +++ b/tests/test_stt_mute_filter.py @@ -326,3 +326,7 @@ class TestSTTMuteFilter(unittest.IsolatedAsyncioTestCase): frames_to_send=frames_to_send, expected_down_frames=expected_returned_frames, ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_transcript_processor.py b/tests/test_transcript_processor.py index 99e231c90..1dfdd58a3 100644 --- a/tests/test_transcript_processor.py +++ b/tests/test_transcript_processor.py @@ -792,3 +792,7 @@ class TestThoughtTranscription(unittest.IsolatedAsyncioTestCase): # Verify no updates since thought wasn't properly started self.assertEqual(len(received_updates), 0) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_user_idle_controller.py b/tests/test_user_idle_controller.py index 5de665353..4b6cbe1d3 100644 --- a/tests/test_user_idle_controller.py +++ b/tests/test_user_idle_controller.py @@ -214,3 +214,7 @@ class TestUserIdleController(unittest.IsolatedAsyncioTestCase): self.assertGreater(third_count, second_count) await controller.cleanup() + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_user_idle_processor.py b/tests/test_user_idle_processor.py index eec3abe5a..3a0169ec7 100644 --- a/tests/test_user_idle_processor.py +++ b/tests/test_user_idle_processor.py @@ -218,3 +218,7 @@ class TestUserIdleProcessor(unittest.IsolatedAsyncioTestCase): ) assert callback_called.is_set(), "Idle callback not called after bot speech" + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_user_mute_strategy.py b/tests/test_user_mute_strategy.py index d8261877e..07724dbfa 100644 --- a/tests/test_user_mute_strategy.py +++ b/tests/test_user_mute_strategy.py @@ -137,3 +137,7 @@ class TestFunctionCallUserMuteStrategy(unittest.IsolatedAsyncioTestCase): ) ) self.assertFalse(await strategy.process_frame(InterruptionFrame())) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_user_turn_controller.py b/tests/test_user_turn_controller.py index d8f642594..5362847ec 100644 --- a/tests/test_user_turn_controller.py +++ b/tests/test_user_turn_controller.py @@ -190,3 +190,7 @@ class TestUserTurnController(unittest.IsolatedAsyncioTestCase): self.assertTrue(should_start) self.assertTrue(should_stop) self.assertTrue(timeout) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_user_turn_processor.py b/tests/test_user_turn_processor.py index 6a3dd3ef3..ab4243cc4 100644 --- a/tests/test_user_turn_processor.py +++ b/tests/test_user_turn_processor.py @@ -152,3 +152,7 @@ class TestUserTurnProcessor(unittest.IsolatedAsyncioTestCase): self.assertTrue(should_start) self.assertTrue(should_stop) self.assertFalse(timeout) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_user_turn_start_strategy.py b/tests/test_user_turn_start_strategy.py index dabd4593b..2b4f7eb43 100644 --- a/tests/test_user_turn_start_strategy.py +++ b/tests/test_user_turn_start_strategy.py @@ -199,3 +199,7 @@ class TestExternalUserTurnStartStrategy(unittest.IsolatedAsyncioTestCase): await strategy.process_frame(UserStartedSpeakingFrame()) self.assertTrue(should_start) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_user_turn_stop_strategy.py b/tests/test_user_turn_stop_strategy.py index f0d336bbf..d930705fd 100644 --- a/tests/test_user_turn_stop_strategy.py +++ b/tests/test_user_turn_stop_strategy.py @@ -506,3 +506,7 @@ class TestExternalUserTurnStopStrategy(unittest.IsolatedAsyncioTestCase): await strategy.process_frame(UserStoppedSpeakingFrame()) self.assertTrue(should_start) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_utils_network.py b/tests/test_utils_network.py index 616ed896a..1f0048cc5 100644 --- a/tests/test_utils_network.py +++ b/tests/test_utils_network.py @@ -32,3 +32,7 @@ class TestUtilsNetwork(unittest.IsolatedAsyncioTestCase): assert exponential_backoff_time(attempt=4, min_wait=1, max_wait=20, multiplier=2) == 16 assert exponential_backoff_time(attempt=5, min_wait=1, max_wait=20, multiplier=2) == 20 assert exponential_backoff_time(attempt=6, min_wait=1, max_wait=20, multiplier=2) == 20 + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_utils_string.py b/tests/test_utils_string.py index 0f4844748..4afde718c 100644 --- a/tests/test_utils_string.py +++ b/tests/test_utils_string.py @@ -232,3 +232,7 @@ class TestStartEndTags(unittest.IsolatedAsyncioTestCase): ("", ""), 41, ) + + +if __name__ == "__main__": + unittest.main()