check for error code 600 and print error message

add filter tests
This commit is contained in:
onyx-and-iris 2025-05-26 00:18:53 +01:00
parent 057e677d90
commit 0a944f1f58
2 changed files with 39 additions and 1 deletions

View File

@ -1,5 +1,6 @@
"""module containing commands for manipulating filters in scenes.""" """module containing commands for manipulating filters in scenes."""
import obsws_python as obsws
import typer import typer
from rich.console import Console from rich.console import Console
from rich.table import Table from rich.table import Table
@ -20,7 +21,14 @@ def main():
@app.command('list | ls') @app.command('list | ls')
def list(ctx: typer.Context, source_name: str): def list(ctx: typer.Context, source_name: str):
"""List filters for a source.""" """List filters for a source."""
try:
resp = ctx.obj.get_source_filter_list(source_name) resp = ctx.obj.get_source_filter_list(source_name)
except obsws.error.OBSSDKError as e:
if e.code == 600:
err_console.print(f"No source was found by the name of '{source_name}'.")
raise typer.Exit(1)
else:
raise
if not resp.filters: if not resp.filters:
out_console.print(f'No filters found for source {source_name}') out_console.print(f'No filters found for source {source_name}')

30
tests/test_filter.py Normal file
View File

@ -0,0 +1,30 @@
"""Unit tests for the filter command in the OBS WebSocket CLI."""
from typer.testing import CliRunner
from obsws_cli.app import app
runner = CliRunner(mix_stderr=False)
def test_filter_list():
"""Test the filter list command on an audio source."""
result = runner.invoke(app, ['filter', 'list', 'Mic/Aux'])
assert result.exit_code == 0
assert 'Filters for Source: Mic/Aux' in result.stdout
assert 'pytest filter' in result.stdout
def test_filter_list_scene():
"""Test the filter list command on a scene."""
result = runner.invoke(app, ['filter', 'list', 'pytest_scene'])
assert result.exit_code == 0
assert 'Filters for Source: pytest_scene' in result.stdout
assert 'pytest filter' in result.stdout
def test_filter_list_invalid_source():
"""Test the filter list command with an invalid source."""
result = runner.invoke(app, ['filter', 'list', 'invalid_source'])
assert result.exit_code != 0
assert "No source was found by the name of 'invalid_source'" in result.stderr