From 1b9c248940eafc1700edf3cd82c824aa2d9b56d4 Mon Sep 17 00:00:00 2001 From: Simon Halvorsen Date: Mon, 14 Sep 2026 11:59:00 +0200 Subject: [PATCH 1/2] Moved coverage-args to coverage-target in Makefile to reduce noise Ticket: None Changelog: None Signed-off-by: Simon Halvorsen --- Makefile | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c5b895d..37796ed 100644 --- a/Makefile +++ b/Makefile @@ -21,8 +21,8 @@ install: check: venv format lint uv run pytest -export COVERAGE_PROCESS_START = $(PWD)/.coveragerc -export COVERAGE_FILE = $(PWD)/.coverage +coverage coverage-skip-unsafe: export COVERAGE_PROCESS_START = $(PWD)/.coveragerc +coverage coverage-skip-unsafe: export COVERAGE_FILE = $(PWD)/.coverage coverage: uv run coverage erase uv run coverage run --parallel-mode -m pytest @@ -32,3 +32,11 @@ coverage: uv run coverage combine uv run coverage report --fail-under=40 uv run coverage xml +coverage-skip-unsafe: + uv run coverage erase + uv run coverage run --parallel-mode -m pytest + uv run bash tests/shell/all.sh + uv run bash tests/docker/0*.sh + uv run coverage combine + uv run coverage report --fail-under=40 + uv run coverage xml From ca8d75875de09f1d879dee064afee1b2d1c72dd1 Mon Sep 17 00:00:00 2001 From: Simon Halvorsen Date: Mon, 14 Sep 2026 12:03:51 +0200 Subject: [PATCH 2/2] Fixed a crash in get_by_name/get_by_uuid when node list is empty (vm not in cloud) Ticket: CFE-4628 Signed-off-by: Simon Halvorsen --- cf_remote/spawn.py | 6 +++--- tests/test_spawn.py | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/cf_remote/spawn.py b/cf_remote/spawn.py index bb23f0c..af25ad7 100644 --- a/cf_remote/spawn.py +++ b/cf_remote/spawn.py @@ -140,7 +140,7 @@ def get_by_ip(cls, ip, driver=None, nodes=None): print("Don't know which driver to use: %s" % _DRIVERS.keys()) return None - if not nodes: + if nodes is None: assert driver is not None nodes = driver.list_nodes() for node in nodes: @@ -160,7 +160,7 @@ def get_by_name(cls, name, driver=None, nodes=None): print("Don't know which driver to use: %s" % _DRIVERS.keys()) return None - if not nodes: + if nodes is None: assert driver is not None nodes = driver.list_nodes() for node in nodes: @@ -178,7 +178,7 @@ def get_by_uuid(cls, uuid, driver=None, nodes=None): print("Don't know which driver to use: %s" % _DRIVERS.keys()) return None - if not nodes: + if nodes is None: assert driver is not None nodes = driver.list_nodes() for node in nodes: diff --git a/tests/test_spawn.py b/tests/test_spawn.py index 7f308cf..649de8a 100644 --- a/tests/test_spawn.py +++ b/tests/test_spawn.py @@ -9,6 +9,7 @@ _get_image_criteria, _update_config, destroy_vms, + CloudVM, ) from cf_remote.utils import read_json, write_json @@ -266,3 +267,15 @@ def test_destroy_vms_one_permanent_failure_does_not_block_other_vms(state_paths) state = read_json(str(cloud_state)) assert "@ok" not in state assert "@bad" in state + + +def test_get_by_ip_empty_list_no_driver_returns_none(): + assert CloudVM.get_by_ip("1.2.3.4", nodes=[]) is None + + +def test_get_by_uuid_empty_list_no_driver_returns_none(): + assert CloudVM.get_by_uuid("some-uuid", nodes=[]) is None + + +def test_get_by_name_empty_list_no_driver_returns_none(): + assert CloudVM.get_by_name("my-vm", nodes=[]) is None