This is an automated email from the ASF dual-hosted git repository.
sbp pushed a commit to branch sbp
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-releases.git
The following commit(s) were added to refs/heads/sbp by this push:
new 0f914c2 Add a blocking check result status
0f914c2 is described below
commit 0f914c20ccbdfead25330e328b971532a454fc9c
Author: Sean B. Palmer <[email protected]>
AuthorDate: Fri Feb 6 14:06:44 2026 +0000
Add a blocking check result status
---
atr/db/interaction.py | 4 +++-
atr/models/sql.py | 1 +
atr/storage/readers/checks.py | 3 +++
atr/tasks/checks/__init__.py | 11 +++++++++++
atr/tasks/checks/license.py | 8 +++++++-
5 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/atr/db/interaction.py b/atr/db/interaction.py
index a748f25..104a9ad 100644
--- a/atr/db/interaction.py
+++ b/atr/db/interaction.py
@@ -180,7 +180,9 @@ async def has_failing_checks(release: sql.Release,
revision_number: str, caller_
.where(
sql.CheckResult.release_name == release.name,
sql.CheckResult.revision_number == revision_number,
- sql.CheckResult.status == sql.CheckResultStatus.FAILURE,
+
sql.validate_instrumented_attribute(sql.CheckResult.status).in_(
+ [sql.CheckResultStatus.BLOCKING,
sql.CheckResultStatus.FAILURE]
+ ),
)
)
result = await data.execute(query)
diff --git a/atr/models/sql.py b/atr/models/sql.py
index f2b4272..293c011 100644
--- a/atr/models/sql.py
+++ b/atr/models/sql.py
@@ -65,6 +65,7 @@ class DistributionPlatformValue:
class CheckResultStatus(enum.StrEnum):
+ BLOCKING = "blocking"
EXCEPTION = "exception"
FAILURE = "failure"
SUCCESS = "success"
diff --git a/atr/storage/readers/checks.py b/atr/storage/readers/checks.py
index 5af10c6..80a4f02 100644
--- a/atr/storage/readers/checks.py
+++ b/atr/storage/readers/checks.py
@@ -113,6 +113,9 @@ class GeneralPublic:
if cr.status == sql.CheckResultStatus.SUCCESS:
# Successes are never ignored
return False
+ if cr.status == sql.CheckResultStatus.BLOCKING:
+ # Blocking results are never ignored
+ return False
if cri.release_glob is not None:
if not self.__check_ignore_match_pattern(cri.release_glob,
cr.release_name):
return False
diff --git a/atr/tasks/checks/__init__.py b/atr/tasks/checks/__init__.py
index a83e8f9..2126c21 100644
--- a/atr/tasks/checks/__init__.py
+++ b/atr/tasks/checks/__init__.py
@@ -276,6 +276,17 @@ class Recorder:
def input_hash(self) -> str | None:
return self.__input_hash
+ async def blocking(
+ self, message: str, data: Any, primary_rel_path: str | None = None,
member_rel_path: str | None = None
+ ) -> sql.CheckResult:
+ return await self._add(
+ sql.CheckResultStatus.BLOCKING,
+ message,
+ data,
+ primary_rel_path=primary_rel_path,
+ member_rel_path=member_rel_path,
+ )
+
async def exception(
self, message: str, data: Any, primary_rel_path: str | None = None,
member_rel_path: str | None = None
) -> sql.CheckResult:
diff --git a/atr/tasks/checks/license.py b/atr/tasks/checks/license.py
index d9482f7..2301c39 100644
--- a/atr/tasks/checks/license.py
+++ b/atr/tasks/checks/license.py
@@ -369,9 +369,11 @@ def _headers_check_core_logic(artifact_path: str,
ignore_lines: list[str], exclu
match result.status:
case sql.CheckResultStatus.SUCCESS:
artifact_data.files_with_valid_headers += 1
+ case sql.CheckResultStatus.WARNING:
+ artifact_data.files_with_invalid_headers += 1
case sql.CheckResultStatus.FAILURE:
artifact_data.files_with_invalid_headers += 1
- case sql.CheckResultStatus.WARNING:
+ case sql.CheckResultStatus.BLOCKING:
artifact_data.files_with_invalid_headers += 1
case sql.CheckResultStatus.EXCEPTION:
artifact_data.files_with_invalid_headers += 1
@@ -587,6 +589,8 @@ async def _record_artifact(recorder: checks.Recorder,
result: ArtifactResult) ->
await recorder.warning(result.message, result.data)
case sql.CheckResultStatus.FAILURE:
await recorder.failure(result.message, result.data)
+ case sql.CheckResultStatus.BLOCKING:
+ await recorder.blocking(result.message, result.data)
case sql.CheckResultStatus.EXCEPTION:
await recorder.exception(result.message, result.data)
@@ -599,5 +603,7 @@ async def _record_member(recorder: checks.Recorder, result:
MemberResult) -> Non
await recorder.warning(result.message, result.data,
member_rel_path=result.path)
case sql.CheckResultStatus.FAILURE:
await recorder.failure(result.message, result.data,
member_rel_path=result.path)
+ case sql.CheckResultStatus.BLOCKING:
+ await recorder.blocking(result.message, result.data,
member_rel_path=result.path)
case sql.CheckResultStatus.EXCEPTION:
await recorder.exception(result.message, result.data,
member_rel_path=result.path)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]