@@ -572,6 +572,43 @@ def test_run_experiment_without_metrics(
572572 prompt_settings = ANY ,
573573 )
574574
575+ @pytest .mark .parametrize ("console_url" , ["http://localtest:8088" , "http://localtest:8088/" ])
576+ @travel (datetime (2012 , 1 , 1 ), tick = False )
577+ @patch .object (galileo .datasets .Datasets , "get" )
578+ @patch .object (galileo .jobs .Jobs , "create" )
579+ @patch .object (galileo .experiments .Experiments , "create" , return_value = experiment_response ())
580+ @patch .object (galileo .experiments .Experiments , "get" , return_value = experiment_response ())
581+ @patch .object (galileo .experiments .Projects , "get_with_env_fallbacks" , return_value = project ())
582+ def test_run_experiment_link_no_double_slash (
583+ self ,
584+ mock_get_project : Mock ,
585+ mock_get_experiment : Mock ,
586+ mock_create_experiment : Mock ,
587+ mock_create_job : Mock ,
588+ mock_get_dataset : Mock ,
589+ console_url : str ,
590+ dataset_content : DatasetContent ,
591+ ) -> None :
592+ # Given: a console_url with or without a trailing slash
593+ mock_create_job .return_value = MagicMock ()
594+ mock_config = MagicMock ()
595+ mock_config .console_url = console_url
596+
597+ # When: running an experiment
598+ with patch ("galileo.experiments.GalileoPythonConfig.get" , return_value = mock_config ):
599+ result = run_experiment (
600+ "test_experiment" ,
601+ project = "awesome-new-project" ,
602+ dataset_id = str (UUID (int = 0 )),
603+ prompt_template = prompt_template (),
604+ )
605+
606+ # Then: the link does not contain double slashes after the protocol
607+ assert result is not None
608+ link = result ["link" ]
609+ assert "//project" not in link
610+ assert f"/project/{ project ().id } /experiments/{ experiment_response ().id } " in link
611+
575612 @travel (datetime (2012 , 1 , 1 ), tick = False )
576613 @patch .object (galileo .datasets .Datasets , "get" )
577614 @patch .object (galileo .jobs .Jobs , "create" )
0 commit comments