Skip to content

Commit 886ab7a

Browse files
committed
Fix ultrack test timeouts by mocking environment creation
- Add unittest.mock.patch to mock environment setup functions - Mock is_env_created, create_ultrack_env, _verify_and_fix_ultrack_env, and _ensure_scikit_image_fix in ultrack tracking tests - Prevents actual conda environment creation during tests - Reduces test time from 300+ seconds (timeout) to ~1-2 seconds - Fixes: test_ultrack_with_2d_synthetic_data, test_ultrack_parameter_validation, and test_ultrack_dimension_check
1 parent 1f4f2ff commit 886ab7a

1 file changed

Lines changed: 34 additions & 3 deletions

File tree

src/napari_tmidas/_tests/test_ultrack.py

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import subprocess
77
import tempfile
88
from pathlib import Path
9+
from unittest.mock import patch
910

1011
import numpy as np
1112
import pytest
@@ -208,12 +209,22 @@ def test_ultrack_script_zarr_storage(self):
208209
assert "foreground_path" in script or "foreground.zarr" in script
209210
assert "edges_path" in script or "edges.zarr" in script
210211

211-
def test_ultrack_with_2d_synthetic_data(self):
212+
@patch('napari_tmidas.processing_functions.ultrack_tracking._ensure_scikit_image_fix')
213+
@patch('napari_tmidas.processing_functions.ultrack_tracking._verify_and_fix_ultrack_env')
214+
@patch('napari_tmidas.processing_functions.ultrack_tracking.create_ultrack_env')
215+
@patch('napari_tmidas.processing_functions.ultrack_tracking.is_env_created')
216+
def test_ultrack_with_2d_synthetic_data(self, mock_is_env, mock_create_env, mock_verify, mock_scikit):
212217
"""Test ultrack tracking with synthetic 2D data."""
213218
from napari_tmidas.processing_functions.ultrack_tracking import (
214219
ultrack_ensemble_tracking,
215220
)
216221

222+
# Mock environment functions to avoid actual conda environment creation
223+
mock_is_env.return_value = True
224+
mock_create_env.return_value = True
225+
mock_verify.return_value = True
226+
mock_scikit.return_value = True
227+
217228
# Create synthetic TYX data (time series of 2D images)
218229
# Just a simple test to check interface, not actual tracking
219230
image = np.zeros((5, 100, 100), dtype=np.uint16)
@@ -229,12 +240,22 @@ def test_ultrack_with_2d_synthetic_data(self):
229240
# Should return array (even if unchanged due to missing files)
230241
assert isinstance(result, np.ndarray)
231242

232-
def test_ultrack_parameter_validation(self):
243+
@patch('napari_tmidas.processing_functions.ultrack_tracking._ensure_scikit_image_fix')
244+
@patch('napari_tmidas.processing_functions.ultrack_tracking._verify_and_fix_ultrack_env')
245+
@patch('napari_tmidas.processing_functions.ultrack_tracking.create_ultrack_env')
246+
@patch('napari_tmidas.processing_functions.ultrack_tracking.is_env_created')
247+
def test_ultrack_parameter_validation(self, mock_is_env, mock_create_env, mock_verify, mock_scikit):
233248
"""Test parameter validation in ultrack tracking."""
234249
from napari_tmidas.processing_functions.ultrack_tracking import (
235250
ultrack_ensemble_tracking,
236251
)
237252

253+
# Mock environment functions to avoid actual conda environment creation
254+
mock_is_env.return_value = True
255+
mock_create_env.return_value = True
256+
mock_verify.return_value = True
257+
mock_scikit.return_value = True
258+
238259
# Test with empty label suffixes
239260
image = np.zeros((5, 100, 100), dtype=np.uint16)
240261

@@ -247,12 +268,22 @@ def test_ultrack_parameter_validation(self):
247268
# Should return unchanged when no valid suffixes
248269
assert np.array_equal(result, image)
249270

250-
def test_ultrack_dimension_check(self):
271+
@patch('napari_tmidas.processing_functions.ultrack_tracking._ensure_scikit_image_fix')
272+
@patch('napari_tmidas.processing_functions.ultrack_tracking._verify_and_fix_ultrack_env')
273+
@patch('napari_tmidas.processing_functions.ultrack_tracking.create_ultrack_env')
274+
@patch('napari_tmidas.processing_functions.ultrack_tracking.is_env_created')
275+
def test_ultrack_dimension_check(self, mock_is_env, mock_create_env, mock_verify, mock_scikit):
251276
"""Test dimension validation in ultrack tracking."""
252277
from napari_tmidas.processing_functions.ultrack_tracking import (
253278
ultrack_ensemble_tracking,
254279
)
255280

281+
# Mock environment functions to avoid actual conda environment creation
282+
mock_is_env.return_value = True
283+
mock_create_env.return_value = True
284+
mock_verify.return_value = True
285+
mock_scikit.return_value = True
286+
256287
# Test with 2D image (no time dimension)
257288
image_2d = np.zeros((100, 100), dtype=np.uint16)
258289

0 commit comments

Comments
 (0)