Output whether using CPP or Python so test runs are NOT ambiguous
Some checks are pending
Tests / Detect Changes (push) Waiting to run
Tests / Unit Tests (push) Blocked by required conditions
Tests / Unit Tests-1 (push) Blocked by required conditions
Tests / Unit Tests-2 (push) Blocked by required conditions
Tests / Unit Tests-3 (push) Blocked by required conditions
Tests / Integration Tests (push) Blocked by required conditions
Tests / Integration Tests-1 (push) Blocked by required conditions
Tests / Integration Tests-2 (push) Blocked by required conditions
Tests / Integration Tests-3 (push) Blocked by required conditions
Tests / Installer Test (Fresh System) (push) Blocked by required conditions
Tests / Installer Test (Fresh System)-1 (push) Blocked by required conditions
Tests / Installer Test (Fresh System)-2 (push) Blocked by required conditions
Tests / Installer Test (Fresh System)-3 (push) Blocked by required conditions
Tests / Installer Test (Fresh System)-4 (push) Blocked by required conditions
Tests / Installer Test (Raspberry Pi OS - ARM) (push) Waiting to run
Tests / Installer Test (Raspberry Pi OS - ARM)-1 (push) Waiting to run
Some checks are pending
Tests / Detect Changes (push) Waiting to run
Tests / Unit Tests (push) Blocked by required conditions
Tests / Unit Tests-1 (push) Blocked by required conditions
Tests / Unit Tests-2 (push) Blocked by required conditions
Tests / Unit Tests-3 (push) Blocked by required conditions
Tests / Integration Tests (push) Blocked by required conditions
Tests / Integration Tests-1 (push) Blocked by required conditions
Tests / Integration Tests-2 (push) Blocked by required conditions
Tests / Integration Tests-3 (push) Blocked by required conditions
Tests / Installer Test (Fresh System) (push) Blocked by required conditions
Tests / Installer Test (Fresh System)-1 (push) Blocked by required conditions
Tests / Installer Test (Fresh System)-2 (push) Blocked by required conditions
Tests / Installer Test (Fresh System)-3 (push) Blocked by required conditions
Tests / Installer Test (Fresh System)-4 (push) Blocked by required conditions
Tests / Installer Test (Raspberry Pi OS - ARM) (push) Waiting to run
Tests / Installer Test (Raspberry Pi OS - ARM)-1 (push) Waiting to run
This commit is contained in:
parent
0f2b07f27b
commit
bf620add77
2 changed files with 51 additions and 2 deletions
|
|
@ -136,6 +136,41 @@ def test_cpp_backend_request_fails_clearly_when_unavailable():
|
||||||
assert "C++ BLE fragmentation backend is not available" in completed.stderr
|
assert "C++ BLE fragmentation backend is not available" in completed.stderr
|
||||||
|
|
||||||
|
|
||||||
|
def test_bleinterface_does_not_silently_fallback_when_cpp_requested_but_unavailable():
|
||||||
|
env = os.environ.copy()
|
||||||
|
env["BLE_RETICULUM_FRAGMENTATION_BACKEND"] = "cpp"
|
||||||
|
env["PYTHONPATH"] = SRC_DIR
|
||||||
|
|
||||||
|
completed = subprocess.run(
|
||||||
|
[
|
||||||
|
sys.executable,
|
||||||
|
"-c",
|
||||||
|
"""
|
||||||
|
import sys, types
|
||||||
|
RNS = types.ModuleType('RNS')
|
||||||
|
sys.modules['RNS'] = RNS
|
||||||
|
transport = types.ModuleType('RNS.Transport')
|
||||||
|
sys.modules['RNS.Transport'] = transport
|
||||||
|
interfaces = types.ModuleType('RNS.Interfaces')
|
||||||
|
sys.modules['RNS.Interfaces'] = interfaces
|
||||||
|
interface_mod = types.ModuleType('RNS.Interfaces.Interface')
|
||||||
|
class Interface:
|
||||||
|
MODE_FULL = 0
|
||||||
|
interface_mod.Interface = Interface
|
||||||
|
sys.modules['RNS.Interfaces.Interface'] = interface_mod
|
||||||
|
import ble_reticulum.BLEInterface
|
||||||
|
""",
|
||||||
|
],
|
||||||
|
cwd=REPO_ROOT,
|
||||||
|
env=env,
|
||||||
|
text=True,
|
||||||
|
capture_output=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert completed.returncode != 0
|
||||||
|
assert "C++ BLE fragmentation backend is not available" in completed.stderr
|
||||||
|
|
||||||
|
|
||||||
def test_selected_backend_exposes_methods_expected_by_current_python_code():
|
def test_selected_backend_exposes_methods_expected_by_current_python_code():
|
||||||
result = run_probe("cpp", include_cpp=True)
|
result = run_probe("cpp", include_cpp=True)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,15 +79,23 @@ except ImportError:
|
||||||
# Import fragmentation backend selector.
|
# Import fragmentation backend selector.
|
||||||
# Note: When loaded as external interface, use absolute imports.
|
# Note: When loaded as external interface, use absolute imports.
|
||||||
try:
|
try:
|
||||||
|
from BLEFragmentationBackend import BACKEND as BLE_FRAGMENTATION_BACKEND
|
||||||
from BLEFragmentationBackend import BLEFragmenter, BLEReassembler
|
from BLEFragmentationBackend import BLEFragmenter, BLEReassembler
|
||||||
except ImportError:
|
except ImportError as e:
|
||||||
|
if "C++ BLE fragmentation backend is not available" in str(e):
|
||||||
|
raise
|
||||||
try:
|
try:
|
||||||
|
from ble_reticulum.BLEFragmentationBackend import BACKEND as BLE_FRAGMENTATION_BACKEND
|
||||||
from ble_reticulum.BLEFragmentationBackend import BLEFragmenter, BLEReassembler
|
from ble_reticulum.BLEFragmentationBackend import BLEFragmenter, BLEReassembler
|
||||||
except ImportError:
|
except ImportError as e:
|
||||||
|
if "C++ BLE fragmentation backend is not available" in str(e):
|
||||||
|
raise
|
||||||
# Compatibility fallback if the backend shim is not installed.
|
# Compatibility fallback if the backend shim is not installed.
|
||||||
try:
|
try:
|
||||||
|
BLE_FRAGMENTATION_BACKEND = "python-direct"
|
||||||
from BLEFragmentation import BLEFragmenter, BLEReassembler
|
from BLEFragmentation import BLEFragmenter, BLEReassembler
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
BLE_FRAGMENTATION_BACKEND = "python-direct"
|
||||||
from ble_reticulum.BLEFragmentation import BLEFragmenter, BLEReassembler
|
from ble_reticulum.BLEFragmentation import BLEFragmenter, BLEReassembler
|
||||||
|
|
||||||
# Import GATT server for peripheral mode
|
# Import GATT server for peripheral mode
|
||||||
|
|
@ -463,6 +471,12 @@ class BLEInterface(Interface):
|
||||||
|
|
||||||
|
|
||||||
RNS.log(f"{self} initializing with service UUID {self.service_uuid}", RNS.LOG_INFO)
|
RNS.log(f"{self} initializing with service UUID {self.service_uuid}", RNS.LOG_INFO)
|
||||||
|
RNS.log(
|
||||||
|
f"{self} fragmentation backend: {BLE_FRAGMENTATION_BACKEND} "
|
||||||
|
f"(fragmenter={BLEFragmenter.__module__}.{BLEFragmenter.__name__}, "
|
||||||
|
f"reassembler={BLEReassembler.__module__}.{BLEReassembler.__name__})",
|
||||||
|
RNS.LOG_NOTICE
|
||||||
|
)
|
||||||
RNS.log(f"{self} power mode: {self.power_mode}, max peers: {self.max_peers}", RNS.LOG_DEBUG)
|
RNS.log(f"{self} power mode: {self.power_mode}, max peers: {self.max_peers}", RNS.LOG_DEBUG)
|
||||||
RNS.log(f"{self} central mode: {'ENABLED' if self.enable_central else 'DISABLED'}", RNS.LOG_INFO)
|
RNS.log(f"{self} central mode: {'ENABLED' if self.enable_central else 'DISABLED'}", RNS.LOG_INFO)
|
||||||
RNS.log(f"{self} peripheral mode: {'ENABLED' if self.enable_peripheral else 'DISABLED'}", RNS.LOG_INFO)
|
RNS.log(f"{self} peripheral mode: {'ENABLED' if self.enable_peripheral else 'DISABLED'}", RNS.LOG_INFO)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue