66import subprocess
77import tempfile
88from pathlib import Path
9+ from unittest .mock import patch
910
1011import numpy as np
1112import 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