From c5721d56e6f395e59761352dd88ed763c22e4087 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Wed, 12 Nov 2025 16:29:22 +0000 Subject: [PATCH 1/2] Added an additional check to see if the glob match is an actual directory --- src/murfey/server/api/session_shared.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/murfey/server/api/session_shared.py b/src/murfey/server/api/session_shared.py index 49362d9b..29607d98 100644 --- a/src/murfey/server/api/session_shared.py +++ b/src/murfey/server/api/session_shared.py @@ -168,7 +168,8 @@ def find_upstream_visits(session_id: int, db: SQLModelSession): # Looks for visit name in file path current_upstream_visits = {} for visit_path in Path(upstream_data_dir).glob(f"{visit_name.split('-')[0]}-*"): - current_upstream_visits[visit_path.name] = visit_path + if visit_path.is_dir(): + current_upstream_visits[visit_path.name] = visit_path upstream_visits[upstream_instrument] = current_upstream_visits return upstream_visits From 32c7df45f49151b18c838a46d5af4b5107632ad1 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Wed, 12 Nov 2025 16:34:36 +0000 Subject: [PATCH 2/2] Update tests to ensure that only directories are picked up and returned --- tests/server/api/test_session_shared.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/server/api/test_session_shared.py b/tests/server/api/test_session_shared.py index 7f971b94..c0f4c109 100644 --- a/tests/server/api/test_session_shared.py +++ b/tests/server/api/test_session_shared.py @@ -30,14 +30,20 @@ def test_find_upstream_visits( # Create mock upstream visit directories and necessary data structures upstream_visits = {} upstream_data_dirs = {} - for n in range(5): + for n in range(10): upstream_instrument = f"{instrument_name}{str(n).zfill(2)}" upstream_visit = ( tmp_path / f"{upstream_instrument}/data/2020/{visit_name_root}-{n}" ) - upstream_visit.mkdir(parents=True, exist_ok=True) - upstream_visits[upstream_instrument] = {upstream_visit.stem: upstream_visit} - upstream_data_dirs[upstream_instrument] = upstream_visit.parent + # Create some as directories, and some as files + if n % 2: + # Only directories should be picked up + upstream_visit.mkdir(parents=True, exist_ok=True) + upstream_visits[upstream_instrument] = {upstream_visit.stem: upstream_visit} + upstream_data_dirs[upstream_instrument] = upstream_visit.parent + else: + upstream_visit.parent.mkdir(parents=True, exist_ok=True) + upstream_visit.touch(exist_ok=True) # Mock the MachineConfig for this instrument mock_machine_config = MagicMock(spec=MachineConfig)