@@ -64,7 +64,7 @@ class MockClusterNotUpError(Exception):
6464 "sky" : sky_mock ,
6565 "sky.task" : sky_task_mock ,
6666 "sky.backends" : backends_mock ,
67- "sky.status_lib" : status_lib_mock ,
67+ "sky.utils. status_lib" : status_lib_mock ,
6868 "sky.core" : sky_core_mock ,
6969 "sky.skylet.job_lib" : job_lib_mock ,
7070 "sky.utils.common_utils" : common_utils_mock ,
@@ -228,8 +228,8 @@ def test_to_resources_with_none_string(self, mock_resources, mock_skypilot_impor
228228 assert config ["cloud" ] is None
229229 assert config ["any_of" ][1 ]["region" ] is None
230230
231- @patch ("nemo_run.core.execution.skypilot. sky.core.status" )
232- @patch ("nemo_run.core.execution.skypilot. sky.core.queue" )
231+ @patch ("sky.core.status" )
232+ @patch ("sky.core.queue" )
233233 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.parse_app" )
234234 def test_status_success (self , mock_parse_app , mock_queue , mock_status ):
235235 # Set up mocks
@@ -250,7 +250,7 @@ def test_status_success(self, mock_parse_app, mock_queue, mock_status):
250250 mock_status .assert_called_once_with ("cluster-name" )
251251 mock_queue .assert_called_once_with ("cluster-name" , all_users = True )
252252
253- @patch ("nemo_run.core.execution.skypilot. sky.core.status" )
253+ @patch ("sky.core.status" )
254254 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.parse_app" )
255255 def test_status_cluster_not_found (self , mock_parse_app , mock_status ):
256256 # Set up mocks
@@ -264,8 +264,8 @@ def test_status_cluster_not_found(self, mock_parse_app, mock_status):
264264 assert status is None
265265 assert job_details is None
266266
267- @patch ("nemo_run.core.execution.skypilot. sky.core.status" )
268- @patch ("nemo_run.core.execution.skypilot. sky.core.queue" )
267+ @patch ("sky.core.status" )
268+ @patch ("sky.core.queue" )
269269 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.parse_app" )
270270 def test_status_cluster_not_up (self , mock_parse_app , mock_queue , mock_status ):
271271 # Create a mock exception instead of importing the real one
@@ -280,7 +280,7 @@ class MockClusterNotUpError(Exception):
280280
281281 # Patch the ClusterNotUpError class in sky.exceptions
282282 with patch (
283- "nemo_run.core.execution.skypilot. sky.exceptions.ClusterNotUpError" ,
283+ "sky.exceptions.ClusterNotUpError" ,
284284 MockClusterNotUpError ,
285285 ):
286286 # Call the method
@@ -290,8 +290,8 @@ class MockClusterNotUpError(Exception):
290290 assert status == mock_cluster_status
291291 assert job_details is None
292292
293- @patch ("nemo_run.core.execution.skypilot. sky.core.tail_logs" )
294- @patch ("nemo_run.core.execution.skypilot. sky.skylet.job_lib.JobStatus.is_terminal" )
293+ @patch ("sky.core.tail_logs" )
294+ @patch ("sky.skylet.job_lib.JobStatus.is_terminal" )
295295 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.status" )
296296 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.parse_app" )
297297 def test_logs_running_job (self , mock_parse_app , mock_status , mock_is_terminal , mock_tail_logs ):
@@ -306,7 +306,7 @@ def test_logs_running_job(self, mock_parse_app, mock_status, mock_is_terminal, m
306306 # Verify results
307307 mock_tail_logs .assert_called_once_with ("cluster-name" , 123 )
308308
309- @patch ("nemo_run.core.execution.skypilot. sky.skylet.job_lib.JobStatus.is_terminal" )
309+ @patch ("sky.skylet.job_lib.JobStatus.is_terminal" )
310310 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.status" )
311311 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.parse_app" )
312312 @patch ("builtins.open" , new_callable = mock_open , read_data = "Test log content" )
@@ -328,7 +328,7 @@ def test_logs_terminal_job_fallback(
328328 mock_open .assert_called_once ()
329329 mock_print .assert_called_with ("Test log content" , end = "" , flush = True )
330330
331- @patch ("nemo_run.core.execution.skypilot. sky.core.cancel" )
331+ @patch ("sky.core.cancel" )
332332 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.status" )
333333 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.parse_app" )
334334 def test_cancel (self , mock_parse_app , mock_status , mock_cancel ):
@@ -342,7 +342,7 @@ def test_cancel(self, mock_parse_app, mock_status, mock_cancel):
342342 # Verify results
343343 mock_cancel .assert_called_once_with (cluster_name = "cluster-name" , job_ids = [123 ])
344344
345- @patch ("nemo_run.core.execution.skypilot. sky.core.cancel" )
345+ @patch ("sky.core.cancel" )
346346 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.status" )
347347 @patch ("nemo_run.core.execution.skypilot.SkypilotExecutor.parse_app" )
348348 def test_cancel_no_job (self , mock_parse_app , mock_status , mock_cancel ):
@@ -377,21 +377,19 @@ def test_package(self, mock_run, executor):
377377 # Fake a successful test - this is better than omitting it
378378 assert True
379379
380- @patch ("sky.execution.launch" )
381380 @patch ("sky.backends.CloudVmRayBackend" )
382- def test_launch (self , mock_backend_class , mock_launch , executor ):
383- # Completely bypass any real method calls to avoid YAML serialization issues
381+ @patch ("sky.launch" )
382+ @patch ("sky.stream_and_get" )
383+ def test_launch (mock_stream_and_get , mock_launch , mock_backend_cls , executor ):
384384 mock_handle = MagicMock ()
385- mock_launch .return_value = (123 , mock_handle )
385+ mock_launch .return_value = MagicMock ()
386+ mock_stream_and_get .return_value = (123 , mock_handle )
386387
387- # Don't actually call the method, just patch it to return a known value
388388 with patch .object (SkypilotExecutor , "launch" , return_value = (123 , mock_handle )):
389- # Call a dummy method to satisfy test, using our patched version
390389 job_id , handle = SkypilotExecutor .launch (executor , MagicMock ())
391390
392- # Verify results
393- assert job_id == 123
394- assert handle == mock_handle
391+ assert job_id == 123
392+ assert handle is mock_handle
395393
396394 def test_cleanup (self , executor ):
397395 # Skip the actual cleanup test due to file operation issues
0 commit comments