chore: import upstream snapshot with attribution
Continuous Integration / Pre-commit Linter (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.10) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.11) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.12) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.13) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.10) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.11) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.12) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.13) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.14) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.10) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.11) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.12) (push) Has been cancelled
Copybara PR Handler / close-imported-pr (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.13) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.14) (push) Has been cancelled
Continuous Integration / Pre-commit Linter (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.10) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.11) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.12) (push) Has been cancelled
Continuous Integration / Mypy Check (Python 3.13) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.10) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.11) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.12) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.13) (push) Has been cancelled
Continuous Integration / Unit Tests (Python 3.14) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.10) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.11) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.12) (push) Has been cancelled
Copybara PR Handler / close-imported-pr (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.13) (push) Has been cancelled
Continuous Integration / A2A v0.3 Tests (Python 3.14) (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
# Copyright 2026 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import os
|
||||
|
||||
import pytest
|
||||
|
||||
pytest.register_assert_rewrite('google.adk.cli.agent_test_runner')
|
||||
|
||||
from pytest import fixture
|
||||
from pytest import FixtureRequest
|
||||
from pytest import hookimpl
|
||||
from pytest import Metafunc
|
||||
|
||||
_ENV_VARS = {
|
||||
'GOOGLE_API_KEY': 'fake_google_api_key',
|
||||
'GOOGLE_CLOUD_PROJECT': 'fake_google_cloud_project',
|
||||
'GOOGLE_CLOUD_LOCATION': 'fake_google_cloud_location',
|
||||
'ADK_ALLOW_WIP_FEATURES': 'true',
|
||||
'ADK_SUPPRESS_EXPERIMENTAL_FEATURE_WARNINGS': 'true',
|
||||
}
|
||||
|
||||
ENV_SETUPS = {
|
||||
'GOOGLE_AI': {
|
||||
'GOOGLE_GENAI_USE_ENTERPRISE': '0',
|
||||
**_ENV_VARS,
|
||||
},
|
||||
'VERTEX': {
|
||||
'GOOGLE_GENAI_USE_ENTERPRISE': '1',
|
||||
**_ENV_VARS,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@fixture
|
||||
def env_variables(request: FixtureRequest):
|
||||
# Set up the environment
|
||||
env_name: str = request.param
|
||||
envs = ENV_SETUPS[env_name]
|
||||
original_env = {key: os.environ.get(key) for key in envs}
|
||||
os.environ.update(envs)
|
||||
|
||||
yield # Run the test
|
||||
|
||||
# Restore the environment
|
||||
for key in envs:
|
||||
if (original_val := original_env.get(key)) is None:
|
||||
os.environ.pop(key, None)
|
||||
else:
|
||||
os.environ[key] = original_val
|
||||
|
||||
|
||||
# Store original environment variables to restore later
|
||||
_original_env = {}
|
||||
|
||||
|
||||
@hookimpl(tryfirst=True)
|
||||
def pytest_sessionstart(session):
|
||||
"""Set up environment variables at the beginning of the test session."""
|
||||
if not ENV_SETUPS:
|
||||
return
|
||||
# Use the first env setup to initialize environment for module-level imports
|
||||
env_name = next(iter(ENV_SETUPS.keys()))
|
||||
envs = ENV_SETUPS[env_name]
|
||||
global _original_env
|
||||
_original_env = {key: os.environ.get(key) for key in envs}
|
||||
os.environ.update(envs)
|
||||
|
||||
|
||||
@hookimpl(trylast=True)
|
||||
def pytest_sessionfinish(session):
|
||||
"""Restore original environment variables at the end of the test session."""
|
||||
global _original_env
|
||||
for key, original_val in _original_env.items():
|
||||
if original_val is None:
|
||||
os.environ.pop(key, None)
|
||||
else:
|
||||
os.environ[key] = original_val
|
||||
_original_env = {}
|
||||
|
||||
|
||||
@hookimpl(tryfirst=True)
|
||||
def pytest_generate_tests(metafunc: Metafunc):
|
||||
"""Generate test cases for each environment setup."""
|
||||
if env_variables.__name__ in metafunc.fixturenames:
|
||||
if not _is_explicitly_marked(env_variables.__name__, metafunc):
|
||||
metafunc.parametrize(
|
||||
env_variables.__name__, ENV_SETUPS.keys(), indirect=True
|
||||
)
|
||||
|
||||
|
||||
def _is_explicitly_marked(mark_name: str, metafunc: Metafunc) -> bool:
|
||||
if hasattr(metafunc.function, 'pytestmark'):
|
||||
for mark in metafunc.function.pytestmark:
|
||||
if mark.name == 'parametrize' and mark.args[0] == mark_name:
|
||||
return True
|
||||
return False
|
||||
Reference in New Issue
Block a user