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]

Reply via email to