diff --git a/AUTHORS b/AUTHORS index e59aba4..fcfb6d3 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1 +1 @@ -waboring@hemna.com : 1 \ No newline at end of file +waboring@hemna.com : 1 diff --git a/tests/plugins/test_package.py b/tests/plugins/test_package.py index d0c715e..d3a510e 100644 --- a/tests/plugins/test_package.py +++ b/tests/plugins/test_package.py @@ -1,5 +1,6 @@ import os import unittest +from unittest import mock from aprsd import plugin from aprsd.utils import package @@ -74,8 +75,43 @@ class TestPackage(unittest.TestCase): self.assertIsNotNone(extensions) def test_get_pypi_packages(self): - packages = package.get_pypi_packages() - self.assertIsNotNone(packages) + # Mock PyPI API responses + mock_simple_response = mock.MagicMock() + mock_simple_response.json.return_value = { + 'projects': [ + {'name': 'aprsd-plugin-test'}, + {'name': 'aprsd-extension-test'}, + {'name': 'other-package'}, + ] + } + + # Create mock responses for each package + def create_package_response(pkg_name): + mock_response = mock.MagicMock() + mock_response.json.return_value = { + 'info': { + 'name': pkg_name, + 'version': '1.0.0', + 'summary': f'Test {pkg_name}', + 'package_url': f'https://pypi.org/project/{pkg_name}/', + }, + 'releases': {'1.0.0': [{'upload_time': '2024-01-01T00:00:00'}]}, + } + return mock_response + + with mock.patch('aprsd.utils.package.requests.get') as mock_get: + # First call returns simple response, subsequent calls return package info + mock_get.side_effect = [ + mock_simple_response, + create_package_response('aprsd-plugin-test'), + create_package_response('aprsd-extension-test'), + ] + packages = package.get_pypi_packages() + self.assertIsNotNone(packages) + # Verify requests.get was called (at least once for simple API) + self.assertTrue(mock_get.called) + # Should have called for simple API + 2 packages + self.assertGreaterEqual(mock_get.call_count, 1) def test_log_installed_extensions_and_plugins(self): package.log_installed_extensions_and_plugins() diff --git a/tests/threads/test_rx.py b/tests/threads/test_rx.py index ed557bf..f2b49d5 100644 --- a/tests/threads/test_rx.py +++ b/tests/threads/test_rx.py @@ -15,12 +15,17 @@ class TestAPRSDRXThread(unittest.TestCase): self.packet_queue = queue.Queue() self.rx_thread = rx.APRSDRXThread(self.packet_queue) self.rx_thread.pkt_count = 0 # Reset packet count + # Mock time.sleep to speed up tests + self.sleep_patcher = mock.patch('aprsd.threads.rx.time.sleep') + self.mock_sleep = self.sleep_patcher.start() def tearDown(self): """Clean up after tests.""" self.rx_thread.stop() if self.rx_thread.is_alive(): self.rx_thread.join(timeout=1) + # Stop the sleep patcher + self.sleep_patcher.stop() def test_init(self): """Test initialization.""" @@ -233,12 +238,17 @@ class TestAPRSDFilterThread(unittest.TestCase): pass self.filter_thread = TestFilterThread('TestFilterThread', self.packet_queue) + # Mock time.sleep to speed up tests + self.sleep_patcher = mock.patch('aprsd.threads.rx.time.sleep') + self.mock_sleep = self.sleep_patcher.start() def tearDown(self): """Clean up after tests.""" self.filter_thread.stop() if self.filter_thread.is_alive(): self.filter_thread.join(timeout=1) + # Stop the sleep patcher + self.sleep_patcher.stop() def test_init(self): """Test initialization.""" @@ -321,12 +331,17 @@ class TestAPRSDProcessPacketThread(unittest.TestCase): pass self.process_thread = ConcreteProcessThread(self.packet_queue) + # Mock time.sleep to speed up tests + self.sleep_patcher = mock.patch('aprsd.threads.rx.time.sleep') + self.mock_sleep = self.sleep_patcher.start() def tearDown(self): """Clean up after tests.""" self.process_thread.stop() if self.process_thread.is_alive(): self.process_thread.join(timeout=1) + # Stop the sleep patcher + self.sleep_patcher.stop() def test_init(self): """Test initialization.""" diff --git a/tox.ini b/tox.ini index 785299b..34525e5 100644 --- a/tox.ini +++ b/tox.ini @@ -88,6 +88,7 @@ commands = skip_install = true basepython = python3 deps = pre-commit +allowlist_externals = pre-commit commands = pre-commit run --all-files --show-diff-on-failure [testenv:fix] @@ -95,6 +96,7 @@ description = run code formatter and linter (auto-fix) skip_install = true deps = pre-commit-uv>=4.1.1 +allowlist_externals = pre-commit commands = pre-commit run --all-files --show-diff-on-failure