cli #15

Merged
madrigal merged 28 commits from cli into main 2025-12-22 10:42:57 -05:00
6 changed files with 47 additions and 47 deletions
Showing only changes of commit ab6e5dcb2f - Show all commits

View File

@ -10,7 +10,7 @@ import pytest
import yaml import yaml
from click.testing import CliRunner from click.testing import CliRunner
from ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture import ( from ria_toolkit_oss_cli.ria_toolkit_oss.capture import (
auto_select_device, auto_select_device,
capture, capture,
get_sdr_device, get_sdr_device,
@ -58,7 +58,7 @@ class TestAutoSelectDevice:
"""Test auto-select with no devices found.""" """Test auto-select with no devices found."""
from click.exceptions import ClickException from click.exceptions import ClickException
with patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.list_all_devices") as mock_discover: with patch("ria_toolkit_oss_cli.ria_toolkit_oss.capture.list_all_devices") as mock_discover:
mock_discover.return_value = [] mock_discover.return_value = []
with pytest.raises(ClickException) as exc_info: with pytest.raises(ClickException) as exc_info:
@ -68,7 +68,7 @@ class TestAutoSelectDevice:
def test_auto_select_single_device(self): def test_auto_select_single_device(self):
"""Test auto-select with single device.""" """Test auto-select with single device."""
with patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.list_all_devices") as mock_discover: with patch("ria_toolkit_oss_cli.ria_toolkit_oss.capture.list_all_devices") as mock_discover:
mock_discover.return_value = [{"type": "HackRF", "serial": "123456"}] mock_discover.return_value = [{"type": "HackRF", "serial": "123456"}]
device_type = auto_select_device(quiet=True) device_type = auto_select_device(quiet=True)
@ -77,8 +77,8 @@ class TestAutoSelectDevice:
def test_auto_select_single_device_with_warning(self): def test_auto_select_single_device_with_warning(self):
"""Test auto-select shows warning when not quiet.""" """Test auto-select shows warning when not quiet."""
with ( with (
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.list_all_devices") as mock_discover, patch("ria_toolkit_oss_cli.ria_toolkit_oss.capture.list_all_devices") as mock_discover,
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.click.echo") as mock_echo, patch("ria_toolkit_oss_cli.ria_toolkit_oss.capture.click.echo") as mock_echo,
): ):
mock_discover.return_value = [{"type": "PlutoSDR", "uri": "ip:pluto.local"}] mock_discover.return_value = [{"type": "PlutoSDR", "uri": "ip:pluto.local"}]
@ -93,7 +93,7 @@ class TestAutoSelectDevice:
"""Test auto-select with multiple devices raises error.""" """Test auto-select with multiple devices raises error."""
from click.exceptions import ClickException from click.exceptions import ClickException
with patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.list_all_devices") as mock_discover: with patch("ria_toolkit_oss_cli.ria_toolkit_oss.capture.list_all_devices") as mock_discover:
mock_discover.return_value = [ mock_discover.return_value = [
{"type": "HackRF", "serial": "123456"}, {"type": "HackRF", "serial": "123456"},
{"type": "PlutoSDR", "uri": "ip:pluto.local"}, {"type": "PlutoSDR", "uri": "ip:pluto.local"},
@ -106,7 +106,7 @@ class TestAutoSelectDevice:
def test_auto_select_device_name_mapping(self): def test_auto_select_device_name_mapping(self):
"""Test device name mapping.""" """Test device name mapping."""
with patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.list_all_devices") as mock_discover: with patch("ria_toolkit_oss_cli.ria_toolkit_oss.capture.list_all_devices") as mock_discover:
# Test various device name formats # Test various device name formats
test_cases = [ test_cases = [
("PlutoSDR", "pluto"), ("PlutoSDR", "pluto"),
@ -128,7 +128,7 @@ class TestSaveVisualization:
"""Test successful visualization save.""" """Test successful visualization save."""
mock_recording = MagicMock() mock_recording = MagicMock()
with patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.view_simple_sig") as mock_view: with patch("ria_toolkit_oss_cli.ria_toolkit_oss.capture.view_simple_sig") as mock_view:
save_visualization(mock_recording, "test.png", quiet=True) save_visualization(mock_recording, "test.png", quiet=True)
mock_view.assert_called_once_with( mock_view.assert_called_once_with(
@ -141,10 +141,10 @@ class TestSaveVisualization:
with ( with (
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.view_simple_sig", "ria_toolkit_oss_cli.ria_toolkit_oss.capture.view_simple_sig",
side_effect=ImportError("Module not found"), side_effect=ImportError("Module not found"),
), ),
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.click.echo") as mock_echo, patch("ria_toolkit_oss_cli.ria_toolkit_oss.capture.click.echo") as mock_echo,
): ):
save_visualization(mock_recording, "test.png", quiet=True) save_visualization(mock_recording, "test.png", quiet=True)
@ -159,10 +159,10 @@ class TestSaveVisualization:
with ( with (
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.view_simple_sig", "ria_toolkit_oss_cli.ria_toolkit_oss.capture.view_simple_sig",
side_effect=Exception("Failed to plot"), side_effect=Exception("Failed to plot"),
), ),
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.capture.click.echo") as mock_echo, patch("ria_toolkit_oss_cli.ria_toolkit_oss.capture.click.echo") as mock_echo,
): ):
save_visualization(mock_recording, "test.png", quiet=True) save_visualization(mock_recording, "test.png", quiet=True)

View File

@ -6,7 +6,7 @@ import tempfile
import pytest import pytest
import yaml import yaml
from ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.common import ( from ria_toolkit_oss_cli.ria_toolkit_oss.common import (
format_frequency, format_frequency,
format_sample_rate, format_sample_rate,
load_yaml_config, load_yaml_config,

View File

@ -7,7 +7,7 @@ from pathlib import Path
import pytest import pytest
from click.testing import CliRunner from click.testing import CliRunner
from ria_toolkit_oss.ria_toolkit_oss_cli.cli import cli from ria_toolkit_oss_cli.cli import cli
class TestConvert: class TestConvert:

View File

@ -16,7 +16,7 @@ from pathlib import Path
import pytest import pytest
from click.testing import CliRunner from click.testing import CliRunner
from ria_toolkit_oss.ria_toolkit_oss_cli.cli import cli from ria_toolkit_oss_cli.cli import cli
class TestGenerateCommandBasics: class TestGenerateCommandBasics:

View File

@ -9,7 +9,7 @@ from click.testing import CliRunner
from ria_toolkit_oss.datatypes import Annotation, Recording from ria_toolkit_oss.datatypes import Annotation, Recording
from ria_toolkit_oss.io import load_recording, to_sigmf from ria_toolkit_oss.io import load_recording, to_sigmf
from ria_toolkit_oss.ria_toolkit_oss_cli.cli import cli from ria_toolkit_oss_cli.cli import cli
class TestSplitHelp: class TestSplitHelp:

View File

@ -8,8 +8,8 @@ import numpy as np
import pytest import pytest
from click.testing import CliRunner from click.testing import CliRunner
from ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.common import get_sdr_device from ria_toolkit_oss_cli.ria_toolkit_oss.common import get_sdr_device
from ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit import ( from ria_toolkit_oss_cli.ria_toolkit_oss.transmit import (
auto_select_tx_device, auto_select_tx_device,
check_sample_rate_mismatch, check_sample_rate_mismatch,
load_input_file, load_input_file,
@ -59,12 +59,12 @@ class TestAutoSelectTxDevice:
from click.exceptions import ClickException from click.exceptions import ClickException
with ( with (
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_sdr_drivers"), patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_sdr_drivers"),
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_uhd_devices", return_value=[]), patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_uhd_devices", return_value=[]),
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_pluto_devices", return_value=[]), patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_pluto_devices", return_value=[]),
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_hackrf_devices", return_value=[]), patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_hackrf_devices", return_value=[]),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_bladerf_devices", return_value=[] "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_bladerf_devices", return_value=[]
), ),
): ):
@ -76,15 +76,15 @@ class TestAutoSelectTxDevice:
def test_auto_select_single_device(self): def test_auto_select_single_device(self):
"""Test auto-select with single TX device.""" """Test auto-select with single TX device."""
with ( with (
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_sdr_drivers"), patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_sdr_drivers"),
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_uhd_devices", return_value=[]), patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_uhd_devices", return_value=[]),
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_pluto_devices", return_value=[]), patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_pluto_devices", return_value=[]),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_hackrf_devices", "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_hackrf_devices",
return_value=[{"type": "HackRF One", "serial": "123456"}], return_value=[{"type": "HackRF One", "serial": "123456"}],
), ),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_bladerf_devices", return_value=[] "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_bladerf_devices", return_value=[]
), ),
): ):
@ -96,18 +96,18 @@ class TestAutoSelectTxDevice:
from click.exceptions import ClickException from click.exceptions import ClickException
with ( with (
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_sdr_drivers"), patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_sdr_drivers"),
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_uhd_devices", return_value=[]), patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_uhd_devices", return_value=[]),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_pluto_devices", "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_pluto_devices",
return_value=[{"type": "PlutoSDR", "uri": "ip:pluto.local"}], return_value=[{"type": "PlutoSDR", "uri": "ip:pluto.local"}],
), ),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_hackrf_devices", "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_hackrf_devices",
return_value=[{"type": "HackRF One", "serial": "123456"}], return_value=[{"type": "HackRF One", "serial": "123456"}],
), ),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_bladerf_devices", return_value=[] "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_bladerf_devices", return_value=[]
), ),
): ):
@ -128,18 +128,18 @@ class TestAutoSelectTxDevice:
for device_name, expected_type in test_cases: for device_name, expected_type in test_cases:
with ( with (
patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_sdr_drivers"), patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_sdr_drivers"),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_uhd_devices", return_value=[] "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_uhd_devices", return_value=[]
), ),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_pluto_devices", return_value=[] "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_pluto_devices", return_value=[]
), ),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_hackrf_devices", return_value=[] "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_hackrf_devices", return_value=[]
), ),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_bladerf_devices", "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.find_bladerf_devices",
return_value=[{"type": device_name}], return_value=[{"type": device_name}],
), ),
): ):
@ -169,7 +169,7 @@ class TestLoadInputFile:
mock_recording = MagicMock() mock_recording = MagicMock()
with patch( with patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_recording", "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_recording",
return_value=mock_recording, return_value=mock_recording,
): ):
recording = load_input_file(test_file, legacy=False) recording = load_input_file(test_file, legacy=False)
@ -187,7 +187,7 @@ class TestLoadInputFile:
mock_recording = MagicMock() mock_recording = MagicMock()
with patch( with patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.from_npy_legacy", "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.from_npy_legacy",
return_value=mock_recording, return_value=mock_recording,
): ):
recording = load_input_file(test_file, legacy=True) recording = load_input_file(test_file, legacy=True)
@ -205,7 +205,7 @@ class TestLoadInputFile:
try: try:
with patch( with patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_recording", "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_recording",
side_effect=Exception("Unsupported format"), side_effect=Exception("Unsupported format"),
): ):
with pytest.raises(ClickException) as exc_info: with pytest.raises(ClickException) as exc_info:
@ -281,7 +281,7 @@ class TestCheckSampleRateMismatch:
mock_recording = MagicMock() mock_recording = MagicMock()
mock_recording.metadata = {"sample_rate": 2e6} mock_recording.metadata = {"sample_rate": 2e6}
with patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.click.echo") as mock_echo: with patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.click.echo") as mock_echo:
check_sample_rate_mismatch(mock_recording, 2e6, quiet=False) check_sample_rate_mismatch(mock_recording, 2e6, quiet=False)
mock_echo.assert_not_called() mock_echo.assert_not_called()
@ -290,7 +290,7 @@ class TestCheckSampleRateMismatch:
mock_recording = MagicMock() mock_recording = MagicMock()
mock_recording.metadata = {"sample_rate": 1e6} mock_recording.metadata = {"sample_rate": 1e6}
with patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.click.echo") as mock_echo: with patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.click.echo") as mock_echo:
check_sample_rate_mismatch(mock_recording, 2e6, quiet=False) check_sample_rate_mismatch(mock_recording, 2e6, quiet=False)
mock_echo.assert_called_once() mock_echo.assert_called_once()
args = str(mock_echo.call_args) args = str(mock_echo.call_args)
@ -302,7 +302,7 @@ class TestCheckSampleRateMismatch:
mock_recording = MagicMock() mock_recording = MagicMock()
mock_recording.metadata = {"sample_rate": 1e6} mock_recording.metadata = {"sample_rate": 1e6}
with patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.click.echo") as mock_echo: with patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.click.echo") as mock_echo:
check_sample_rate_mismatch(mock_recording, 2e6, quiet=True) check_sample_rate_mismatch(mock_recording, 2e6, quiet=True)
mock_echo.assert_not_called() mock_echo.assert_not_called()
@ -311,7 +311,7 @@ class TestCheckSampleRateMismatch:
mock_recording = MagicMock() mock_recording = MagicMock()
mock_recording.metadata = None mock_recording.metadata = None
with patch("ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.click.echo") as mock_echo: with patch("ria_toolkit_oss_cli.ria_toolkit_oss.transmit.click.echo") as mock_echo:
check_sample_rate_mismatch(mock_recording, 2e6, quiet=False) check_sample_rate_mismatch(mock_recording, 2e6, quiet=False)
mock_echo.assert_not_called() mock_echo.assert_not_called()
@ -343,10 +343,10 @@ class TestTransmitCommand:
with ( with (
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.get_sdr_device", return_value=mock_sdr "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.get_sdr_device", return_value=mock_sdr
), ),
patch( patch(
"ria_toolkit_oss.ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_input_file", "ria_toolkit_oss_cli.ria_toolkit_oss.transmit.load_input_file",
return_value=mock_recording, return_value=mock_recording,
), ),
): ):