From 12d254cb72d331bb756c51132afb4e7e47513f91 Mon Sep 17 00:00:00 2001 From: chelsealong Date: Mon, 24 Aug 2026 12:06:43 +0000 Subject: [PATCH] fix(evals): extract bucket name from eval_storage_uri when a path is given create_gcs_eval_managers_from_uri() treated everything after `gs://` as the literal bucket name, so `gs://my-bucket/some/path` produced the invalid bucket name `my-bucket/some/path`, contradicting the docstring which says the bucket will be extracted if a path is provided. Fixes #6881 --- src/google/adk/cli/utils/evals.py | 2 +- tests/unittests/cli/utils/test_evals.py | 29 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/google/adk/cli/utils/evals.py b/src/google/adk/cli/utils/evals.py index 56c20351659..8c6a8ac280a 100644 --- a/src/google/adk/cli/utils/evals.py +++ b/src/google/adk/cli/utils/evals.py @@ -82,7 +82,7 @@ def create_gcs_eval_managers_from_uri( ' google-adk[gcp]\nOr: pip install google-cloud-storage>=2.18' ) from e - gcs_bucket = eval_storage_uri.split('://')[1] + gcs_bucket = eval_storage_uri.split('://')[1].split('/')[0] eval_sets_manager = GcsEvalSetsManager( bucket_name=gcs_bucket, project=os.environ['GOOGLE_CLOUD_PROJECT'] ) diff --git a/tests/unittests/cli/utils/test_evals.py b/tests/unittests/cli/utils/test_evals.py index bfb1481700d..5bbd538cb8b 100644 --- a/tests/unittests/cli/utils/test_evals.py +++ b/tests/unittests/cli/utils/test_evals.py @@ -61,6 +61,35 @@ def test_create_gcs_eval_managers_from_uri_success( ) +@mock.patch.dict(os.environ, {'GOOGLE_CLOUD_PROJECT': 'test-project'}) +@mock.patch( + 'google.adk.evaluation.gcs_eval_set_results_manager.GcsEvalSetResultsManager', + autospec=True, +) +@mock.patch( + 'google.adk.evaluation.gcs_eval_sets_manager.GcsEvalSetsManager', + autospec=True, +) +def test_create_gcs_eval_managers_from_uri_extracts_bucket_from_path( + mock_gcs_eval_sets_manager, mock_gcs_eval_set_results_manager +): + mock_gcs_eval_sets_manager.return_value = mock.MagicMock( + spec=GcsEvalSetsManager + ) + mock_gcs_eval_set_results_manager.return_value = mock.MagicMock( + spec=GcsEvalSetResultsManager + ) + + evals.create_gcs_eval_managers_from_uri('gs://test-bucket/some/path') + + mock_gcs_eval_sets_manager.assert_called_once_with( + bucket_name='test-bucket', project='test-project' + ) + mock_gcs_eval_set_results_manager.assert_called_once_with( + bucket_name='test-bucket', project='test-project' + ) + + def test_create_gcs_eval_managers_from_uri_failure(): with pytest.raises(ValueError): evals.create_gcs_eval_managers_from_uri('unsupported-uri')