From 927e4394c527cf68802822f2df90592235524efc Mon Sep 17 00:00:00 2001 From: Gordon Chan Date: Wed, 28 Jan 2026 16:17:25 +1300 Subject: [PATCH] [TE-4628] Remove CI environment variable requirement for uploads The presence of BUILDKITE_ANALYTICS_TOKEN is sufficient to determine upload intent. Previously, both CI and token were required, which caused issues for users who carefully manage environment variables in isolated container environments. This change removes the CI check from the API.submit() method while preserving the self.ci attribute for potential future use. Now only BUILDKITE_ANALYTICS_TOKEN determines whether uploads happen. Fixes #74 --- src/buildkite_test_collector/collector/api.py | 3 -- .../collector/test_api.py | 31 +++++++------------ 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/src/buildkite_test_collector/collector/api.py b/src/buildkite_test_collector/collector/api.py index 037b459..c3988c7 100644 --- a/src/buildkite_test_collector/collector/api.py +++ b/src/buildkite_test_collector/collector/api.py @@ -29,9 +29,6 @@ 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 42470d6..c2be25b 100644 --- a/tests/buildkite_test_collector/collector/test_api.py +++ b/tests/buildkite_test_collector/collector/test_api.py @@ -11,29 +11,20 @@ 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(capfd): - env = {"CI": "true", "BUILDKITE_ANALYTICS_TOKEN": None} + env = {"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 -") - + assert captured.err.startswith( + "buildkite-test-collector - WARNING - No BUILDKITE_ANALYTICS_TOKEN" + ) def test_submit_with_invalid_api_key_environment_variable_returns_none(capfd): - env = {"CI": "true", "BUILDKITE_ANALYTICS_TOKEN": "\n"} + env = {"BUILDKITE_ANALYTICS_TOKEN": "\n"} payload = Payload.init(RunEnvBuilder(env).build()) api = API(env) @@ -50,7 +41,7 @@ def test_submit_with_payload_timeout_captures_ConnectTimeout_error(capfd, succes "https://analytics-api.buildkite.com/v1/uploads", body=ConnectTimeout("Error")) - env = {"CI": "true", "BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} + env = {"BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} payload = Payload.init(RunEnvBuilder(env).build()) payload = Payload.started(payload) @@ -71,7 +62,7 @@ def test_submit_with_payload_timeout_captures_ReadTimeout_error(capfd, successfu "https://analytics-api.buildkite.com/v1/uploads", body=ReadTimeout("Error")) - env = {"CI": "true", "BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} + env = {"BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} payload = Payload.init(RunEnvBuilder(env).build()) payload = Payload.started(payload) @@ -97,7 +88,7 @@ def test_submit_with_payload_returns_an_api_response(successful_test): 'run_url': 'https://buildkite.com/organizations/alembic/analytics/suites/test/runs/52c5d9f6-a4f2-4a2d-a1e6-993335789c92'}, status=202) - env = {"CI": "true", "BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} + env = {"BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} payload = Payload.init(RunEnvBuilder(env).build()) payload = Payload.started(payload) @@ -122,7 +113,7 @@ def test_submit_with_bad_response(successful_test): json={'error': str(uuid4())}, status=401) - env = {"CI": "true", "BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} + env = {"BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} payload = Payload.init(RunEnvBuilder(env).build()) payload = Payload.started(payload) @@ -156,7 +147,7 @@ def test_submit_with_large_payload_batches_requests(successful_test, failed_test 'run_url': 'https://buildkite.com/organizations/alembic/analytics/suites/test/runs/52c5d9f6-a4f2-4a2d-a1e6-993335789c92'}, status=202) - env = {"CI": "true", "BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} + env = {"BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} payload = Payload.init(RunEnvBuilder(env).build()) payload = Payload.started(payload) @@ -193,7 +184,7 @@ def test_submit_with_batches_and_errors(capfd, successful_test, failed_test): 'run_url': 'https://buildkite.com/organizations/alembic/analytics/suites/test/runs/52c5d9f6-a4f2-4a2d-a1e6-993335789c92'}, status=202) - env = {"CI": "true", "BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} + env = {"BUILDKITE_ANALYTICS_TOKEN": str(uuid4())} payload = Payload.init(RunEnvBuilder(env).build()) payload = Payload.started(payload)