@@ -231,6 +231,42 @@ def test_task_queue_no_interactive_picks_is_default_provider(_mock_exp, _mock_ge
231231 assert "p_default" in path , f"expected launch on default provider, got path: { path } "
232232
233233
234+ @patch ("transformerlab_cli.commands.task.api.post_json" , return_value = _mock_resp ({"job_id" : "j1" }))
235+ @patch ("transformerlab_cli.commands.task.fetch_providers" , return_value = SAMPLE_PROVIDERS_MULTI )
236+ @patch ("transformerlab_cli.commands.task.api.get" , return_value = _mock_resp (SAMPLE_TASK ))
237+ @patch ("transformerlab_cli.util.config.require_current_experiment" , return_value = "exp1" )
238+ def test_task_queue_provider_flag_selects_by_name (_mock_exp , _mock_get , _mock_providers , mock_post ):
239+ """`--provider <name>` (case-insensitive) overrides the default and launches on that provider."""
240+ result = runner .invoke (app , ["task" , "queue" , "t1" , "--no-interactive" , "--provider" , "runpod" , "-m" , "x" ])
241+ assert result .exit_code == 0 , result .output
242+ path , body = mock_post .call_args .args
243+ assert "p_other" in path , f"expected launch on named provider, got path: { path } "
244+ assert body ["provider_name" ] == "Runpod"
245+
246+
247+ @patch ("transformerlab_cli.commands.task.api.post_json" , return_value = _mock_resp ({"job_id" : "j1" }))
248+ @patch ("transformerlab_cli.commands.task.fetch_providers" , return_value = SAMPLE_PROVIDERS_MULTI )
249+ @patch ("transformerlab_cli.commands.task.api.get" , return_value = _mock_resp (SAMPLE_TASK ))
250+ @patch ("transformerlab_cli.util.config.require_current_experiment" , return_value = "exp1" )
251+ def test_task_queue_provider_flag_skips_prompt_in_interactive (_mock_exp , _mock_get , _mock_providers , mock_post ):
252+ """`--provider` resolves without prompting even when interactive (no --no-interactive)."""
253+ result = runner .invoke (app , ["task" , "queue" , "t1" , "--provider" , "p_other" , "-m" , "x" ], input = "y\n " )
254+ assert result .exit_code == 0 , result .output
255+ path , _body = mock_post .call_args .args
256+ assert "p_other" in path , f"expected launch on named provider, got path: { path } "
257+
258+
259+ @patch ("transformerlab_cli.commands.task.api.post_json" , return_value = _mock_resp ({"job_id" : "j1" }))
260+ @patch ("transformerlab_cli.commands.task.fetch_providers" , return_value = SAMPLE_PROVIDERS_MULTI )
261+ @patch ("transformerlab_cli.commands.task.api.get" , return_value = _mock_resp (SAMPLE_TASK ))
262+ @patch ("transformerlab_cli.util.config.require_current_experiment" , return_value = "exp1" )
263+ def test_task_queue_provider_flag_unknown_errors (_mock_exp , _mock_get , _mock_providers , mock_post ):
264+ """`--provider <unknown>` exits non-zero and does not launch anything."""
265+ result = runner .invoke (app , ["task" , "queue" , "t1" , "--no-interactive" , "--provider" , "nope" , "-m" , "x" ])
266+ assert result .exit_code != 0
267+ mock_post .assert_not_called ()
268+
269+
234270SAMPLE_TASK_WITH_PARAMS = {
235271 "id" : "t1" ,
236272 "name" : "finetune" ,
0 commit comments