1
0
mirror of https://github.com/craigerl/aprsd.git synced 2026-01-26 15:35:53 -05:00

added some mocks to speed up tests

This commit is contained in:
Walter Boring 2026-01-25 13:04:47 -05:00
parent 95bd43a0b1
commit 2180a52a9f
4 changed files with 56 additions and 3 deletions

View File

@ -1 +1 @@
waboring@hemna.com : 1
waboring@hemna.com : 1

View File

@ -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()

View File

@ -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."""

View File

@ -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