mirror of
https://github.com/kk7ds/chirp.git
synced 2024-09-21 02:27:21 +00:00
Style cleanups for tests/
This commit is contained in:
parent
0f14ee5b12
commit
5ad747a0bd
@ -80,10 +80,7 @@ def _load_tests(loader, tests, pattern, suite=None):
|
||||
subdevs = _get_sub_devices(rclass, image)
|
||||
has_subdevs = subdevs != [rclass]
|
||||
for index, device in enumerate(subdevs):
|
||||
if isinstance(device, type):
|
||||
dst = None
|
||||
else:
|
||||
dst = device
|
||||
if not isinstance(device, type):
|
||||
device = device.__class__
|
||||
for case in driver_test_cases:
|
||||
tc = TestAdapterMeta(
|
||||
|
@ -8,7 +8,6 @@ from chirp import bandplan_na
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
||||
class DriverTest(unittest.TestCase):
|
||||
RADIO_CLASS = None
|
||||
SUB_DEVICE = None
|
||||
@ -139,12 +138,12 @@ class DriverTest(unittest.TestCase):
|
||||
elif k == "tuning_step" and not self.rf.has_tuning_step:
|
||||
continue
|
||||
elif k == "rtone" and not (
|
||||
a.tmode == "Tone" or
|
||||
(a.tmode == "TSQL" and not self.rf.has_ctone) or
|
||||
(a.tmode == "Cross" and tx_mode == "Tone") or
|
||||
(a.tmode == "Cross" and rx_mode == "Tone" and
|
||||
not self.rf.has_ctone)
|
||||
):
|
||||
a.tmode == "Tone" or
|
||||
(a.tmode == "TSQL" and not self.rf.has_ctone) or
|
||||
(a.tmode == "Cross" and tx_mode == "Tone") or
|
||||
(a.tmode == "Cross" and rx_mode == "Tone" and
|
||||
not self.rf.has_ctone)
|
||||
):
|
||||
continue
|
||||
elif k == "ctone" and (not self.rf.has_ctone or
|
||||
not (a.tmode == "TSQL" or
|
||||
|
@ -13,6 +13,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import sys
|
||||
from builtins import bytes
|
||||
|
||||
import struct
|
||||
@ -24,10 +25,10 @@ import logging
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
import sys
|
||||
l = logging.getLogger()
|
||||
l.level = logging.ERROR
|
||||
l.addHandler(logging.StreamHandler(sys.stdout))
|
||||
log = logging.getLogger()
|
||||
log.level = logging.ERROR
|
||||
log.addHandler(logging.StreamHandler(sys.stdout))
|
||||
|
||||
|
||||
class FakeIcomRadio(object):
|
||||
def __init__(self, radio, mapfile=None):
|
||||
@ -82,24 +83,18 @@ class FakeIcomRadio(object):
|
||||
break
|
||||
header = bytes(struct.pack('>%sB' % self.address_fmt,
|
||||
addr, size))
|
||||
#LOG.debug('Header for %02x@%04x: %r' % (
|
||||
# size, addr, header))
|
||||
chunk = []
|
||||
cs = 0
|
||||
for byte in header:
|
||||
chunk.extend(x for x in bytes(b'%02X' % byte))
|
||||
cs += byte
|
||||
#LOG.debug('Chunk so far: %r' % chunk)
|
||||
for byte in self._memory[addr:addr + size]:
|
||||
chunk.extend(x for x in bytes(b'%02X' % byte))
|
||||
cs += byte
|
||||
#LOG.debug('Chunk is %r' % chunk)
|
||||
|
||||
vx = ((cs ^ 0xFFFF) + 1) & 0xFF
|
||||
chunk.extend(x for x in bytes(b'%02X' % vx))
|
||||
self.queue(self.make_response(icf.CMD_CLONE_DAT, bytes(chunk)))
|
||||
#LOG.debug('Stopping after first frame')
|
||||
#break
|
||||
self.queue(self.make_response(icf.CMD_CLONE_END, bytes([])))
|
||||
|
||||
def do_clone_in(self):
|
||||
@ -118,23 +113,10 @@ class FakeIcomRadio(object):
|
||||
payload_bytes = bytes([hex_to_byte(payload_hex[i:i+2])
|
||||
for i in range(0, len(payload_hex), 2)])
|
||||
|
||||
addr, size = struct.unpack('>%sB' % self.address_fmt, payload_bytes[:header_len])
|
||||
addr, size = struct.unpack(
|
||||
'>%sB' % self.address_fmt, payload_bytes[:header_len])
|
||||
data = payload_bytes[header_len:-1]
|
||||
csum = payload_bytes[-1]
|
||||
|
||||
#addr_hex = payload[0:size_offset]
|
||||
#size_hex = payload[size_offset:size_offset + 2]
|
||||
#data_hex = payload[size_offset + 2:-2]
|
||||
#csum_hex = payload[-2:]
|
||||
|
||||
|
||||
#addr = hex_to_byte(addr_hex[0:2]) << 8 | hex_to_byte(addr_hex[2:4])
|
||||
#size = hex_to_byte(size_hex)
|
||||
#csum = hex_to_byte(csum_hex)
|
||||
|
||||
#data = []
|
||||
#for i in range(0, len(data_hex), 2):
|
||||
# data.append(hex_to_byte(data_hex[i:i+2]))
|
||||
# csum = payload_bytes[-1]
|
||||
|
||||
if len(data) != size:
|
||||
LOG.debug('Invalid frame size: expected %i, but got %i' % (
|
||||
@ -159,16 +141,17 @@ class FakeIcomRadio(object):
|
||||
def write(self, data):
|
||||
"""write() to radio, so here we process requests"""
|
||||
|
||||
assert isinstance(data, bytes), 'Bytes required, %s received' % data.__class__
|
||||
assert isinstance(
|
||||
data, bytes), 'Bytes required, %s received' % data.__class__
|
||||
|
||||
while data.startswith(b'\xfe\xfe\xfe'):
|
||||
data = data[1:]
|
||||
|
||||
src = data[2]
|
||||
dst = data[3]
|
||||
# src = data[2]
|
||||
# dst = data[3]
|
||||
cmd = data[4]
|
||||
payload = data[5:-1]
|
||||
end = data[-1]
|
||||
# end = data[-1]
|
||||
|
||||
LOG.debug('Received command: %x' % cmd)
|
||||
LOG.debug(' Full frame: %r' % data)
|
||||
|
@ -10,7 +10,7 @@ class TestCaseBanks(base.DriverTest):
|
||||
|
||||
for bank in banks:
|
||||
self.assertIsInstance(bank.get_name(), str,
|
||||
'Bank model returned non-string name')
|
||||
'Bank model returned non-string name')
|
||||
bank.set_name(testname)
|
||||
|
||||
for bank in bm.get_mappings():
|
||||
@ -52,7 +52,7 @@ class TestCaseBanks(base.DriverTest):
|
||||
# add a variable named channelAlwaysHasBank to it and make it True
|
||||
try:
|
||||
channelAlwaysHasBank = model.channelAlwaysHasBank
|
||||
except:
|
||||
except Exception:
|
||||
channelAlwaysHasBank = False
|
||||
|
||||
mem_banks = model.get_memory_mappings(mem)
|
||||
@ -63,7 +63,7 @@ class TestCaseBanks(base.DriverTest):
|
||||
else:
|
||||
self.assertEqual(0, len(mem_banks),
|
||||
'Freshly-created memory has banks '
|
||||
'and should not')
|
||||
'and should not')
|
||||
|
||||
banks = model.get_mappings()
|
||||
|
||||
@ -74,7 +74,6 @@ class TestCaseBanks(base.DriverTest):
|
||||
for x in model.get_mapping_memories(banks[0])],
|
||||
'Bank does not claim memory after add')
|
||||
|
||||
|
||||
model.remove_memory_from_mapping(mem, banks[0])
|
||||
if not channelAlwaysHasBank:
|
||||
self.assertNotIn(banks[0], model.get_memory_mappings(mem),
|
||||
@ -89,7 +88,7 @@ class TestCaseBanks(base.DriverTest):
|
||||
# catching Exception here papers over the likely failures from
|
||||
# this going unchecked.
|
||||
self.assertRaises(Exception,
|
||||
model.remove_memory_from_mapping, mem, banks[0])
|
||||
model.remove_memory_from_mapping, mem, banks[0])
|
||||
|
||||
@base.requires_feature('has_bank_index')
|
||||
def test_bank_index(self):
|
||||
@ -112,4 +111,4 @@ class TestCaseBanks(base.DriverTest):
|
||||
|
||||
suggested_index = model.get_next_mapping_index(banks[0])
|
||||
self.assertIn(suggested_index, list(range(*index_bounds)),
|
||||
'Suggested bank index not in valid range')
|
||||
'Suggested bank index not in valid range')
|
||||
|
@ -52,7 +52,7 @@ class TestCaseBruteForce(base.DriverTest):
|
||||
|
||||
try:
|
||||
self.set_and_compare(m)
|
||||
except errors.UnsupportedToneError as e:
|
||||
except errors.UnsupportedToneError:
|
||||
# If a radio doesn't support a particular tone value,
|
||||
# don't punish it
|
||||
pass
|
||||
@ -137,15 +137,16 @@ class TestCaseBruteForce(base.DriverTest):
|
||||
m = self.get_mem()
|
||||
if 'mode' in m.immutable:
|
||||
self.skipTest('Test memory has immutable duplex')
|
||||
|
||||
def ensure_urcall(call):
|
||||
l = self.radio.get_urcall_list()
|
||||
l[0] = call
|
||||
self.radio.set_urcall_list(l)
|
||||
lst = self.radio.get_urcall_list()
|
||||
lst[0] = call
|
||||
self.radio.set_urcall_list(lst)
|
||||
|
||||
def ensure_rptcall(call):
|
||||
l = self.radio.get_repeater_call_list()
|
||||
l[0] = call
|
||||
self.radio.set_repeater_call_list(l)
|
||||
lst = self.radio.get_repeater_call_list()
|
||||
lst[0] = call
|
||||
self.radio.set_repeater_call_list(lst)
|
||||
|
||||
def freq_is_ok(freq):
|
||||
for lo, hi in self.rf.valid_bands:
|
||||
@ -159,8 +160,8 @@ class TestCaseBruteForce(base.DriverTest):
|
||||
'Radio exposes non-standard mode')
|
||||
tmp = copy.deepcopy(m)
|
||||
if mode == "DV" and \
|
||||
isinstance(self.radio,
|
||||
chirp_common.IcomDstarSupport):
|
||||
isinstance(self.radio,
|
||||
chirp_common.IcomDstarSupport):
|
||||
tmp = chirp_common.DVMemory()
|
||||
try:
|
||||
ensure_urcall(tmp.dv_urcall)
|
||||
|
@ -4,7 +4,6 @@ from unittest import mock
|
||||
|
||||
from chirp import chirp_common
|
||||
from chirp import errors
|
||||
from chirp import memmap
|
||||
from tests import base
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
@ -62,13 +61,14 @@ class TestCaseClone(base.DriverTest):
|
||||
self.skipTest('Does not support clone')
|
||||
|
||||
real_time = time.time
|
||||
|
||||
def fake_time():
|
||||
return real_time() * 1000
|
||||
|
||||
self.patches = []
|
||||
self.use_patch(mock.patch('time.sleep'))
|
||||
self.use_patch(mock.patch('time.time',
|
||||
side_effect=fake_time))
|
||||
side_effect=fake_time))
|
||||
|
||||
def _test_with_serial(self, serial):
|
||||
# The base case sets us up with a file, so re-init with our serial.
|
||||
@ -82,14 +82,14 @@ class TestCaseClone(base.DriverTest):
|
||||
|
||||
msg = ('Clone should have failed and raised an exception '
|
||||
'that inherits from RadioError')
|
||||
with self.assertRaises(errors.RadioError,msg=msg):
|
||||
with self.assertRaises(errors.RadioError, msg=msg):
|
||||
self.radio.sync_in()
|
||||
|
||||
msg = ('Clone should have failed and raised an exception '
|
||||
'that inherits from RadioError')
|
||||
with self.assertRaises(errors.RadioError, msg=msg):
|
||||
self.radio.sync_out()
|
||||
|
||||
|
||||
def test_clone_serial_error(self):
|
||||
self._test_with_serial(SerialError())
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
import os
|
||||
|
||||
from chirp import chirp_common
|
||||
from chirp.drivers import generic_csv
|
||||
from chirp import import_logic
|
||||
from tests import base
|
||||
@ -31,8 +30,6 @@ class TestCaseCopyAll(base.DriverTest):
|
||||
else:
|
||||
self.skipTest('No channels with mutable freq found to use')
|
||||
|
||||
failures = []
|
||||
|
||||
for number in range(bounds[0], bounds[1]):
|
||||
src_mem = self.src_radio.get_memory(number)
|
||||
if src_mem.empty:
|
||||
@ -42,7 +39,7 @@ class TestCaseCopyAll(base.DriverTest):
|
||||
dst_mem = import_logic.import_mem(self.radio,
|
||||
src_rf, src_mem,
|
||||
overrides={
|
||||
"number": dst_number})
|
||||
"number": dst_number})
|
||||
import_logic.import_bank(self.radio,
|
||||
self.src_radio,
|
||||
dst_mem,
|
||||
|
@ -28,7 +28,7 @@ class TestCaseDetect(base.DriverTest):
|
||||
reason="requires python3.10 or higher")
|
||||
@mock.patch('builtins.print')
|
||||
def test_match_model_is_quiet_no_match(self, mock_print):
|
||||
with self.assertNoLogs(level=logging.DEBUG) as logs:
|
||||
with self.assertNoLogs(level=logging.DEBUG):
|
||||
self.radio.match_model(b'', 'foo.img')
|
||||
mock_print.assert_not_called()
|
||||
|
||||
@ -36,7 +36,7 @@ class TestCaseDetect(base.DriverTest):
|
||||
reason="requires python3.10 or higher")
|
||||
@mock.patch('builtins.print')
|
||||
def test_match_model_is_quiet_with_match(self, mock_print):
|
||||
with self.assertNoLogs(level=logging.DEBUG) as logs:
|
||||
with self.assertNoLogs(level=logging.DEBUG):
|
||||
with open(self.TEST_IMAGE, 'rb') as f:
|
||||
self.radio.match_model(f.read(), self.TEST_IMAGE)
|
||||
mock_print.assert_not_called()
|
||||
mock_print.assert_not_called()
|
||||
|
@ -1,6 +1,3 @@
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
from chirp import directory
|
||||
from tests import load_tests
|
||||
|
||||
|
@ -1,5 +1,3 @@
|
||||
import pytest
|
||||
|
||||
from chirp import chirp_common
|
||||
from chirp import errors
|
||||
from tests import base
|
||||
@ -50,7 +48,7 @@ class TestCaseEdges(base.DriverTest):
|
||||
145000000: [145856250, 145862500],
|
||||
445000000: [445856250, 445862500],
|
||||
862000000: [862731250, 862737500],
|
||||
}
|
||||
}
|
||||
|
||||
m = self.get_mem()
|
||||
|
||||
@ -88,8 +86,6 @@ class TestCaseEdges(base.DriverTest):
|
||||
break
|
||||
|
||||
def test_delete_memory(self):
|
||||
firstband = self.rf.valid_bands[0]
|
||||
testfreq = firstband[0]
|
||||
for loc in range(*self.rf.memory_bounds):
|
||||
m = self.radio.get_memory(loc)
|
||||
if 'empty' in m.immutable:
|
||||
@ -143,4 +139,4 @@ class TestCaseEdges(base.DriverTest):
|
||||
m2 = self.radio.get_memory(m1.number)
|
||||
self.assertEqual(m2.name.rstrip(), m2.name,
|
||||
'Radio set and returned a memory with trailing '
|
||||
'whitespace in the name')
|
||||
'whitespace in the name')
|
||||
|
Loading…
Reference in New Issue
Block a user