Compare commits

..

7 Commits

Author SHA1 Message Date
Gilles Boccon-Gibod a739fc71ce Merge pull request #84 from google/gbg/78
use libusb auto-detach feature
2022-11-27 12:42:02 -08:00
Gilles Boccon-Gibod 9e5a85bd10 use libusb auto-detach feature 2022-11-25 17:52:13 -08:00
Gilles Boccon-Gibod b437bd8619 Merge pull request #82 from AlanRosenthal/alan/pytest_fixes
Fix test failures
2022-11-25 13:19:53 -08:00
Alan Rosenthal a3e4674819 Fix test failures
a. `DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead`
Updated call in `bumble/smp.py`

b. `ModuleNotFoundError: No module named 'bumble.apps'`
Updated imports in `tests/import_test.py`

c. Added `pytest-html` for easier viewing of test results
Added package in `setup.cfg`, and hook in `tasks.py`

d. Updated workflows to use `invoke test`

This is a partial fix of #81
2022-11-23 11:31:27 -05:00
Gilles Boccon-Gibod ae0b739e4a Merge pull request #79 from google/gbg/fix-host-reset
fix sequencing logic broken by earlier merge
2022-11-22 09:16:26 -08:00
Michael Mogenson 0570b59796 Merge pull request #77 from mogenson/l2cap-on-event
Fix for 'Host' object has no attribute 'add_listener'
2022-11-22 09:39:04 -05:00
Michael Mogenson 1c72242264 Fix for 'Host' object has no attribute 'add_listener'
Pyee's add_listener() method was not added until release 9.0.0. Bumble's
setup.cfg specifies a minimum pyee version of 8.2.2.

Remove the call to add_listener() in l2cap.py. If the add_listener() API
is prefered over the on(), another solution would be to bump the pyee
version requirement.
2022-11-21 12:31:21 -05:00
8 changed files with 29 additions and 24 deletions
+3 -3
View File
@@ -21,7 +21,7 @@ jobs:
- name: Get history and tags for SCM versioning to work
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
@@ -30,9 +30,9 @@ jobs:
run: |
python -m pip install --upgrade pip
python -m pip install ".[build,test,development,documentation]"
- name: Test with pytest
- name: Test
run: |
pytest
invoke test
- name: Build
run: |
inv build
+4 -1
View File
@@ -443,7 +443,10 @@ class ConsoleApp:
# Discover all services, characteristics and descriptors
self.append_to_output('discovering services...')
await self.connected_peer.discover_services()
self.append_to_output(f'found {len(self.connected_peer.services)} services, discovering charateristics...')
self.append_to_output(
f'found {len(self.connected_peer.services)} services,'
' discovering characteristics...'
)
await self.connected_peer.discover_characteristics()
self.append_to_output('found characteristics, discovering descriptors...')
for service in self.connected_peer.services:
+1 -1
View File
@@ -1224,7 +1224,7 @@ class ChannelManager:
self._host.remove_listener('disconnection', self.on_disconnection)
self._host = host
if host is not None:
host.add_listener('disconnection', self.on_disconnection)
host.on('disconnection', self.on_disconnection)
def find_channel(self, connection_handle, cid):
if connection_channels := self.channels.get(connection_handle):
+1 -1
View File
@@ -1110,7 +1110,7 @@ class Session:
self.manager.on_pairing(self, peer_address, keys)
def on_pairing_failure(self, reason):
logger.warn(f'pairing failure ({error_name(reason)})')
logger.warning(f'pairing failure ({error_name(reason)})')
if self.completed:
return
+5 -6
View File
@@ -414,14 +414,13 @@ async def open_usb_transport(spec):
device = found.open()
# Detach the kernel driver if supported and needed
# Auto-detach the kernel driver if supported
if usb1.hasCapability(usb1.CAP_SUPPORTS_DETACH_KERNEL_DRIVER):
try:
if device.kernelDriverActive(interface):
logger.debug("detaching kernel driver")
device.detachKernelDriver(interface)
except usb1.USBError:
pass
logger.debug('auto-detaching kernel driver')
device.setAutoDetachKernelDriver(True)
except usb1.USBError as error:
logger.warning(f'unable to auto-detach kernel driver: {error}')
# Set the configuration if needed
try:
+1
View File
@@ -65,6 +65,7 @@ build =
test =
pytest >= 6.2
pytest-asyncio >= 0.17
pytest-html >= 3.2.0
coverage >= 6.4
development =
invoke >= 1.4
+3 -1
View File
@@ -53,7 +53,7 @@ test_tasks = Collection()
ns.add_collection(test_tasks, name="test")
@task
def test(ctx, filter=None, junit=False, install=False):
def test(ctx, filter=None, junit=False, install=False, html=False):
# Install the package before running the tests
if install:
ctx.run("python -m pip install .[test]")
@@ -63,6 +63,8 @@ def test(ctx, filter=None, junit=False, install=False):
args += "--junit-xml test-results.xml"
if filter is not None:
args += " -k '{}'".format(filter)
if html:
args += "--html results.html"
ctx.run("python -m pytest {} {}".format(os.path.join(ROOT_DIR, "tests"), args))
test_tasks.add_task(test, default=True)
+11 -11
View File
@@ -64,37 +64,37 @@ def test_import():
# -----------------------------------------------------------------------------
def test_app_imports():
from bumble.apps.console import main
from apps.console import main
assert main
from bumble.apps.controller_info import main
from apps.controller_info import main
assert main
from bumble.apps.controllers import main
from apps.controllers import main
assert main
from bumble.apps.gatt_dump import main
from apps.gatt_dump import main
assert main
from bumble.apps.gg_bridge import main
from apps.gg_bridge import main
assert main
from bumble.apps.hci_bridge import main
from apps.hci_bridge import main
assert main
from bumble.apps.pair import main
from apps.pair import main
assert main
from bumble.apps.scan import main
from apps.scan import main
assert main
from bumble.apps.show import main
from apps.show import main
assert main
from bumble.apps.unbond import main
from apps.unbond import main
assert main
from bumble.apps.usb_probe import main
from apps.usb_probe import main
assert main