tests: allow PipelineParams instead of individual arguments

This commit is contained in:
Aleix Conchillo Flaqué
2025-08-27 19:01:15 -07:00
parent e384ca949e
commit 947faf8a39
3 changed files with 8 additions and 6 deletions

View File

@@ -97,6 +97,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- `pipeline.tests.utils.run_test()` now allows passing `PipelineParams` instead
of individual parameters.
- Updated `daily-python` to 0.19.8. - Updated `daily-python` to 0.19.8.
- `PipelineTask` now waits for `StartFrame` to reach the end of the pipeline - `PipelineTask` now waits for `StartFrame` to reach the end of the pipeline

View File

@@ -8,7 +8,7 @@
import asyncio import asyncio
from dataclasses import dataclass from dataclasses import dataclass
from typing import Any, Awaitable, Callable, Dict, List, Optional, Sequence, Tuple from typing import Awaitable, Callable, List, Optional, Sequence, Tuple
from pipecat.frames.frames import ( from pipecat.frames.frames import (
EndFrame, EndFrame,
@@ -128,7 +128,7 @@ async def run_test(
expected_up_frames: Optional[Sequence[type]] = None, expected_up_frames: Optional[Sequence[type]] = None,
ignore_start: bool = True, ignore_start: bool = True,
observers: Optional[List[BaseObserver]] = None, observers: Optional[List[BaseObserver]] = None,
start_metadata: Optional[Dict[str, Any]] = None, pipeline_params: Optional[PipelineParams] = None,
send_end_frame: bool = True, send_end_frame: bool = True,
) -> Tuple[Sequence[Frame], Sequence[Frame]]: ) -> Tuple[Sequence[Frame], Sequence[Frame]]:
"""Run a test pipeline with the specified processor and validate frame flow. """Run a test pipeline with the specified processor and validate frame flow.
@@ -144,7 +144,7 @@ async def run_test(
expected_up_frames: Expected frame types flowing upstream (optional). expected_up_frames: Expected frame types flowing upstream (optional).
ignore_start: Whether to ignore StartFrames in frame validation. ignore_start: Whether to ignore StartFrames in frame validation.
observers: Optional list of observers to attach to the pipeline. observers: Optional list of observers to attach to the pipeline.
start_metadata: Optional metadata to include with the StartFrame. pipeline_params: Pipeline parameters.
send_end_frame: Whether to send an EndFrame at the end of the test. send_end_frame: Whether to send an EndFrame at the end of the test.
Returns: Returns:
@@ -154,7 +154,6 @@ async def run_test(
AssertionError: If the received frames don't match the expected frame types. AssertionError: If the received frames don't match the expected frame types.
""" """
observers = observers or [] observers = observers or []
start_metadata = start_metadata or {}
received_up = asyncio.Queue() received_up = asyncio.Queue()
received_down = asyncio.Queue() received_down = asyncio.Queue()
@@ -173,7 +172,7 @@ async def run_test(
task = PipelineTask( task = PipelineTask(
pipeline, pipeline,
params=PipelineParams(start_metadata=start_metadata), params=pipeline_params,
observers=observers, observers=observers,
cancel_on_idle_timeout=False, cancel_on_idle_timeout=False,
) )

View File

@@ -65,7 +65,7 @@ class TestPipeline(unittest.IsolatedAsyncioTestCase):
frames_to_send=frames_to_send, frames_to_send=frames_to_send,
expected_down_frames=expected_down_frames, expected_down_frames=expected_down_frames,
ignore_start=False, ignore_start=False,
start_metadata={"foo": "bar"}, pipeline_params=PipelineParams(start_metadata={"foo": "bar"}),
) )
assert "foo" in received_down[-1].metadata assert "foo" in received_down[-1].metadata