diff --git a/src/buildkite_test_collector/collector/api.py b/src/buildkite_test_collector/collector/api.py index 48539f0..037b459 100644 --- a/src/buildkite_test_collector/collector/api.py +++ b/src/buildkite_test_collector/collector/api.py @@ -12,6 +12,8 @@ class API: """Buildkite Test Engine API client""" + ENV_CI = "CI" + ENV_TOKEN = "BUILDKITE_ANALYTICS_TOKEN" ENV_API_URL = "BUILDKITE_ANALYTICS_API_URL" @@ -19,6 +21,7 @@ class API: def __init__(self, env: Mapping[str, Optional[str]]): """Initialize the API client with environment variables""" + self.ci = env.get(self.ENV_CI) self.token = env.get(self.ENV_TOKEN) self.api_url = env.get(self.ENV_API_URL) or self.DEFAULT_API_URL @@ -26,6 +29,9 @@ def submit(self, payload: Payload, batch_size=100) -> Generator[Optional[Respons """Submit a payload to the API""" response = None + if not self.ci: + yield None + if not self.token: logger.warning("No %s environment variable present", self.ENV_TOKEN) yield None diff --git a/tests/buildkite_test_collector/collector/test_api.py b/tests/buildkite_test_collector/collector/test_api.py index 26b8d45..42470d6 100644 --- a/tests/buildkite_test_collector/collector/test_api.py +++ b/tests/buildkite_test_collector/collector/test_api.py @@ -11,21 +11,36 @@ from buildkite_test_collector.collector.payload import Payload from requests.exceptions import ReadTimeout, ConnectTimeout +def test_submit_local_returns_none(capfd): + env = {"CI": None} + payload = Payload.init(RunEnvBuilder(env).build()) + + api = API(env) + assert next(api.submit(payload)) is None + captured = capfd.readouterr() + + assert not captured.err.startswith("buildkite-test-collector - WARNING -") -def test_submit_with_missing_api_key_environment_variable_returns_none(): +def test_submit_with_missing_api_key_environment_variable_returns_none(capfd): env = {"CI": "true", "BUILDKITE_ANALYTICS_TOKEN": None} payload = Payload.init(RunEnvBuilder(env).build()) api = API(env) assert next(api.submit(payload)) is None + captured = capfd.readouterr() + + assert captured.err.startswith("buildkite-test-collector - WARNING -") -def test_submit_with_invalid_api_key_environment_variable_returns_none(): +def test_submit_with_invalid_api_key_environment_variable_returns_none(capfd): env = {"CI": "true", "BUILDKITE_ANALYTICS_TOKEN": "\n"} payload = Payload.init(RunEnvBuilder(env).build()) api = API(env) assert next(api.submit(payload)) is None + captured = capfd.readouterr() + + assert captured.err.startswith("buildkite-test-collector - WARNING -") @responses.activate @pytest.mark.skipif(sys.version_info < (3, 9), reason="requires python3.9 or higher")